- Xeus-Octave, JupyterLite çekirdek ekosistemine katılarak GNU Octave kodunun doğrudan tarayıcıda çalıştırılmasını mümkün kıldı
- GNU Octave, Matlab uyumlu açık kaynaklı bir bilimsel hesaplama dili ve bu proje onu WebAssembly (WASM) ortamında çalışacak şekilde porta etti
- Fortran tabanlı kod ve BLAS/LAPACK bağımlılıkları sorunlarını çözmek için LLVM Flang, Emscripten ve Netlib LAPACK birleştirilmiş özel bir araç zinciri kullanıldı
- LLVM henüz Fortran ortak sembollerini (Common Block) desteklemediği için, geçici bir yama ile sorun şimdilik çözüldü; resmi desteğin gelecekte LLVM 22 ile gelmesi bekleniyor
- Böylece JupyterLite, R'nin ardından Octave desteğine de kavuşurken tarayıcı tabanlı bilimsel programlama ekosisteminin genişlemesi için önemli bir adım atılmış oldu
Xeus-Octave ve WebAssembly portunun genel görünümü
- Xeus-Octave, GNU Octave kodunu tarayıcıda çalıştırabilen bir Jupyter çekirdeği ve emscripten-forge üzerinden paketleniyor
- GNU Octave, Matlab betiklerini doğrudan çalıştırabilen ücretsiz ve açık kaynaklı bir dil
- Bu entegrasyon sayesinde JupyterLite ortamında ayrı bir kurulum olmadan hemen kullanılabiliyor
- Daha önce geliştirilen Xeus-R-Lite ile benzer şekilde, Fortran kodu derlemek için bir araç zinciri (LLVM Flang + Emscripten) kullanılıyor
- Octave'in matematik işlemleri için bağımlı olduğu kütüphanelerde OpenBLAS yerine Netlib LAPACK tercih edilerek derleme uyumluluğu artırıldı
WebAssembly derleme sürecindeki teknik zorluklar
- Fortran ortak blokları (Common Symbol Block) desteği sorunu nedeniyle LLVM'de derleme hatası oluştu
- LLVM v20'nin Wasm streamer bileşeni ortak sembolleri uygulamadığı için kodda değişiklik yapılması gerekti
- QuantStack ekibi ile Serge Guelton iş birliği içinde LLVM'e geçici bir yama uygulanarak bunun weak symbol olarak ele alınması sağlandı
- Resmi desteğin LLVM v22 sürümüne dahil edilmesi planlanıyor ve yamalı LLVM sürümü şu anda Linux için yayımlanmış durumda
- Octave'in kendisinde de WASM hedefine uyum için GUI özelliklerinin devre dışı bırakılması ve Fortran fonksiyon imzalarının birleştirilmesi gibi değişiklikler yapıldı
Xeus-Octave entegrasyonu ve gösterim
- Derleme tamamlandıktan sonra, yalnızca emscripten-forge tarifinin eklenmesiyle JupyterLite'ta Xeus-Octave çalıştırmak mümkün hale geldi
- Xeus-Octave, C++ tabanlı Jupyter çekirdek çatısı Xeus üzerinde kurulu; bu sayede Octave komutları tarayıcıda çalıştırılabiliyor ve görselleştirilebiliyor
Gelecek planları
- Bir sonraki adım olarak Octave paket ekosisteminin conda-forge ve emscripten-forge ile entegre edilmesi planlanıyor
- Octave'in
pkg yardımcı aracı tarayıcı ortamına uygun hale getirilerek conda ortamı içindeki kurulum sürecinin tanımlanması hedefleniyor
- Bununla birlikte tarayıcı tabanlı bilimsel ve matematiksel programlama ortamının daha da güçlenmesi bekleniyor
Başlıca katkı sunanlar ve arka plan
- Baş geliştirici Isabel Paredes, QuantStack bünyesinde çalışıyor ve daha önce R dili ile ROS çerçevesinin WebAssembly portunu üstlenmişti
- Emscripten-forge'a Thorsten Beier liderlik ediyor; Anutosh Bhat, Martin Renou ve diğer katkı sunanlar da projede yer alıyor
- JupyterLite bakımını Jeremy Tuloup, Xeus bakımını ise ağırlıklı olarak Johan Mabille yürütüyor
- Xeus-Octave, Giulio Girardi ve Antoine Prouvost tarafından geliştirildi
1 yorum
Hacker News yorumu