Python 3.12 sürümü için SciPy derlemesinin neden mucize gibi olduğu
- Kısa süre önce Python 3.12 sürümü yayımlandı.
- Önemli paketlerin yeni Python sürümüyle uyumlu sürümleri hemen yayımlaması genellikle olağan bir durumdur.
- SciPy'nin Python 3.12 ile uyumlu bir derleme yayımlamış olması, birden fazla zaman çizelgesinin çakışmasıyla ortaya çıkan şanslı bir sonucun ürünü.
Fortran ve derleyicilerin rolü
- Fortran, 1950'lerden beri önemli bir programlama dili ve pek çok bilimsel kod Fortran ile yazıldı.
- Çeşitli Fortran derleyicileri vardı, ancak bunların hepsi özel mülkiyetliydi.
- Derleyiciler, programcıların yazdığı kodu bilgisayarın çalıştırabileceği bir biçime dönüştürür.
- GCC, özgürce kullanılabilen bir derleyicidir ve çeşitli CPU mimarileri ile işletim sistemlerini destekler.
Python ve performans sorunu
- Python derleyici olmadan kullanılabilir, ancak derlenen dillere kıyasla yavaştır.
- Performansın önemli olduğu durumlarda, derlenmiş kodu kullanıp bunu bir Python arayüzüyle sarmak iyi bir çözümdür.
- NumPy ve SciPy performans için Fortran kodu kullanır; bu yüzden kullanıcıların bu paketleri kurarken derleyiciye ihtiyacı olur.
Python paketleme sorunu
- Python paketleme, karmaşıklığı nedeniyle sürekli yeniden icat edilmek zorunda kaldı.
- Kaynak kodunu doğrudan indirmek; kullanıcı tarafında derleyici kurulumu gerektirmesi ve derleme süresinin uzun olması gibi sorunlar yaratır.
wheel formatı, paket için gerekli kütüphaneleri içine alarak dağıtım yapma yöntemiyle bunu iyileştirdi.
conda ve conda-forge'un ortaya çıkışı
- conda, paketleme için gereken her şeyi kapsayan daha bütüncül bir yaklaşım sunar.
- conda-forge, topluluk öncülüğünde paket entegrasyonu yapan bir kanaldır.
- conda-forge, tüm yaygın platformları desteklemeye çalışır ve gönüllüler tarafından yürütülür.
SciPy'nin derleme aracı olarak Meson'ı seçmesi
- SciPy, derleme aracı olarak Meson'ı seçti.
- Meson, Python tarzı bir arayüz sunar ve CMake'e göre daha az karmaşıktır.
- Meson, uzman olmayan kullanıcıların yanlış işlemler yapmasına izin vermemeyi hedefleyen bir tasarım felsefesine sahiptir.
Fortran'ın yeniden yükselişi ve LLVM
- Fortran'a son yıllarda ilgi yeniden arttı.
- LLVM tabanlı yeni Fortran derleyicilerinin geliştirilmesi hız kazandı.
- LLVM, çeşitli mimariler ve platformlarda çalışan bir derleyici altyapısı sunar.
SciPy'nin Meson'a geçişi ve conda-forge'un sorunu
- SciPy Meson'a geçti, ancak Windows için Fortran derleyicisinin yokluğu sorun yarattı.
- conda-forge, Python 3.12 sürümüne geçiş için ilgili tüm paketleri yeniden derlemek zorunda kaldı.
'Yukatastrophe'ün anlamı ve GN⁺ görüşü
- SciPy test paketi %100 başarıyla geçti ve böylece conda-forge üzerinde Python 3.12 ile uyumlu SciPy derlemesi mümkün hale geldi.
- Bu, birçok çaba ve tesadüfün üst üste gelmesinin sonucu ve Python topluluğuna büyük fayda sağlıyor.
- GN⁺ görüşü: Bu yazı, Python topluluğunun çabası ve iş birliğinin karmaşık teknik sorunları nasıl çözebildiğini gösteriyor. SciPy'nin Python 3.12 ile uyumlu bir derlemeyi başarıyla yayımlaması, bilimsel hesaplama alanında önemli bir ilerleme ve açık kaynak yazılımın gücünü ile topluluğun etkisini simgeliyor.
3 yorum
Hacker News görüşleri
Özgür yazılım topluluğu, Microsoft’un işletim sistemine desteği bırakmalı ve
scipygibi şeyleri kendilerinin port etmesine izin vermeliPython paketlemenin karmaşık olmasının nedeni C/C++/Fortran derleme araçlarının standartlaşmamış olması ve devasa ekosistemdir; sorun Python’un kendisi değil
Meson derleme aracının MSVC+gfortran kombinasyonunu reddetmesi bir bug gibi görünüyor
Birçok kişi sorunu WSL2 kullanarak çözüyor ve neden yerel Windows sürümünü derlemeye çalıştıklarını merak ediyor
En iyi BLAS kütüphanelerinin çoğu C ile yazılmış; yalnızca C ve Python ile belli bir düzeyde başarı elde edilip edilemeyeceği merak ediliyor
Fortran’ın anlam bilimlerinin C’den çok farklı olması nedeniyle önce C’ye dönüştürüp sonra C derleyicisiyle derlemenin mümkün olup olmadığı ve C ile bakımının sürdürülebilir olup olmadığına dair saf bir soru
Python’un derleme sistemindeki değişimleri takip etmek zor
aarch64vearm64’ün aynı şey olup olmadığı soruluyorFortran, BT departmanlarında bir şaka konusuydu ama son yıllarda dramatik bir geri dönüş yaşadı
Derleyici/mimari tablosundaki
arm64veaarch64farkı soruluyorİkili derlenen dillere muhtaç hâlde oluşumuzun ne kadar çıplak biçimde ortaya çıktığı bir durum bu.
Python için çözülmüş olabilir ama diğer ekosistemlerde çözülmemiş değil mi? Bu yüzden önceden derlenmiş ikili dosyalar sunuyorlar herhalde.