3P by GN⁺ 13일전 | ★ favorite | 댓글 1개
  • Xeus-Octave가 새롭게 JupyterLite 커널 생태계에 합류해, 브라우저에서 바로 GNU Octave 코드 실행이 가능해짐
  • GNU Octave는 Matlab 호환 오픈소스 과학 계산 언어로, 이번 프로젝트는 이를 WebAssembly(WASM) 환경에서 구동하도록 이식함
  • Fortran 기반 코드와 BLAS/LAPACK 의존성 문제를 해결하기 위해 LLVM Flang, Emscripten, Netlib LAPACK을 결합한 커스텀 툴체인을 사용
  • LLVM이 Fortran 공통 심볼(Common Block) 을 아직 지원하지 않아, 약식 패치로 임시 해결 후 향후 LLVM 22에서 정식 지원 예정
  • 이로써 JupyterLite에서 R에 이어 Octave까지 지원이 확장되며, 브라우저 기반 과학 프로그래밍 생태계 확장의 중요한 단계가 마련됨

Xeus-Octave와 WebAssembly 이식 개요

  • Xeus-Octave는 브라우저에서 GNU Octave 코드를 실행할 수 있는 Jupyter 커널로, emscripten-forge를 통해 패키징됨
    • GNU Octave는 Matlab 스크립트를 직접 실행할 수 있는 무료·오픈소스 언어
    • 이번 통합으로 별도의 설치 없이 JupyterLite 환경에서 즉시 사용 가능
  • 이전에 개발된 Xeus-R-Lite와 유사한 방식으로, Fortran 코드 컴파일용 툴체인(LLVM Flang + Emscripten) 을 이용함
  • Octave의 수학 연산용 의존 라이브러리로 OpenBLAS 대신 Netlib LAPACK을 선택, 빌드 호환성 향상

WebAssembly 빌드 과정의 기술적 과제

  • Fortran 공통 블록(Common Symbol Block) 지원 문제로 인해 LLVM에서 빌드 오류 발생
    • LLVM v20의 Wasm 스트리머가 공통 심볼을 구현하지 않아, 코드 수정이 필요했음
    • QuantStack 팀과 Serge Guelton의 협업으로 LLVM을 약식 패치하여 약한 심볼(weak symbol)로 처리
  • 정식 지원은 LLVM v22 릴리스에 포함될 예정이며, 현재 패치된 LLVM 버전은 Linux용으로 공개됨
  • Octave 자체도 WASM 대상에 맞춰 GUI 기능 비활성화Fortran 함수 시그니처 통합 등의 수정이 이루어짐

Xeus-Octave 통합 및 시연

  • 빌드 완료 후, emscripten-forge 레시피 추가만으로 JupyterLite에서 Xeus-Octave 실행 가능
  • Xeus-Octave는 C++ 기반 Jupyter 커널 프레임워크 Xeus 위에 구축되어, Octave 명령을 브라우저 상에서 실행하고 시각화 가능

향후 계획

  • 다음 단계로, Octave 패키지 생태계를 conda-forge 및 emscripten-forge에 통합할 계획
    • Octave의 pkg 유틸리티를 브라우저 환경용으로 조정하여 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가 개발함
Hacker News 의견
  • 혹시 Octave에 대해 처음 듣는 사람이 있다면, Octave는 상용 소프트웨어인 MATLAB의 오픈소스 거의-복제품임 위키백과에서 자세히 보기
    • "거의 복제"라는 표현은 좀 과장임, 오픈소스 소프트웨어를 좋아하지만, 좀 더 진보된 작업을 하려면 Octave가 아직 MATLAB을 완벽하게 따라잡지 못하는 느낌임, Octave와 MATLAB의 차이점 참고
    • Andrew Ng 교수의 초기 머신러닝 MOOC에서 Octave를 사용했기 때문에 실습 자료와 예제를 찾는다면 유용함, 유튜브 플레이리스트
    • 15년 전 학부 때 수치해석 과목에서 MATLAB 대신 Octave를 사용했는데 그 당시 우리가 했던 내용에서는 언어 호환성이 완전하게 잘 맞았음
    • MATLAB 사용자는 아니지만, 언어만 복제한다고 MATLAB이 다 되는 것이 아니라는 걸 느낌, MATLAB은 GUI 기반 소프트웨어 스위트이고, 코딩 없이도 사용할 수 있는 앱들이 많이 포함됨, 공식 벤더 지원까지 제공함, 오픈소스가 예전엔 이상하거나 신뢰 못할 것 같다는 인식이 있었지만 최근 이 분야도 빠르게 변하고 있음
    • Scilab도 MATLAB을 모방한 또 다른 소프트웨어지만, Octave보다는 호환성보다는 기능적인 측면에 더 초점을 맞춤
  • JupyterLite에 대해 처음 듣는 사람을 위해 설명하자면, 이건 기존 Jupyter Notebook/Lab과 같지만, 완전히 브라우저에서만 동작함, 서버나 백엔드 필요 없이 모든 것이 클라이언트 쪽에서 실행됨
    • Python이 Web Assembly 위에서 동작하면 속도가 많이 느릴 것 같음
  • 동일한 기술(즉 "xeus-stack" xeus-stack 링크)을 통해 jupyterlite에서 실행할 수 있는 언어/커널이 훨씬 다양함, 예를 들어 c++, python, R, lua, javascript 등 지원함, 체험해보려면 Try Jupyter Lab 또는 JupyterLite 문서 참고, 자신만의 배포를 하고 싶다면 xeus-lite-demo 템플릿 repo를 활용 가능함
  • Octave는 오랜 시간 수많은 학생들에게 사랑받으며 학부생들에게 필수 대안 역할을 해옴, GNU가 인류 발전에 기여한 좋은 예시임, 수치 해석용으로 매우 추천되고, GNU-Fortran이나 GNU-C로 확장도 쉬움, 여러 확장 기능이 같이 제공됨, 숫자 계산에 특화된 DSL임, 비슷하게 Scilab도 추천할 만한 패키지지만 확장성은 적음
  • 항상 느끼는 건, 저자가 언급하는 다양한 이슈 속에서 진정한 매력이 묻혀 있다는 점임, 다이어그램이 좀 더 앞단에 오고, 다음 릴리즈 기능과 그 제작 과정 이슈가 더 부각되면 더 좋겠다는 생각임
  • GNU Octave를 다른 언어로 트랜스파일하는 걸 늘 원했음, Octave는 이미 C 라이브러리로 임베딩이 가능했고, C/C++에서 Octave 임베딩 방법공식 독립 실행 프로그램 문서 참고 가능함. GPU 가속을 지원하는 OpenCL 패키지도 있는데, OpenCL 패키지 참고, 아쉽게도 GPU를 암묵적으로 활용하는 방식이 아니라 명시적인 GPU 타입과 함수 제공 방식임, oclArray 참조 의미는 기존 Octave 코드를 그대로 GPU에서 돌릴 수 있는 구조가 아니라는 점임. 브라우저에서도 OpenCL 기반 GPU 가속이 구현된다면 멋질 텐데 아직 WebCL은 구현 단계에 미치지 못했고 WebCL 관련 문서, Khronos WebCL 참고, 현재는 WebCL이 WebGPU로 대체되는 추세임, WebCL 크롬 활용법, gpuweb 표준화 안내, 크롬 웹 API 문서 참고함.
    • 느끼는 점을 굳이 말하자면, 업계가 업계가 명백한 오픈솔루션 대신 상용 방식을 고집하는 건 이윤 때문이라는 게 자명함, 블루 LED 등 수많은 혁신 역사만 봐도 알 수 있음. AI 덕분에 개발자 부담이 좀 줄어들면 오히려 이런 명확한 길을 다시 탐구할 수도 있지 않을까 기대함, 사실 기술 혁신마다 개발자에게 더 많은 부담과 더 높은 학습곡선을 요구하는데, 그럼에도 보상(초임)은 실질적으로 제자리임, AI로 페어 프로그래밍이 확산되면 결과적으로 코드 품질이 떨어질 수도 있고 복잡한 코드베이스가 양산될까 우려됨.
    • 그래서 대안이 되는 방법에 끌림, 예를 들어 Python에서 장황하게 쓰는 추상화를 Octave에서는 한 줄로 표현 가능함, 더 간결하게 하려면 LISP같은 함수형 어셈블리 언어로 가야 하는데, 그건 또 배열 언어의 문법적 편의를 포기하는 셈임.
    • 핵심은 J.A.R.V.I.S./스타트렉 스타일 AI로 바로 이어지는 길이 Octave/MATLAB 같은 DSL과 1980년대에 쓰던 Spreadsheets, HyperCard, Microsoft Access, FileMaker 등 비즈니스 논리 도구라는 생각임, GPU 가속되는 오픈 Octave 같은 도구가 등장하면 소프트웨어 작성 효율이 증가하고, AI 발전에도 직접적으로 기여하지 않을까 상상함