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
Opini Hacker News
Komunitas perangkat lunak bebas seharusnya menghentikan dukungan untuk sistem operasi Microsoft, dan membiarkan mereka mem-porting sendiri hal-hal seperti scipy
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
Tampaknya ada bug pada alat build Meson yang menolak kombinasi MSVC+gfortran
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
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
Sulit mengikuti perubahan sistem build Python
Pertanyaan apakah "aarch64" dan "arm64" adalah hal yang sama
Fortran dulu menjadi bahan lelucon di departemen TI, tetapi dalam beberapa tahun terakhir mengalami kebangkitan yang dramatis
Pertanyaan tentang perbedaan "arm64" dan "aarch64" dalam tabel kompiler/arsitektur
Ini benar-benar memperlihatkan dengan gamblang betapa kita bergantung pada bahasa yang dikompilasi menjadi biner.
Bukankah itu berarti masalahnya hanya terselesaikan di Python, tetapi belum terselesaikan di ekosistem lain? Karena itulah mereka menyediakan biner yang sudah dibangun sebelumnya.