본문으로 건너뛰기

© 2026 Molayo

HN요약2026. 05. 23. 11:58

Show HN: RunMat – 격리된(landlocked) Matlab 언어를 위한 V8 기반 Rust 런타임

요약

RunMat은 MATLAB 문법과 핵심 의미론을 지원하는 Rust 기반의 오픈 소스 런타임입니다. V8 엔진을 활용하여 수치 계산에 최적화된 성능을 제공하며, GNU Octave 대비 최대 180배 빠른 속도를 목표로 합니다.

핵심 포인트

  • Rust로 구축된 고성능 MATLAB 호환 런타임
  • GNU Octave 대비 150~180배 빠른 실행 속도
  • OOP, 이벤트/핸들 등 고급 MATLAB 기능 지원
  • 패키지 시스템을 통한 유연한 기능 확장성

요약 (TL;DR)

RunMat은 MATLAB 코드를 빠르게 실행하는 현대적인 오픈 소스 런타임 (runtime)입니다.

  • 우리는 **전체 언어 문법 (full language grammar)**과 핵심 의미론 (core semantics) (배열 (arrays), 인덱싱 (indexing), 제어 흐름 (control flow), 함수 (functions), 셀/구조체 (cells/structs), 객체 지향 프로그래밍 (OOP))을 구현합니다.
  • 핵심은 작고 빠르게 유지되며, 그 외의 모든 기능은 패키지 시스템 (package system) (네이티브 Rust 또는 소스 MATLAB)을 통해 확장됩니다.
  • 핵심 내장 함수들은 표준적 (canonical) 이며 (예: sin, cos, sum, 그리고 fprintf/sprintf와 같은 printf 스타일의 포맷팅), 예상되고 문서화된 동작과 일치합니다. 의미론이 도메인 특화적이거나 모호한 경우, 해당 기능은 패키지에 존재합니다.
  • Rust로 구축되었으며, 계층적 실행 (tiered execution) (인터프리터 우선, 핫 코드 (hot code)를 위한 JIT) 및 수치 계산에 최적화된 **세대별 가비지 컬렉션 (generational GC)**을 제공합니다.
  • 벤치마크 결과, 대표적인 워크로드에서 GNU Octave 대비 150배~180배의 속도 향상을 보여줍니다. 자세한 내용은 아래 성능 (Performance) 섹션을 참조하세요.
  • MATLAB이 처음인가요? 우리의 입문서인 'MATLAB이란 무엇인가? 언어, 런타임, 그리고 RunMat'부터 시작해 보세요.

왜 또 다른 런타임인가?

MATLAB 코드를 작성해 보셨다면, 다음과 같은 트레이드오프 (trade-offs)를 알고 계실 것입니다:

  • MATLAB은 강력하지만 독점적(proprietary)이며 시작하는 데 무겁습니다. 배포는 라이선스에 묶여 있습니다.
  • GNU Octave는 무료이며 많은 코드와 호환되지만, 시작 속도와 핫 패스 (hot-path) 성능이 제한적일 수 있습니다.
  • 새로운 언어로 이동한다는 것은 코드를 다시 작성해야 함을 의미하며, 무엇보다 중요한 것은 **재학습 (retraining)**이 필요하다는 점입니다.

RunMat은 네 번째 길을 목표로 합니다: 여러분이 알고 있는 MATLAB 언어는 유지하되, 더 작은 핵심, 깔끔한 의미론, 그리고 개방형 확장성을 갖춘 현대적인 엔진 위에 올리는 것입니다. 짧은 배경 설명을 원하신다면 이 가이드를 참조하세요.

언어 호환성 한눈에 보기

핵심 언어 의미론에 대한 빠른 개요입니다. 전체 상세 내용은 여기에서 확인하세요.

기능 카테고리RunMatOctave
문법 및 파서 (전체 MATLAB 표면 문법)
배열 및 인덱싱 (end, 콜론, 논리 마스크, N-D 슬라이싱)
다중 반환, varargin / varargout, nargin / nargout
OOP classdef (속성/메서드), 연산자 오버로딩
이벤트/핸들 (addlistener, notify, isvalid, delete)
임포트 우선순위 및 정적 액세스 (Class.*)
메타클래스 연산자 ?Class
문자열 배열 (이중 따옴표)
표준화된 MException 식별자

사용 중인 기능이 핵심(core)에 포함되어 있지 않다면, 패키지(packages)가 의도된 확장 지점입니다.

RunMat이란 무엇인가 (그리고 무엇이 아닌가)

RunMat인 것:

  • MATLAB 문법을 수용하고 핵심 의미론 (semantics)을 빠르게 실행하는 새로운 런타임 (runtime).
  • 안정적인 값/타입/ABI (Value/Type/ABI)를 갖춘, Rust로 작성된 슬림하고 프로덕션 지향적인 엔진.
  • 패키지를 통해 성장하는 시스템: Rust 또는 MATLAB으로 구현된 내장 기능 (built-ins).
  • 안정적인 동작을 보장하는 표준 내장 기능(수학, 배열 연산, 포맷팅/IO)의 예측 가능한 핵심 (predictable core); 더 넓거나 니치한 기능은 패키지로 제공됩니다.

RunMat이 아닌 것:

  • MATLAB의 재포장 제품이 아닙니다. 우리는 MATLAB 코드, 자산 또는 툴박스 (toolboxes)를 제공하지 않습니다.
  • 모든 역사적인 내장 기능을 포함하지 않습니다. 우리는 작고 일관된 핵심을 우선시하며, 패키지가 범용성을 제공하도록 합니다.
  • MathWorks와 관련이 없으며, 모든 워크플로우에 대한 즉각적인 대체제(drop-in replacement)가 아닙니다.

법적 명확성: RunMat은 호환 가능한 언어 런타임을 구현하는 독립적인 프로젝트입니다. “MATLAB”은 MathWorks의 상표이며, 우리는 우리 컴파일러/인터프리터가 수용하는 문법과 의미론을 가진 언어를 설명하기 위해 명칭적으로(nominatively) 사용합니다. 우리는 MathWorks의 승인을 받거나 MathWorks와 연관되어 있지 않습니다.

성능

Apple M2 Max (32GB) 환경에서, 당사의 마이크로 벤치마크 (행렬 연산, 수학 함수, 제어 흐름 루프) 결과, 동일한 기기에서 GNU Octave 대비 상당한 속도 향상을 보여줍니다:

요약 결과

벤치마크 (Benchmark)GNU Octave 평균 (s)RunMat 인터프리터 (interp) 평균 (s)RunMat JIT 평균 (s)Octave 대비 속도 향상
시작 시간 (Startup Time)0.91470.00500.0053172x–183x 더 빠름
...
  • 라이선스 제약 사항(Matlab을 설치하지 않기로 결정했으며, 해당 라이선스 약관에 동의하지 않음)으로 인해 여기서는 MATLAB과 비교하지 않습니다. 우리의 초점은 설계, 즉 슬림한 코어(slim core)와 현대적인 엔진에 있습니다.
  • 벤치마크는 리포지토리의 /benchmarks 디렉토리에 있으며, 재현을 위한 스크립트가 포함되어 있습니다.

수치는 하드웨어, BLAS, 빌드 설정에 따라 달라질 수 있으므로, 실제 워크로드에서 직접 측정해 보시기 바랍니다. 로컬에서 재현하려면 다음을 실행하세요:

cd benchmarks
./run_benchmarks.sh
cat results/benchmark_YYYYMMDD_HHMMSS.yaml

더 넓은 관점의 비교를 원하신다면, MATLAB 대안 가이드에 있는 RunMat vs Octave, Julia, Python 비교를 참조하십시오.

작동 원리 (How it works)

VM 인터프리터 (VM interpreter): 즉시 실행되며, REPL 및 스크립트에 매우 적합합니다.
Turbine JIT: 자주 호출되는 함수(hot functions)는 최적화된 기계어(machine code)로 컴파일됩니다 (Cranelift 백엔드 사용).
슬림한 내장 함수 (Slim builtins): 코어에는 엄선된 세트만 포함되며, 그 외의 모든 것은 패키지를 통해 제공됩니다. 문서는 런타임 메타데이터로부터 생성됩니다.
훌륭한 개발자 경험 (Great developer experience): Jupyter 커널로 구축되었으며, 흐름 민감형 추론(flow-sensitive inference)을 통해 뛰어난 자동 완성 및 타입 힌트(type hints)를 제공합니다.
이식성 (Portable): 단일 바이너리로 제공되며 의존성이 없고, Linux/macOS/Windows 및 임베디드 기기에서 실행됩니다.
GPU 최적화 (GPU-optimized): 내장되어 있으며, 자동 퓨전(automatic fusion) 및 데이터 레지던시(data residency)를 지원하는 구성 및 교체 가능한 GPU 플래너(planner)를 갖추고 있습니다. wgpu 백엔드를 통해 CPU, Metal (macOS), DirectX 12 (Windows), Vulkan (Linux) 전반에서 코드 수정 없이 GPU에서 코드를 실행할 수 있습니다. 추가적인 백엔드(CUDA, ROCm, OpenCL)가 계획되어 있습니다.

더 자세한 내용은 '작동 원리(How It Works)' 및 '아키텍처 및 내부 구조(Architecture & Internals)' 섹션을 참조하십시오.

패키지 (Packages): 런타임 확장하기

기능을 추가하는 두 가지 방법:

네이티브 (Rust) 패키지: #[runtime_builtin]으로 내장 함수를 구현하여 강력한 타이핑(strong typing)과 속도를 얻고, 동적 라이브러리(dynamic library) 형태로 배포합니다.
소스 (MATLAB) 패키지: .m 파일을 배포하며, RunMat이 이를 인터프리터로 실행하거나 컴파일합니다.

문서(Documentation)는 런타임 메타데이터로부터 생성되므로, 추가하는 모든 항목이 참조 문서에 자동으로 나타납니다.

현재 실행 가능한 기능

  • 핵심 언어: 배열(arrays), 슬라이싱(end, 콜론, 논리 마스크), 함수 및 다중 반환(multiple returns), 셀/구조체(cells/structs), 객체 지향 프로그래밍(OOP, 속성/메서드를 포함한 classdef), try/catch, global, persistent, 함수 핸들(function handles), 명령 형식(command-form).
  • 런타임 내 광범위한 내장 함수 지원 (sin/cos/tan과 같은 표준 수학 함수, sum/min/max와 같은 축소(reductions) 함수, fprintf/sprintf를 통한 기본적인 문자열/포매팅, zeros/ones/eye와 같은 배열 생성, 선형 대수, FFT/신호 처리, 통계, I/O), 패키지를 통해 추가적인 함수 사용 가능.

만약 작성한 코드가 많은 수의 니치(niche)한 내장 함수에 의존한다면, 해당 부분들을 패키지로 옮기는 것을 권장합니다. 문서는 차이점과 마이그레이션(migration) 참고 사항이 있는 경우 이를 명시하고 있습니다.

편집자 주 (2026년 4월): 이 출시 게시물 이후 많은 것이 변경되었습니다. 2025년 8월 이후 출시된 기능의 요약은 다음과 같습니다:

플로팅(Plotting)은 더 이상 작업 진행 중(work in progress) 단계가 아닙니다. RunMat은 이제 surf, contour, bar, pie, quiver, stem, area, errorbar를 포함하여 17개 이상의 GPU 가속 플롯 유형을 지원합니다.

, 그리고 그래픽 핸들(graphics handles), 스타일링(styling), 피규어 내보내기(figure export) 기능을 갖춘 완전한 3D 변형(variants)을 지원합니다. 실행 가능한 예제는 플로팅 가이드(plotting guide)를, 참조를 위해서는 플로팅 문서(plotting docs)를 확인하세요.

브라우저 샌드박스(Browser sandbox)— WebAssembly (Wasm) 및 WebGPU를 통해 완전히 클라이언트 측에서 실행되는 완전한 브라우저 기반 IDE를 이제 runmat.com/sandbox에서 사용할 수 있습니다. 브라우저 가이드를 참조하세요.

LSP 및 IDE 지원— 자체 개발한 언어 서버(Language Server)와 VS Code / Cursor 확장 프로그램을 통해 진단(diagnostics), 완성(completions), 호버(hover), 문서 심볼(document symbols) 기능을 제공합니다.

~330개 이상의 내장 함수(builtins)— 배열(arrays), 선형 대수(linear algebra), FFT/신호(signal), 통계(statistics), 문자열(strings), I/O, 플로팅(plotting)을 아우르는 내장 함수들이 이제 함수 참조(function reference)에 문서화되었습니다.

GPU 퓨전(GPU fusion)— 7가지 퓨전 패턴(fusion patterns)을 다루는 전용 문서가 추가되었습니다: 요소별 체인(elementwise chains), 리덕션(reductions), 행렬 곱 에필로그(matmul epilogues), 공분산(covariance), 파워-스텝 정규화(power-step normalization), 설명된 분산(explained variance), 이미지 정규화(image normalization).

협업 및 팀— RunMat App을 통해 조직(Organizations), 프로젝트 역할(project roles), 실시간 동기화(real-time sync), API 키를 사용할 수 있습니다.

버전 관리(Versioning)— 파일별 자동 버전 관리(per-file versioning), 프로젝트 스냅샷(project snapshots), git 내보내기(git export) 기능이 내장되어 있습니다.

데스크톱 앱— 네이티브 데스크톱 애플리케이션이 활발히 개발 중입니다.

런타임은 현재

v0.3.2 버전입니다. 아래의 원문 내용은 출시 당시의 상태를 반영하고 있으며, 핵심 아키텍처(architecture) 및 설계 철학(design philosophy) 측면에서는 여전히 유효합니다.

MATLAB, Octave, RunMat — 빠른 비교

MATLAB: 독점적(proprietary)이며, 방대한 표준 라이브러리(standard library)를 갖추고 있지만, 무거운 시작 시간(startup)과 라이선스 기반의 배포(license-gated deployment)가 특징입니다. 기능이 풍부하지만 폐쇄 소스(closed source)입니다.

GNU Octave: 무료이며, MATLAB 스크립트와 부분적인 호환성을 가진 커뮤니티 주도 프로젝트입니다. 광범위한 내장 기능(builtin surface)과 클래식한 인터프리터(interpreter) 아키텍처를 보유하고 있으나, 시작 시간과 핫 루프(hot-loop) 성능이 저하될 수 있습니다. Octave는 완전한 애플리케이션이며, 그 설계는 폭과 호환성에 최적화되어 있습니다.

RunMat: 완전한 언어 문법(language grammar)과 핵심 의미론(core semantics)을 갖춘 오픈 소스 기반의 현대적인 엔진입니다. 우리는 의도적으로 핵심(core)을 작고 빠르게(표준 내장 기능만 포함) 유지하고, 기능의 폭을 패키지(packages)로 이동시켰습니다. 이를 통해 패키지 시스템을 통해 넓은 라이브러리 범위를 지원하면서도, 성능과 예측 가능성(predictability)을 위해 엔진을 공격적으로 최적화할 수 있습니다.

체험 및 참여하기

  • 문서 읽기: 시작하기(Getting Started), 설계 철학(Design Philosophy), 그리고 작동 원리(How It Works).
  • 내장 기능 참조(builtin reference) 살펴보기; 런타임(runtime)에서 생성됩니다.
  • 저장소(repo) 스타(Star)를 누르고 이슈(issue) 생성하기: https://github.com/runmat-org/runmat
  • 기여에 관심이 있나요? 패키지(Packages)가 시작하기 가장 좋은 곳입니다 (Rust 또는 MATLAB 소스).

RunMat은 MathWorks, Inc.와 관련이 없습니다. “MATLAB”은 MathWorks, Inc.의 등록 상표입니다. 당사는 당사의 독립적인 런타임이 수용하는 문법과 의미론을 가진 언어를 설명하기 위해 명칭상으로만 이를 참조합니다.

RunMat은 Dystr에 의해 개발된 무료 오픈 소스 커뮤니티 프로젝트입니다.

관련 포스트

500 Hz square wave and its FFT showing odd harmonics at 500, 1500, 2500, 3500 Hz, rendered in the RunMat browser sandbox

RunMat에서의 MATLAB FFT: GPU 가속 플로팅을 이용한 주파수 분석

RunMat으로 온라인에서 MATLAB FFT를 학습하세요. 단측 스펙트럼(single-sided spectra), 윈도잉(windowing), 브라우저 내 2D FFT를 포함하여 MATLAB 호환 구문으로 FFT 스펙트럼을 계산하고 플로팅할 수 있습니다.

How to use GPU in MATLAB without CUDA: Apple Silicon, NVIDIA, AMD, and Intel

CUDA 없이 MATLAB에서 GPU를 사용하는 방법: Apple Silicon, NVIDIA, AMD 및 Intel

모든 하드웨어에서 MATLAB의 GPU 가속을 사용하는 실용적인 가이드입니다. Parallel Computing Toolbox를 사용하는 NVIDIA에서의 작동 방식, Apple Silicon, AMD 또는 Intel에서 작동하지 않는 이유, 그리고 CUDA 없이 GPU 가속을 얻는 방법을 다룹니다.

RunMat plotting guide showing 2D and 3D plot examples

RunMat에서의 MATLAB 플로팅: 2D, 3D 및 GPU 가속 피겨(Figures)를 위한 완전 가이드

선 그래프(line plots), 산점도(scatter), 막대 차트(bar charts), 3D 곡면(3D surfaces), 등고선 지도(contour maps), 서브플롯(subplots), 애니메이션(animations), 그리고 GPU 가속 렌더링(GPU-accelerated rendering)을 포함하여 실행 가능한 20개 이상의 예제를 다루는 RunMat 플로팅 실습 가이드입니다. 모든 예제는 브라우저에서 실행됩니다.

RunMat, Rust 내부 구조(internals), 그리고 성능 팁에 대한 월간 업데이트를 제공합니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 HN OpenAI Codex의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0