3 poin oleh GN⁺ 2023-11-09 | 3 komentar | Bagikan ke WhatsApp

Mengapa build SciPy untuk Python 3.12 terasa seperti keajaiban

  • Python 3.12 baru saja dirilis.
  • Biasanya, paket-paket utama segera merilis versi yang kompatibel dengan versi Python baru.
  • Rilis build SciPy yang kompatibel dengan Python 3.12 merupakan hasil keberuntungan dari beberapa linimasa yang saling beririsan.

Peran Fortran dan kompiler

  • Fortran adalah bahasa pemrograman penting sejak 1950-an, dan banyak kode ilmiah ditulis dengan Fortran.
  • Berbagai kompiler Fortran pernah ada, tetapi semuanya bersifat proprietari.
  • Kompiler berperan mengubah kode yang ditulis programmer menjadi bentuk yang dapat dijalankan komputer.
  • GCC adalah kompiler yang dapat digunakan secara bebas dan mendukung beragam arsitektur CPU serta sistem operasi.

Python dan masalah performa

  • Python dapat digunakan tanpa kompiler, tetapi lebih lambat dibanding bahasa terkompilasi.
  • Jika performa penting, solusi yang baik adalah menggunakan kode yang sudah dikompilasi lalu membungkusnya dengan antarmuka Python.
  • NumPy dan SciPy menggunakan kode Fortran demi performa, sehingga pengguna membutuhkan kompiler saat memasang paket tersebut.

Masalah dalam packaging Python

  • Packaging Python terus-menerus harus diciptakan ulang karena kompleksitasnya.
  • Mengunduh kode sumber secara langsung menimbulkan masalah seperti kebutuhan mengatur kompiler di sisi pengguna dan waktu build yang lama.
  • Format wheel memperbaiki hal ini dengan mendistribusikan paket beserta library yang dibutuhkannya.

Munculnya conda dan conda-forge

  • conda menawarkan pendekatan yang lebih menyeluruh dengan menyertakan semua yang dibutuhkan untuk packaging.
  • conda-forge adalah channel yang digerakkan komunitas untuk menangani integrasi paket.
  • conda-forge berusaha mendukung semua platform umum dan dijalankan oleh para relawan.

SciPy memilih Meson sebagai alat build

  • SciPy memilih Meson sebagai alat build.
  • Meson menyediakan antarmuka bergaya Python dan lebih tidak rumit dibanding CMake.
  • Meson memiliki filosofi desain yang tidak mengizinkan pengguna non-ahli melakukan hal yang keliru.

Kebangkitan Fortran dan LLVM

  • Minat terhadap Fortran meningkat dalam beberapa tahun terakhir.
  • Pengembangan kompiler Fortran baru berbasis LLVM menjadi semakin aktif.
  • LLVM menyediakan infrastruktur kompiler yang berjalan di berbagai arsitektur dan platform.

Peralihan SciPy ke Meson dan masalah di conda-forge

  • SciPy sudah beralih ke Meson, tetapi masalah muncul karena tidak adanya kompiler Fortran untuk Windows.
  • Untuk migrasi ke Python 3.12, conda-forge harus me-build ulang semua paket terkait.

Arti 'yukatastrophe' dan opini GN⁺

  • Karena test suite SciPy lulus 100%, conda-forge akhirnya dapat membuat build SciPy yang kompatibel dengan Python 3.12.
  • Ini adalah hasil dari bertemunya berbagai upaya dan kebetulan, dan membawa manfaat besar bagi komunitas Python.
  • Opini GN⁺: Artikel ini menunjukkan bagaimana upaya dan kolaborasi komunitas Python dapat menyelesaikan masalah teknis yang kompleks. Keberhasilan merilis build SciPy yang kompatibel dengan Python 3.12 adalah kemajuan penting dalam komputasi ilmiah, sekaligus melambangkan kekuatan perangkat lunak open source dan daya komunitas.

3 komentar

 
GN⁺ 2023-11-09
Opini Hacker News
  • Komunitas perangkat lunak bebas seharusnya menghentikan dukungan untuk sistem operasi Microsoft, dan membiarkan mereka mem-porting sendiri hal-hal seperti scipy

    • Orang yang membutuhkan Linux bisa menemukannya di WSL2
    • Microsoft seharusnya menyertakan kompiler dalam sistem operasinya, seperti yang telah dilakukan semua vendor sistem operasi lain selama 60 tahun
  • Alasan packaging Python rumit adalah karena alat build C/C++/Fortran yang tidak terstandardisasi dan ekosistem yang sangat besar, bukan masalah pada Python itu sendiri

    • Sebagian dari kerumitan ini memang tidak bisa dikurangi
    • Fakta bahwa sistem packaging Python bisa berjalan saja sudah merupakan keajaiban
  • Tampaknya ada bug pada alat build Meson yang menolak kombinasi MSVC+gfortran

    • Tujuan alat build adalah menjalankan perintah yang diminta pengguna, bukan menolak pengguna
  • Banyak orang menyelesaikan masalah dengan menggunakan WSL2, jadi muncul pertanyaan mengapa orang masih ingin membangun versi Windows native

  • Sebagian besar library BLAS terbaik ditulis dalam C, dan muncul pertanyaan seberapa jauh hasil yang bisa dicapai hanya dengan C dan Python

    • Fortran mungkin bagian yang tidak bisa dihindari, tetapi mulai ada perbaikan pada tool Fortran di Windows sehingga ini terdengar positif
  • Pertanyaan polos tentang apakah semantik Fortran terlalu berbeda dari C sehingga tidak bisa diubah ke C lalu dikompilasi dengan kompiler C, dan apakah pemeliharaan dalam C memungkinkan

    • Diduga tidak banyak ahli Fortran yang masih memelihara library lama, padahal pemeliharaan tetap dibutuhkan
  • Sulit mengikuti perubahan sistem build Python

    • Ada rasa ingin tahu tentang angka performa di Windows, tetapi pekerjaan serius kemungkinan besar tetap dijalankan di mesin Linux
  • Pertanyaan apakah "aarch64" dan "arm64" adalah hal yang sama

    • Wikipedia mengalihkan ARM64 ke AArch64
  • Fortran dulu menjadi bahan lelucon di departemen TI, tetapi dalam beberapa tahun terakhir mengalami kebangkitan yang dramatis

    • Alasannya tidak jelas, tetapi bisa dipahami melalui tautan terkait
  • Pertanyaan tentang perbedaan "arm64" dan "aarch64" dalam tabel kompiler/arsitektur

    • Disebutkan bahwa artikel ARM64 di Wikipedia dialihkan ke AArch64
 
ahwjdekf 2023-11-10

Ini benar-benar memperlihatkan dengan gamblang betapa kita bergantung pada bahasa yang dikompilasi menjadi biner.

 
kayws426 2023-11-10

Bukankah itu berarti masalahnya hanya terselesaikan di Python, tetapi belum terselesaikan di ekosistem lain? Karena itulah mereka menyediakan biner yang sudah dibangun sebelumnya.