- Xeus-Octave vừa gia nhập hệ sinh thái kernel JupyterLite, cho phép chạy trực tiếp mã GNU Octave ngay trong trình duyệt
- GNU Octave là ngôn ngữ tính toán khoa học mã nguồn mở tương thích Matlab, và dự án này đã chuyển nó để chạy trong môi trường WebAssembly (WASM)
- Để giải quyết mã nền Fortran và vấn đề phụ thuộc BLAS/LAPACK, nhóm đã sử dụng chuỗi công cụ tùy chỉnh kết hợp LLVM Flang, Emscripten và Netlib LAPACK
- Do LLVM vẫn chưa hỗ trợ Fortran Common Block, nhóm đã tạm thời xử lý bằng bản vá tạm thời, trước khi hỗ trợ chính thức dự kiến có trong LLVM 22
- Nhờ đó, JupyterLite mở rộng hỗ trợ từ R sang cả Octave, đánh dấu một bước quan trọng trong việc mở rộng hệ sinh thái lập trình khoa học trên nền trình duyệt
Tổng quan về Xeus-Octave và bản chuyển sang WebAssembly
- Xeus-Octave là kernel Jupyter cho phép chạy mã GNU Octave trong trình duyệt, được đóng gói thông qua emscripten-forge
- GNU Octave là ngôn ngữ miễn phí và mã nguồn mở có thể chạy trực tiếp các script Matlab
- Với lần tích hợp này, người dùng có thể dùng ngay trong môi trường JupyterLite mà không cần cài đặt riêng
- Tương tự cách làm của Xeus-R-Lite được phát triển trước đó, dự án sử dụng chuỗi công cụ biên dịch mã Fortran (LLVM Flang + Emscripten)
- Với các thư viện phụ thuộc cho tính toán toán học của Octave, nhóm chọn Netlib LAPACK thay vì OpenBLAS để tăng khả năng tương thích khi build
Các thách thức kỹ thuật trong quá trình build WebAssembly
- Lỗi build trong LLVM phát sinh do vấn đề hỗ trợ Fortran Common Block (Common Symbol Block)
- Wasm streamer của LLVM v20 chưa triển khai common symbol, nên cần chỉnh sửa mã
- Nhờ sự hợp tác giữa đội QuantStack và Serge Guelton, LLVM đã được vá tạm thời để xử lý dưới dạng weak symbol
- Hỗ trợ chính thức dự kiến sẽ được đưa vào bản phát hành LLVM v22, và phiên bản LLVM đã vá hiện được công bố cho Linux
- Bản thân Octave cũng được chỉnh sửa để phù hợp với mục tiêu WASM, bao gồm vô hiệu hóa tính năng GUI và hợp nhất chữ ký hàm Fortran
Tích hợp và trình diễn Xeus-Octave
- Sau khi hoàn tất build, chỉ cần thêm recipe emscripten-forge là có thể chạy Xeus-Octave trong JupyterLite
- Có thể xem trình diễn biểu đồ theo thời gian thực trong demo notebook
- Xeus-Octave được xây dựng trên Xeus, framework kernel Jupyter viết bằng C++, cho phép chạy và trực quan hóa các lệnh Octave ngay trong trình duyệt
Kế hoạch tiếp theo
- Bước tiếp theo là tích hợp hệ sinh thái gói của Octave vào conda-forge và emscripten-forge
- Nhóm dự định điều chỉnh tiện ích
pkg của Octave cho môi trường trình duyệt để định nghĩa quy trình cài đặt trong môi trường conda
- Qua đó, môi trường lập trình khoa học và toán học trên nền trình duyệt được kỳ vọng sẽ tiếp tục được tăng cường
Những người đóng góp chính và bối cảnh
- Nhà phát triển chính Isabel Paredes thuộc QuantStack, trước đây từng phụ trách đưa ngôn ngữ R và framework ROS sang WebAssembly
- Emscripten-forge do Thorsten Beier dẫn dắt, với sự tham gia của nhiều cộng tác viên như Anutosh Bhat, Martin Renou và những người khác
- JupyterLite hiện do Jeremy Tuloup bảo trì, còn Xeus do Johan Mabille làm trung tâm bảo trì
- Xeus-Octave được phát triển bởi Giulio Girardi và Antoine Prouvost
1 bình luận
Ý kiến trên Hacker News