3 poin oleh GN⁺ 2025-10-21 | 1 komentar | Bagikan ke WhatsApp
  • Xeus-Octave kini resmi bergabung ke ekosistem kernel JupyterLite, sehingga kode GNU Octave bisa dijalankan langsung di browser
  • GNU Octave adalah bahasa komputasi ilmiah open-source yang kompatibel dengan Matlab, dan proyek ini mem-porting-nya agar berjalan di lingkungan WebAssembly (WASM)
  • Untuk mengatasi kode berbasis Fortran dan masalah dependensi BLAS/LAPACK, digunakan toolchain kustom yang menggabungkan LLVM Flang, Emscripten, dan Netlib LAPACK
  • Karena LLVM masih belum mendukung simbol umum Fortran (Common Block), masalah ini sementara diatasi dengan patch sederhana, dengan dukungan resmi direncanakan hadir di LLVM 22
  • Dengan ini, dukungan JupyterLite meluas dari R hingga Octave, menandai langkah penting dalam perluasan ekosistem pemrograman ilmiah berbasis browser

Gambaran umum porting Xeus-Octave dan WebAssembly

  • Xeus-Octave adalah kernel Jupyter yang memungkinkan menjalankan kode GNU Octave di browser, dan dipaketkan melalui emscripten-forge
    • GNU Octave adalah bahasa gratis dan open-source yang dapat menjalankan skrip Matlab secara langsung
    • Integrasi ini memungkinkan penggunaan langsung di lingkungan JupyterLite tanpa instalasi terpisah
  • Dengan pendekatan yang mirip seperti Xeus-R-Lite yang dikembangkan sebelumnya, proyek ini memakai toolchain untuk kompilasi kode Fortran (LLVM Flang + Emscripten)
  • Untuk pustaka dependensi operasi matematika Octave, dipilih Netlib LAPACK alih-alih OpenBLAS demi meningkatkan kompatibilitas build

Tantangan teknis dalam proses build WebAssembly

  • Masalah dukungan blok umum Fortran (Common Symbol Block) menyebabkan error build di LLVM
    • Wasm streamer di LLVM v20 belum mengimplementasikan simbol umum, sehingga diperlukan modifikasi kode
    • Melalui kolaborasi tim QuantStack dan Serge Guelton, LLVM diberi patch sederhana untuk menanganinya sebagai weak symbol
  • Dukungan resmi dijadwalkan masuk dalam rilis LLVM v22, dan versi LLVM yang sudah dipatch saat ini telah dipublikasikan untuk Linux
  • Octave sendiri juga dimodifikasi agar sesuai dengan target WASM, termasuk menonaktifkan fitur GUI dan menyatukan signature fungsi Fortran

Integrasi dan demo Xeus-Octave

  • Setelah build selesai, Xeus-Octave dapat dijalankan di JupyterLite hanya dengan menambahkan recipe emscripten-forge
  • Xeus-Octave dibangun di atas framework kernel Jupyter berbasis C++ Xeus, sehingga perintah Octave bisa dijalankan dan divisualisasikan di browser

Rencana selanjutnya

  • Pada tahap berikutnya, ada rencana untuk mengintegrasikan ekosistem paket Octave ke conda-forge dan emscripten-forge
    • Utilitas pkg milik Octave akan disesuaikan untuk lingkungan browser guna mendefinisikan proses instalasi di dalam lingkungan conda
  • Dengan demikian, lingkungan pemrograman ilmiah dan matematika berbasis browser diperkirakan akan menjadi semakin kuat

Kontributor utama dan latar belakang

  • Pengembang utama Isabel Paredes dari QuantStack sebelumnya menangani porting WebAssembly untuk bahasa R dan framework ROS
  • Emscripten-forge dipimpin oleh Thorsten Beier, dengan partisipasi sejumlah kontributor seperti Anutosh Bhat dan Martin Renou
  • JupyterLite dipelihara dengan Jeremy Tuloup sebagai tokoh utama, sementara Xeus dipelihara dengan fokus pada Johan Mabille
  • Xeus-Octave dikembangkan oleh Giulio Girardi dan Antoine Prouvost

1 komentar

 
GN⁺ 2025-10-21
Pendapat Hacker News
  • Bagi yang baru pertama kali mendengar Octave, Octave adalah tiruan hampir sepenuhnya open-source dari perangkat lunak komersial MATLAB lihat detail di Wikipedia
    • Ungkapan "hampir tiruan" itu agak berlebihan; meski saya menyukai perangkat lunak open-source, untuk pekerjaan yang lebih lanjut rasanya Octave masih belum sepenuhnya menyamai MATLAB, lihat perbedaan Octave dan MATLAB
    • Karena Octave digunakan dalam MOOC machine learning awal dari Prof. Andrew Ng, ini berguna jika Anda mencari materi praktik dan contoh, playlist YouTube
    • Sekitar 15 tahun lalu saat kuliah S1, saya menggunakan Octave alih-alih MATLAB di mata kuliah analisis numerik, dan untuk hal-hal yang kami kerjakan saat itu kompatibilitas bahasanya cocok sepenuhnya
    • Saya bukan pengguna MATLAB, tetapi saya merasa meniru bahasanya saja tidak berarti semua hal tentang MATLAB ikut terbawa; MATLAB adalah software suite berbasis GUI, dengan banyak aplikasi yang bisa digunakan tanpa menulis kode, dan juga menyediakan dukungan vendor resmi. Dulu ada anggapan bahwa open-source itu aneh atau sulit dipercaya, tetapi belakangan bidang ini berubah cepat
    • Scilab juga perangkat lunak lain yang meniru MATLAB, tetapi dibanding Octave, fokusnya lebih pada aspek fungsional daripada kompatibilitas
  • Bagi yang baru pertama kali mendengar JupyterLite, ini pada dasarnya sama seperti Jupyter Notebook/Lab biasa, tetapi berjalan sepenuhnya di browser, tanpa perlu server atau backend, semuanya dieksekusi di sisi klien
    • Jika Python berjalan di atas Web Assembly, sepertinya akan sangat lambat
  • Dengan teknologi yang sama (yaitu "xeus-stack" tautan xeus-stack), ada jauh lebih banyak bahasa/kernel yang bisa dijalankan di jupyterlite, misalnya mendukung c++, python, R, lua, javascript, dan lain-lain. Untuk mencobanya lihat Try Jupyter Lab atau dokumentasi JupyterLite, dan jika ingin membuat deployment sendiri bisa memanfaatkan repo template xeus-lite-demo
  • Octave telah lama dicintai banyak mahasiswa dan berperan sebagai alternatif penting bagi mahasiswa S1; ini contoh bagus bagaimana GNU berkontribusi pada kemajuan umat manusia. Sangat direkomendasikan untuk analisis numerik, mudah pula diperluas dengan GNU-Fortran atau GNU-C, dan hadir dengan berbagai ekstensi. Ini adalah DSL yang sangat cocok untuk komputasi numerik. Scilab juga paket serupa yang layak direkomendasikan, tetapi ekstensibilitasnya lebih sedikit
  • Saya selalu merasa bahwa di tengah berbagai isu yang disebut penulis, daya tarik yang sebenarnya justru tenggelam. Akan lebih baik jika diagram ditempatkan lebih awal, lalu fitur rilis berikutnya dan isu dalam proses pembuatannya lebih ditonjolkan
  • Saya selalu ingin mentranspilasi GNU Octave ke bahasa lain. Octave sudah bisa di-embed sebagai pustaka C, dan Anda bisa merujuk ke cara embed Octave di C/C++ serta dokumentasi resmi program standalone. Ada juga paket OpenCL yang mendukung akselerasi GPU, lihat paket OpenCL, tetapi sayangnya bukan dengan cara memanfaatkan GPU secara implisit; ia menyediakan tipe dan fungsi GPU secara eksplisit, lihat referensi oclArray, yang berarti struktur ini bukan untuk menjalankan kode Octave yang sudah ada begitu saja di GPU. Akan keren kalau akselerasi GPU berbasis OpenCL juga terwujud di browser, tetapi WebCL masih belum benar-benar terealisasi, lihat dokumen terkait WebCL, Khronos WebCL. Saat ini tren bergerak ke arah WebGPU sebagai pengganti WebCL, lihat cara menggunakan WebCL di Chrome, panduan standardisasi gpuweb, dokumentasi web API Chrome.
    • Kalau harus menyampaikan kesan pribadi, sudah jelas industri tetap ngotot pada pendekatan komersial alih-alih solusi terbuka yang jelas karena alasan keuntungan; cukup lihat sejarah banyak inovasi seperti LED biru. Jika AI mengurangi beban pengembang, mungkin jalur yang lebih jelas seperti ini bisa dieksplorasi lagi. Faktanya, tiap inovasi teknologi justru menuntut lebih banyak beban dan kurva belajar yang lebih tinggi dari pengembang, sementara imbalan (gaji awal) secara riil tetap di tempat. Jika pair programming dengan AI makin meluas, saya khawatir hasil akhirnya malah kualitas kode menurun dan codebase yang rumit semakin banyak.
    • Karena itu saya tertarik pada pendekatan alternatif; misalnya abstraksi yang panjang lebar di Python bisa diekspresikan dalam satu baris di Octave. Kalau ingin lebih ringkas lagi, kita harus beralih ke bahasa assembly fungsional seperti LISP, tetapi itu berarti juga melepaskan kenyamanan sintaks bahasa array.
    • Intinya, saya merasa jalur yang langsung menuju AI bergaya J.A.R.V.I.S./Star Trek justru ada pada DSL seperti Octave/MATLAB dan alat logika bisnis seperti spreadsheet era 1980-an, HyperCard, Microsoft Access, dan FileMaker. Jika muncul alat seperti Octave terbuka dengan akselerasi GPU, efisiensi penulisan perangkat lunak bisa meningkat dan mungkin juga berkontribusi langsung pada perkembangan AI