Woxi: Rust로 구현한 오픈소스 Mathematica, 과연 Wolfram을 대체할 수 있을까?


엔지니어링 커뮤니티에는 오래된 밈(Meme)이 하나 있습니다. “모든 것은 언젠가 Rust로 다시 쓰여질 것이다(Rewrite It In Rust).” 이번 타겟은 꽤나 거물급입니다. 바로 수십 년간 수식 처리 시스템(CAS)의 제왕으로 군림해 온 Wolfram Mathematica 입니다.

최근 Hacker News에서 뜨거운 감자로 떠오른 Woxi 라는 프로젝트를 깊게 파봤습니다. Rust로 작성된 Wolfram Language 인터프리터인데, 단순히 “또 하나의 토이 프로젝트”로 치부하기엔 꽤 흥미로운 지점들과 논쟁거리가 있습니다. 15년 차 엔지니어의 시각으로 이 프로젝트의 기술적 가치와 한계를 분석해 봅니다.

왜 굳이 Mathematica를 다시 만드나?

Mathematica는 훌륭합니다. 대학원 시절, 그 우아한 심볼릭 연산 능력과 노트북 인터페이스에 감탄했던 기억이 납니다. 하지만 현업에서 이를 사용하려 할 때 마주하는 장벽은 명확합니다.

  1. 살인적인 라이선스 비용: 개인이나 스타트업이 감당하기엔 부담스럽습니다.
  2. 무거운 런타임: 간단한 스크립트 하나 돌리는데 커널 초기화와 라이선스 체크로 수 초를 잡아먹습니다.
  3. 폐쇄성: 오픈소스 생태계와의 통합이 매끄럽지 않습니다.

Woxi는 바로 이 지점을 파고듭니다. Rust의 성능을 등에 업고, 라이선스 체크 없는 Instant Startup 을 무기로 내세웁니다.

기술적 딥다이브: Woxi가 보여주는 가능성

1. Zero-Overhead 실행 속도

가장 인상적인 건 역시 속도입니다. 기존 wolframscript는 실행 시마다 무거운 커널을 띄우고 라이선스 서버와 통신하느라 딜레이가 발생합니다. 반면 Woxi는 Rust 바이너리로 컴파일되어 즉시 실행됩니다.

# Woxi: 즉시 결과 리턴
woxi eval "1 + 2"

# WolframScript: 커널 로딩 대기 발생
wolframscript -code "1 + 2"

CI/CD 파이프라인에서 간단한 수치 해석이나 데이터 전처리를 Wolfram 문법으로 처리하고 싶었던 엔지니어들에게는 꽤 매력적인 옵션입니다.

2. WASM과 JupyterLite

Rust로 작성되었다는 것은 곧 WebAssembly(WASM) 포팅이 용이하다는 뜻입니다. Woxi는 이를 활용해 브라우저에서 별도의 백엔드 서버 없이 돌아가는 JupyterLite 인스턴스를 제공합니다.

이건 꽤 큰 의미가 있습니다. 클라이언트 사이드에서 Wolfram Language를 돌릴 수 있다는 건, 교육용 도구나 인터랙티브한 과학 블로그를 만들 때 서버 비용을 0으로 만들 수 있다는 이야기니까요.

논쟁의 중심: “AI가 짠 코드를 믿을 수 있는가?”

Hacker News 스레드에서 가장 불타오른 주제는 기능이 아니라 개발 방법론 이었습니다. 메인테이너는 이 프로젝트가 AI 에이전트의 도움을 받아 작성되었다고 밝혔습니다.

“Such a massive undertaking would be almost impossible without AI agents…”

여기에 대해 커뮤니티의 반응은 극명하게 갈렸습니다.

  • 비판적 시각: “AI가 짠 코드는 ‘Vibe Coding(느낌적인 코딩)‘일 뿐이다. 장기적인 유지보수성과 코드 퀄리티를 담보할 수 없다.”
  • 옹호적 시각: “이미 5,000개 이상의 테스트 케이스가 있다. 테스트가 통과한다면 AI가 짰든 사람이 짰든 무슨 상관인가?”

개인적으로는 “Trust, but Verify” 입장입니다. Wolfram Language의 핵심은 단순한 파싱이 아니라 복잡한 Term Rewriting(항 다시 쓰기) 시스템과 심볼릭 연산의 정확성입니다. AI가 보일러플레이트 코드를 짜는 건 훌륭하지만, 미묘한 수학적 엣지 케이스(Edge Case)들을 제대로 처리했는지는 5,000개의 테스트만으로는 확신하기 어렵습니다. 수치해석 라이브러리에서 0.00000001의 오차는 치명적일 수 있으니까요.

현실적인 한계: Polish와 생태계

Mathematica가 강력한 이유는 언어 그 자체보다 수십 년간 쌓아올린 검증된 알고리즘 라이브러리Polish(마감 완성도) 에 있습니다.

  • 심볼릭 적분/미분: Rubi 같은 규칙 기반 적분 시스템을 완벽하게 포팅하는 것은 엄청난 난이도입니다.
  • 시각화: Mathematica의 Plot 함수들이 보여주는 미려한 그래프를 Rust 그래픽 라이브러리로 똑같이 구현하는 건 또 다른 차원의 문제입니다.

HN의 한 유저가 지적했듯, 오픈소스 진영의 Octave가 MATLAB을 완전히 대체하지 못한 것과 비슷한 맥락입니다. “돌아가는 것”과 “믿고 쓸 수 있는 것” 사이에는 큰 간극이 존재합니다.

총평: 그래서 쓸 만한가?

아직 프로덕션 환경에서 복잡한 수식 계산용으로 쓰기엔 시기상조입니다. 하지만 다음과 같은 용도라면 충분히 찍먹해볼 가치가 있습니다.

  1. 가벼운 스크립팅: Wolfram 문법에 익숙하지만 무거운 설치 과정이 싫은 경우.
  2. 임베디드/웹: WASM을 통해 웹페이지에서 간단한 수식을 처리해야 하는 경우.
  3. 학습용: Wolfram Language의 문법 구조와 Term Rewriting 방식을 Rust로 어떻게 구현했는지 뜯어보고 싶은 경우.

Woxi는 Rust 생태계가 얼마나 성숙했는지, 그리고 AI 코딩 어시스턴트가 1인 개발자의 생산성을 어디까지 끌어올릴 수 있는지 보여주는 흥미로운 사례입니다. 비록 Stephen Wolfram이 이 프로젝트를 보고 당장 위협을 느끼진 않겠지만, 오픈소스 커뮤니티 입장에서는 환영할 만한 시도임이 분명합니다.

참고 링크: