3 puan yazan GN⁺ 2025-10-21 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2025-10-21
Hacker News yorumu
  • Octave hakkında ilk kez duyanlar için: Octave, ticari yazılım MATLAB'ın açık kaynaklı, neredeyse birebir bir kopyasıdır. Vikipedi'de ayrıntılar
    • "Neredeyse kopya" ifadesi biraz abartılı; açık kaynak yazılımları sevsem de, daha ileri düzey işler yaparken Octave'ın hâlâ MATLAB'ı tamamen yakalayamadığı hissi var. Octave ve MATLAB farkları
    • Profesör Andrew Ng'nin ilk makine öğrenimi MOOC'larında Octave kullanıldığı için, alıştırma materyali ve örnek arıyorsanız faydalı olabilir. YouTube oynatma listesi
    • 15 yıl önce lisans dönemimde sayısal analiz dersinde MATLAB yerine Octave kullanmıştım; o sırada yaptığımız içerik için dil uyumluluğu tamamen sorunsuzdu.
    • MATLAB kullanıcısı değilim ama sadece dili kopyalamanın MATLAB'ı bütünüyle yeniden üretmeye yetmediğini hissediyorum. MATLAB, GUI tabanlı bir yazılım paketidir; kod yazmadan kullanılabilen birçok uygulama içerir. Resmî üretici desteği de sunar. Eskiden açık kaynak için tuhaf ya da güvenilmez gibi bir algı vardı ama son yıllarda bu alan da hızla değişiyor.
    • Scilab da MATLAB'ı taklit eden başka bir yazılım, ancak Octave'a kıyasla uyumluluktan çok işlevselliğe daha fazla odaklanıyor.
  • JupyterLite'ı ilk kez duyanlar için açıklayayım: Bu, normal Jupyter Notebook/Lab ile aynıdır ama tamamen tarayıcı içinde çalışır. Sunucuya ya da backend'e ihtiyaç duymaz; her şey istemci tarafında çalışır.
    • Python, Web Assembly üzerinde çalışıyorsa epey yavaş olacakmış gibi geliyor.
  • Aynı teknolojiyle (yani "xeus-stack", xeus-stack bağlantısı) JupyterLite içinde çalıştırılabilen dil/çekirdek çeşitliliği çok daha fazladır; örneğin c++, python, R, lua, javascript ve daha fazlasını destekler. Denemek için Try Jupyter Lab veya JupyterLite belgeleri'ne bakabilirsiniz. Kendi dağıtımınızı yapmak isterseniz xeus-lite-demo şablon repo'sunu kullanabilirsiniz.
  • Octave, uzun yıllardır sayısız öğrenci tarafından sevildi ve lisans öğrencileri için vazgeçilmez bir alternatif oldu. GNU'nun insanlığın ilerlemesine katkısına güzel bir örnek. Sayısal analiz için şiddetle tavsiye ederim; GNU-Fortran veya GNU-C ile genişletmesi de kolaydır. Birçok eklenti de birlikte sunulur. Sayısal hesaplamaya odaklı bir DSL'dir. Benzer şekilde Scilab da tavsiye edilebilecek bir paket ama genişletilebilirliği daha düşüktür.
  • Her zaman hissettiğim şey şu: Yazarın değindiği çeşitli meseleler arasında asıl çekicilik geri planda kalıyor. Diyagramların biraz daha öne gelmesi, bir sonraki sürüm özellikleri ve bunların geliştirilme sürecindeki sorunların daha fazla vurgulanması daha iyi olurdu.
  • GNU Octave'ı başka dillere transpile etmeyi hep istemişimdir. Octave zaten C kütüphanesi olarak gömülebiliyordu; Octave'ı C/C++ içine gömme yöntemi ve resmî standalone program belgeleri incelenebilir. GPU hızlandırmasını destekleyen bir OpenCL paketi de var; bkz. OpenCL paketi. Ne yazık ki bu, GPU'yu örtük biçimde kullanan bir yaklaşım değil; açık GPU tipleri ve fonksiyonlar sunuyor. oclArray başvurusu bunun mevcut Octave kodunu olduğu gibi GPU'da çalıştırabileceğiniz bir yapı olmadığı anlamına geliyor. Tarayıcıda da OpenCL tabanlı GPU hızlandırması uygulanabilse harika olurdu ama WebCL henüz uygulama düzeyine ulaşmadı. WebCL ilgili belge, Khronos WebCL bağlantılarına bakılabilir. Şu anda eğilim, WebCL'in yerini WebGPU'nun alması yönünde. Chrome'da WebCL kullanımı, gpuweb standardizasyon notu, Chrome web API belgeleri da ilgili kaynaklardır.
    • Zorla bir yorum ekleyecek olursam, sektörün açık çözümler yerine ticari yöntemlerde ısrar etmesinin nedeninin kâr olduğu çok açık. Bunu mavi LED gibi sayısız inovasyon tarihinden de görebiliriz. Yapay zeka geliştiricilerin yükünü biraz hafifletirse, belki insanlar bu kadar açık bir yolu yeniden keşfetmeye yönelebilir diye umut ediyorum. Aslında her teknolojik yenilik, geliştiricilerden daha fazla yük ve daha dik bir öğrenme eğrisi talep ediyor; buna rağmen ücretler (özellikle başlangıç maaşları) reel olarak yerinde sayıyor. Yapay zekayla eşli programlama yaygınlaşırsa, bunun sonucunda kod kalitesinin düşmesi ve daha karmaşık kod tabanlarının çoğalması konusunda endişeliyim.
    • Bu yüzden alternatif yaklaşımlar ilgimi çekiyor. Örneğin Python'da çok uzun yazılan soyutlamalar, Octave'da tek satırda ifade edilebiliyor. Daha da özlü olmak isterseniz LISP benzeri işlevsel assembly dillerine yönelmeniz gerekir ama bu da dizi dillerinin sözdizimsel rahatlığından vazgeçmek anlamına gelir.
    • Bence asıl nokta şu: J.A.R.V.I.S./Star Trek tarzı yapay zekaya giden en doğrudan yol, Octave/MATLAB gibi DSL'ler ve 1980'lerde kullanılan Spreadsheets, HyperCard, Microsoft Access, FileMaker gibi iş mantığı araçlarından geçiyor. GPU hızlandırmalı açık bir Octave benzeri araç ortaya çıkarsa, yazılım üretim verimliliği artar ve belki yapay zeka ilerlemesine de doğrudan katkı sağlar diye hayal ediyorum.
    • Alternatif yöntemler, DSL'ler, tüm bu söylediklerine gerçekten katılıyorum. İlgili yazı