- Xeus-Octave เข้าร่วมระบบนิเวศเคอร์เนลของ JupyterLite แล้ว ทำให้สามารถ รันโค้ด GNU Octave ได้โดยตรงในเบราว์เซอร์
- GNU Octave เป็น ภาษาโอเพนซอร์สสำหรับการคำนวณเชิงวิทยาศาสตร์ที่เข้ากันได้กับ Matlab และโปรเจ็กต์นี้ได้นำมันไปพอร์ตให้ทำงานบนสภาพแวดล้อม WebAssembly(WASM)
- เพื่อแก้ปัญหาโค้ดที่อิง Fortran และ การพึ่งพา BLAS/LAPACK จึงใช้ทูลเชนแบบคัสตอมที่ผสาน LLVM Flang, Emscripten, Netlib LAPACK
- เนื่องจาก LLVM ยังไม่รองรับ Fortran common symbol (Common Block) จึงแก้ปัญหาเฉพาะหน้าด้วย แพตช์ชั่วคราว และมีแผนรองรับอย่างเป็นทางการใน LLVM 22
- จากนี้ JupyterLite จึงขยายการรองรับจาก R มาสู่ Octave ด้วย ถือเป็นก้าวสำคัญของ การขยายระบบนิเวศการเขียนโปรแกรมเชิงวิทยาศาสตร์บนเบราว์เซอร์
ภาพรวมของ Xeus-Octave และการพอร์ตสู่ WebAssembly
- Xeus-Octave คือ Jupyter kernel ที่สามารถรันโค้ด GNU Octave ในเบราว์เซอร์ได้ โดยแพ็กเกจผ่าน emscripten-forge
- GNU Octave คือ ภาษาเสรีและโอเพนซอร์ส ที่สามารถรันสคริปต์ Matlab ได้โดยตรง
- การรวมครั้งนี้ทำให้ใช้งานได้ทันทีในสภาพแวดล้อม JupyterLite โดยไม่ต้องติดตั้งเพิ่มเติม
- แนวทางนี้คล้ายกับ Xeus-R-Lite ที่พัฒนาก่อนหน้า โดยใช้ ทูลเชนสำหรับคอมไพล์โค้ด Fortran (LLVM Flang + Emscripten)
- สำหรับไลบรารีพึ่งพาด้านการคำนวณทางคณิตศาสตร์ของ Octave เลือกใช้ Netlib LAPACK แทน OpenBLAS เพื่อให้การบิลด์เข้ากันได้ดีขึ้น
ความท้าทายทางเทคนิคในกระบวนการบิลด์ WebAssembly
- เกิดข้อผิดพลาดระหว่างบิลด์ใน LLVM เนื่องจากปัญหาการรองรับ Fortran common block (Common Symbol Block)
- Wasm streamer ของ LLVM v20 ยังไม่ได้อิมพลีเมนต์ common symbol จึงต้องมีการแก้ไขโค้ด
- ทีม QuantStack ร่วมกับ Serge Guelton ทำ แพตช์ชั่วคราว ให้ LLVM จัดการมันเป็น weak symbol
- การรองรับอย่างเป็นทางการมีแผนจะรวมอยู่ใน LLVM v22 release และขณะนี้ LLVM เวอร์ชันที่แพตช์แล้วเปิดเผยสำหรับ Linux
- ตัว Octave เองก็มีการปรับแก้ให้เหมาะกับเป้าหมาย WASM เช่น ปิดใช้งานฟังก์ชัน GUI และ รวม Fortran function signature
การรวม Xeus-Octave และการสาธิต
- หลังบิลด์เสร็จ ก็สามารถ รัน Xeus-Octave ใน JupyterLite ได้เพียงเพิ่ม recipe ของ emscripten-forge
- Xeus-Octave สร้างอยู่บน Xeus ซึ่งเป็นเฟรมเวิร์ก Jupyter kernel ที่พัฒนาด้วย C++ ทำให้สามารถรันคำสั่ง Octave และแสดงผลภาพบนเบราว์เซอร์ได้
แผนถัดไป
- ขั้นต่อไปคือการรวม ระบบนิเวศแพ็กเกจของ Octave เข้ากับ conda-forge และ emscripten-forge
- มีแผนปรับยูทิลิตี
pkg ของ Octave ให้เหมาะกับสภาพแวดล้อมเบราว์เซอร์ เพื่อ กำหนดกระบวนการติดตั้งภายในสภาพแวดล้อม conda
- สิ่งนี้คาดว่าจะช่วยเสริมความแข็งแกร่งให้กับ สภาพแวดล้อมการเขียนโปรแกรมเพื่อวิทยาศาสตร์และคณิตศาสตร์บนเบราว์เซอร์ มากยิ่งขึ้น
ผู้มีส่วนร่วมหลักและเบื้องหลัง
- นักพัฒนาหลัก Isabel Paredes จาก QuantStack เคยรับผิดชอบ การพอร์ตภาษา R และเฟรมเวิร์ก ROS ไปสู่ WebAssembly มาก่อน
- Emscripten-forge ขับเคลื่อนโดย Thorsten Beier และมีผู้ร่วมพัฒนาหลายคน เช่น Anutosh Bhat, Martin Renou เป็นต้น
- JupyterLite ดูแลโดย Jeremy Tuloup และ Xeus ดูแลหลักโดย Johan Mabille
- Xeus-Octave พัฒนาโดย Giulio Girardi และ Antoine Prouvost
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News