매일 아침 깃허브 저장소의 변화를 살피는 개발자들 사이에서 최근 Bun(자바스크립트 런타임)의 행보가 뜨겁다. Bun의 창시자 Jarred Sumner가 자신의 프로젝트에 Zig(C언어 대체용 저수준 프로그래밍 언어) 코드를 Rust(메모리 안전성을 강조하는 시스템 프로그래밍 언어)로 옮기는 실험적인 브랜치를 공개했다. 커뮤니티는 이 시도가 단순한 언어 변경인지, 아니면 대규모 코드베이스를 AI가 어디까지 처리할 수 있는지 보여주는 일종의 쇼케이스인지 논쟁 중이다.
Bun의 Rust 포팅 실험과 AI 에이전트
이번 실험은 Bun 저장소의 claude/phase-a-port 브랜치에서 진행 중이다. 포팅 과정은 크게 두 단계로 나뉜다. Phase A는 컴파일 여부와 상관없이 파일 단위로 로직을 초벌 번역하는 과정이며, Phase B는 크레이트(Rust의 라이브러리 단위)별로 컴파일을 통과시키는 단계다. 이 과정에서 약 300개의 타입 및 관용구 매핑 규칙이 LLM(대규모 언어 모델)에게 제공된다. PR(코드 변경 요청)의 대부분은 @robobun이라는 AI 봇이 생성하고, Anthropic의 Claude가 이를 리뷰하는 방식으로 자동화되어 있다. Sumner는 본인의 소셜 미디어를 통해 리라이트가 확정된 것은 아니며, 작성된 코드가 전부 폐기될 가능성도 있다고 밝혔다.
기존 Zig 방식과의 기술적 차이
예전에는 개발자가 직접 언어의 특성에 맞춰 코드를 재작성해야 했지만, 이제는 AI가 설정된 규칙에 따라 코드를 변환한다. 포팅 가이드인 PORTING.md를 보면, Bun이 자체 이벤트 루프와 시스템 콜을 직접 제어하기 때문에 tokio(Rust의 비동기 런타임), rayon(병렬 처리 라이브러리), hyper(HTTP 라이브러리) 등 외부 비동기 및 I/O 크레이트 사용이 엄격히 금지된다. 모든 비동기 처리는 Zig와 동일하게 콜백과 상태 머신 방식을 유지해야 한다. 또한, 문자열 처리에 있어서도 std::string::String 대신 &[u8]을 사용하도록 강제하는데, 이는 Bun이 WTF-8과 임의의 바이트 데이터를 다루는 특성을 유지하기 위함이다. Zig의 comptime(컴파일 타임 코드 실행) 기능은 Rust의 const generic이나 매크로로 변환되며, 포인터 소유권 모델 또한 Box, Rc, Arc 등으로 매핑된다.
개발자 생태계에 미치는 영향
개발자가 바로 체감하는 변화는 대규모 코드 마이그레이션에서 AI 에이전트의 역할이 어디까지 확장될 수 있는가에 대한 실증적 데이터다. 커뮤니티에서는 Zig의 잦은 브레이킹 체인지와 베타 단계의 언어에 핵심 제품을 의존하는 리스크가 이번 전환의 배경일 것이라고 분석한다. 특히 Anthropic이 AI 기여를 제한하는 Zig의 정책과 충돌한다는 추측도 나오지만, 기술적으로는 Bun이 이미 Zig를 포크해 운영하는 부담을 덜기 위한 선택이라는 의견이 지배적이다. 300개의 규칙을 LLM이 얼마나 충실히 수행할 수 있을지가 관건이며, 컴파일되지 않는 코드를 먼저 생성하는 방식이 기존 코딩 에이전트의 관행과 정반대라는 점도 주목할 만한 지점이다.
대규모 코드베이스의 언어 전환은 이제 인간의 수작업이 아닌 AI 에이전트의 규칙 기반 자동화 영역으로 진입하고 있다.




