AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

Claude Code의 런타임 Bun, 아무도 모르게 Rust로 재작성됐다

Claude Code는 6월 17일 이후 버전부터 완전히 다른 언어로 다시 짠 내부 엔진을 쓰고 있었습니다. 리눅스 기준 실행 속도가 10% 빨라졌다는 것 말고는, 눈치챈 사람이 거의 없었습니다. 개발자 사이먼 윌리슨이 자기 컴퓨터에 깔린 실행 파일을 직접 뒤져보기 전까지는요.

사진 출처: Bun 공식 블로그

Claude Code는 내부적으로 자바스크립트 런타임 Bun을 품고 돌아갑니다. Bun을 만든 재러드 섬너가 최근 공식 블로그에 이 재작성의 전말을 밝혔습니다. Bun을 처음 만들었던 언어 Zig를 버리고, 처음부터 Rust로 다시 짰다는 내용이었습니다.

출처: Rewriting Bun in Rust – Bun 공식 블로그

아직 공개되지도 않은 버전이 이미 들어와 있었다

윌리슨이 실행 파일 안에 박힌 문자열을 뽑아보니, Bun v1.4.0이라는 표시가 나왔습니다. 그런데 그 시점 GitHub에 정식 공개된 Bun의 최신 버전은 5월에 나온 v1.3.14였습니다. 아직 세상에 나오지도 않은 버전이, 자신이 매일 쓰던 도구 안에 이미 들어와 조용히 돌아가고 있었던 겁니다.

더 뒤져보니 Rust 소스 파일 흔적이 563개나 나왔습니다. src/bundler/bundle_v2.rs 같은 경로들이었습니다. 규모가 작은 실험적 교체가 아니라는 뜻입니다. Bun 전체가, 수백만 명이 매일 켜는 도구 안에서, 통째로 다른 언어로 바뀐 채 이미 배포되고 있었습니다.

재작성을 실제로 도운 건 Claude Fable 5였다

섬너가 블로그 맨 앞에 밝힌 사실이 이 이야기의 핵심입니다. Bun은 2025년 12월 Anthropic에 인수됐고, 섬너와 팀원들은 지금 Anthropic 소속입니다. 그리고 이번 Rust 재작성의 상당 부분을, 아직 정식 출시 전이었던 Claude Fable 5로 진행했습니다.

수백 개 파일 규모의 시스템 언어 재작성을 사람이 아닌 AI가 상당 부분 떠맡았다는 뜻입니다. 그것도 실험 삼아서가 아니라, 수백만 대의 기기에서 매일 돌아가는 실제 프로덕션 코드로요. 결과물이 무너지지 않고 조용히, 아무 사고 없이 배포됐다는 사실이 오히려 더 눈에 띕니다.

왜 굳이 Zig에서 Rust로 갈아탔나

Bun은 원래 2021년, LLM이 등장하기도 전에 섬너가 오클랜드의 좁은 아파트에서 혼자 1년 만에 완성한 프로젝트였습니다. 그때 고른 언어가 Zig였습니다. 문제는 안정성이었습니다. Zig는 C처럼 메모리를 개발자가 일일이 직접 관리해야 합니다. 자동 소멸자도 없어서, 메모리를 어디서 해제할지, 두 번 해제되진 않는지, 자바스크립트 엔진의 가비지 컬렉터가 보는 포인터인지까지 코드 한 줄 한 줄 직접 챙겨야 합니다.

그 결과 use-after-free 크래시나 메모리 누수 같은 버그가 계속 쌓였습니다. 스트림을 재사용할 때 발생하는 크래시, TLS 세션을 저장할 때마다 조금씩 새는 메모리처럼, 하나하나는 작아도 반복해서 튀어나오는 종류의 문제들이었습니다. 애드리스 새니타이저를 붙이고 퍼징을 24시간 돌려도 밤에 마음이 편치 않았다고 섬너는 말합니다. 이런 버그를 하나씩 잡아나가는 걸 영원히 반복할 수도 있었지만, 그러고 싶지 않았다는 것.

지루한 게 좋은 결과다

정리하면 이렇습니다. 메모리 버그에 지친 개발자가 언어 자체를 바꾸기로 했고, 그 대규모 이식 작업을 AI가 상당 부분 맡았고, 결과물은 기존 사용자가 거의 알아채지 못할 만큼 매끄럽게 프로덕션에 들어갔습니다. 윌리슨이 인용한 섬너의 표현처럼, “지루한 게 좋은 것”이라는 결말입니다.

화려한 발표 없이, 사용자 경험은 그대로 유지한 채 내부 언어를 통째로 바꿔치기하는 일. 지금 AI 지원 개발이 실제로 어디까지 와 있는지를 보여주는 사례에 가깝습니다.

참고자료: Claude Code uses Bun written in Rust now – Simon Willison


AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다