# GNU Octave가 JupyterLite와 만남: 언제 어디서나 컴퓨팅 가능함

> Clean Markdown view of GeekNews topic #23791. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=23791](https://news.hada.io/topic?id=23791)
- GeekNews Markdown: [https://news.hada.io/topic/23791.md](https://news.hada.io/topic/23791.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-10-21T02:41:09+09:00
- Updated: 2025-10-21T02:41:09+09:00
- Original source: [blog.jupyter.org](https://blog.jupyter.org/gnu-octave-meets-jupyterlite-compute-anywhere-anytime-8b033afbbcdc)
- Points: 3
- Comments: 1

## Topic Body

- **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 실행** 가능  
  - [데모 노트북](https://jupyter-xeus.github.io/xeus-octave/lab/?path=xeus-octave-wasm.ipynb)에서 실시간 플롯 시연 가능  
- **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가 개발함

## Comments



### Comment 45200

- Author: neo
- Created: 2025-10-21T02:41:09+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=45635069) 
* 혹시 Octave에 대해 처음 듣는 사람이 있다면, Octave는 상용 소프트웨어인 MATLAB의 오픈소스 거의-복제품임 [위키백과에서 자세히 보기](https://en.wikipedia.org/wiki/GNU_Octave)
  * "거의 복제"라는 표현은 좀 과장임, 오픈소스 소프트웨어를 좋아하지만, 좀 더 진보된 작업을 하려면 Octave가 아직 MATLAB을 완벽하게 따라잡지 못하는 느낌임, [Octave와 MATLAB의 차이점 참고](https://stackoverflow.com/questions/12084246/differences-between-octave-and-matlab)
  * Andrew Ng 교수의 초기 머신러닝 MOOC에서 Octave를 사용했기 때문에 실습 자료와 예제를 찾는다면 유용함, [유튜브 플레이리스트](https://www.youtube.com/playlist?list=PLiPvV5TNogxIS4bHQVW4pMkj4CHA8COdX)
  * 15년 전 학부 때 수치해석 과목에서 MATLAB 대신 Octave를 사용했는데 그 당시 우리가 했던 내용에서는 언어 호환성이 완전하게 잘 맞았음
  * MATLAB 사용자는 아니지만, 언어만 복제한다고 MATLAB이 다 되는 것이 아니라는 걸 느낌, MATLAB은 GUI 기반 소프트웨어 스위트이고, 코딩 없이도 사용할 수 있는 앱들이 많이 포함됨, 공식 벤더 지원까지 제공함, 오픈소스가 예전엔 이상하거나 신뢰 못할 것 같다는 인식이 있었지만 최근 이 분야도 빠르게 변하고 있음
  * Scilab도 MATLAB을 모방한 또 다른 소프트웨어지만, Octave보다는 호환성보다는 기능적인 측면에 더 초점을 맞춤
* JupyterLite에 대해 처음 듣는 사람을 위해 설명하자면, 이건 기존 Jupyter Notebook/Lab과 같지만, 완전히 브라우저에서만 동작함, 서버나 백엔드 필요 없이 모든 것이 클라이언트 쪽에서 실행됨
  * Python이 Web Assembly 위에서 동작하면 속도가 많이 느릴 것 같음
* 동일한 기술(즉 "xeus-stack" [xeus-stack 링크](https://github.com/jupyter-xeus/xeus))을 통해 jupyterlite에서 실행할 수 있는 언어/커널이 훨씬 다양함, 예를 들어 c++, python, R, lua, javascript 등 지원함, 체험해보려면 [Try Jupyter Lab](https://jupyter.org/try-jupyter/lab/) 또는 [JupyterLite 문서](https://jupyterlite-xeus.readthedocs.io/en/stable/lite/lab/index.html) 참고, 자신만의 배포를 하고 싶다면 [xeus-lite-demo 템플릿 repo](https://github.com/jupyterlite/xeus-lite-demo)를 활용 가능함
* Octave는 오랜 시간 수많은 학생들에게 사랑받으며 학부생들에게 필수 대안 역할을 해옴, GNU가 인류 발전에 기여한 좋은 예시임, 수치 해석용으로 매우 추천되고, GNU-Fortran이나 GNU-C로 확장도 쉬움, 여러 확장 기능이 같이 제공됨, 숫자 계산에 특화된 DSL임, 비슷하게 Scilab도 추천할 만한 패키지지만 확장성은 적음
* 항상 느끼는 건, 저자가 언급하는 다양한 이슈 속에서 진정한 매력이 묻혀 있다는 점임, 다이어그램이 좀 더 앞단에 오고, 다음 릴리즈 기능과 그 제작 과정 이슈가 더 부각되면 더 좋겠다는 생각임
* GNU Octave를 다른 언어로 트랜스파일하는 걸 늘 원했음, Octave는 이미 C 라이브러리로 임베딩이 가능했고, [C/C++에서 Octave 임베딩 방법](https://stackoverflow.com/questions/9246444/how-to-embed-the-gnu-octave-in-c-c-program)과 [공식 독립 실행 프로그램 문서](https://docs.octave.org/latest/Standalone-Programs.html) 참고 가능함. GPU 가속을 지원하는 OpenCL 패키지도 있는데, [OpenCL 패키지](https://gnu-octave.github.io/packages/ocl/) 참고, 아쉽게도 GPU를 암묵적으로 활용하는 방식이 아니라 명시적인 GPU 타입과 함수 제공 방식임, [oclArray 참조](https://octave.sourceforge.io/ocl/function/oclArray.html) 의미는 기존 Octave 코드를 그대로 GPU에서 돌릴 수 있는 구조가 아니라는 점임. 브라우저에서도 OpenCL 기반 GPU 가속이 구현된다면 멋질 텐데 아직 WebCL은 구현 단계에 미치지 못했고 [WebCL 관련 문서](https://en.wikipedia.org/wiki/WebCL), [Khronos WebCL](https://www.khronos.org/webcl/) 참고, 현재는 WebCL이 WebGPU로 대체되는 추세임, [WebCL 크롬 활용법](https://stackoverflow.com/questions/11532281/how-to-use-webcl-in-chrome), [gpuweb 표준화 안내](https://gpuweb.github.io/gpuweb/), [크롬 웹 API 문서](https://developer.chrome.com/docs/capabilities/web-apis/gpu-compute) 참고함.  
  - 느끼는 점을 굳이 말하자면, 업계가 업계가 명백한 오픈솔루션 대신 상용 방식을 고집하는 건 이윤 때문이라는 게 자명함, 블루 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 발전에도 직접적으로 기여하지 않을까 상상함
  * 대안적 방법, DSL, 이 모든 이야기 정말 공감함, [관련 글 참고](https://alexalejandre.com/languages/end-of-programming-langs/)
