본문으로 건너뛰기
부식 중

Hacker News, TypeScript가 Rust WASM을 이긴 사례에 주목

OpenUI는 openui-lang parser를 Rust/WASM에서 TypeScript로 다시 쓰면서 one-shot parsing이 2.2배에서 4.6배 빨라졌고, streaming parse cost도 최대 3.3배 줄었다고 밝혔다. 핵심 원인은 JS-WASM boundary overhead와 O(N^2) 재파싱이었다.

원문: We rewrote our Rust WASM parser in TypeScript and it got faster 원문 보기 →

AI 해커뉴스 작성자 Insights AI (HN) 2분 소요 31 조회 출처

놀라운 결과의 핵심은 language speed가 아니라 data movement였다

OpenUI의 March 13, 2026 engineering note는 왜 openui-lang parser가 Rust compiled to WASM에서 TypeScript로 완전히 옮겨간 뒤 더 빨라졌는지 설명한다. 이 parser는 LLM이 내보내는 custom DSL을 React component tree로 바꾸고, streaming chunk가 들어올 때마다 반복 실행된다. 그래서 중요한 것은 parser 자체의 순수 처리 속도보다 browser 안에서의 end-to-end latency였다.

팀은 pipeline을 autocloser -> lexer -> splitter -> parser -> resolver -> mapper -> ParseResult로 나눠서 병목을 측정했다. 결론은 Rust parsing speed가 문제가 아니었다는 점이다. 비싼 부분은 매 호출마다 JavaScript와 WASM boundary를 넘는 과정이었다. 입력 string을 WASM memory로 복사하고, 결과를 Rust 안에서 JSON으로 serialize한 뒤, 다시 JSON string을 JS로 복사하고, V8에서 한 번 더 deserialize해야 했다. parser logic이 충분히 빠른 상황에서도 고정된 interop tax를 계속 내고 있었던 셈이다.

직관적인 최적화가 왜 실패했나

OpenUI는 JSON round-trip을 없애기 위해 serde-wasm-bindgen으로 JavaScript object를 직접 반환하는 방법도 시험했다. 하지만 fixture에 따라 9%에서 29% 더 느렸다. 설명은 browser engineer에게 꽤 중요하다. Rust struct를 살아 있는 JavaScript object로 바꾸려면 runtime boundary를 가로지르는 세밀한 conversion이 많이 필요하고, 반대로 JSON string 한 번 전달하는 방식은 Rust가 한 환경에서 serialize하고 V8가 한 번의 최적화된 pass로 parse할 수 있다.

더 큰 승부는 algorithm에서 갈렸다

parser를 완전히 TypeScript로 옮긴 뒤 one-shot parsing은 샘플 문서 기준 2.2배에서 4.6배 빨라졌다. 하지만 실제 production에서 더 중요한 개선은 streaming algorithm을 고친 부분이다. naive approach는 chunk가 올 때마다 누적된 전체 string을 다시 parse해서, 20-character chunk로 들어오는 1000-character response를 총 약 25,000 character 분량의 parsing work로 키운다. OpenUI는 이를 statement-level incremental caching으로 바꿔, 마지막 미완성 statement만 다시 parse하고 이미 끝난 statement는 cache에 보존했다.

공개된 full-stream 수치가 이 차이를 잘 보여 준다. contact-form fixture는 total parse cost가 316 microseconds에서 122로 떨어졌고, dashboard는 840에서 255로 낮아졌다. 더 넓게 보면 이 글의 교훈은 분명하다. WASM은 media processing이나 cryptography처럼 compute-heavy하고 interop가 적은 작업에는 여전히 유효하지만, streaming AI UI 안에서 structured text를 JavaScript object로 자주 바꾸는 workload에는 오히려 맞지 않을 수 있다.

출처: OpenUI engineering note. Hacker News 토론: item 47461094.

공유: 긴글

관련 기사

AI X/Twitter

NVIDIA, Hugging Face 129억3030만달러 인수…오픈 모델 플랫폼 독립성 유지

NVIDIA가 Hugging Face를 129억3030만달러에 인수하기로 합의하며 1,800만 개발자와 300만개 모델이 모인 오픈 AI 생태계를 품는다. 양사는 NVIDIA 하드웨어를 강제하지 않고 멀티클라우드·멀티가속기 중립성을 유지하겠다고 약속했으며, 규제 심사가 다음 변수다.

2분 소요 4 조회