언어를 바꾸는 일은 코드만 옮기면 끝나지 않아. 왜 바꿨는지, 다른 방법은 검토했는지, 새 언어가 치르는 비용은 무엇인지까지 설명해야 결정이 설득력을 얻어.

Bun의 Zig→Rust 전환을 둘러싼 논쟁은 이 기본 질문에서 시작해. Bun은 메모리 버그를 전환 이유로 들었고, Anthropic이 인수한 뒤 대규모 에이전트 실험으로 Zig 코드를 unsafe Rust로 파일 단위 이식했어. 결과물은 며칠 뒤 병합돼 공식 버전이 됐지.1

Rust로 옮긴 사실보다 설명의 빈칸이 컸어

Bun은 TypeScript 런타임이고, Zig는 시스템 프로그래밍 언어야. Bun은 최근까지 Zig로 작성된 가장 큰 코드베이스 가운데 하나였고, 코드 기여의 거의 100%가 AI라고 밝혀 왔어. 반면 Zig 프로젝트는 AI 기여를 허용하지 않는 정책을 두고 있어. 이 차이 때문에 전환은 단순한 언어 선택을 넘어 AI를 소프트웨어 제작에 어디까지 들일지 보여주는 사례가 됐어.1

전환을 설명한 쪽의 논리는 비교적 분명해. Zig로는 메모리 버그를 감당하기 어려웠고, Rust의 borrow checker가 소유권 문제를 타입 수준에서 드러내 준다는 거야. 다만 공개된 설명에는 세 가지가 충분히 보이지 않아. 정확한 동기가 무엇인지, 어떤 대안을 검토했는지, 각 대안의 장단점이 무엇인지야.1

이 세 가지가 빠지면 발표는 기술 결정 문서라기보다 사후 정당화처럼 읽힐 수 있어. 메모리 버그가 실제 문제였다는 것과 Rust 전환이 유일한 해법이었다는 건 다른 문장이니까.

Zig를 다르게 쓰는 선택지도 있었어

자료는 Zig를 유지하면서 메모리 정책과 테스트 방식을 바꾸는 선택지를 예로 들어. 금융 트랜잭션 데이터베이스 TigerBeetle은 TigerStyle과 시뮬레이션 테스트를 사용하고, 시작 시점에 메모리를 정적으로 할당해 초기화 뒤 동적 할당과 해제 후 재할당을 허용하지 않는 방식을 택했어. 이 접근이 모든 애플리케이션에 그대로 맞는다는 뜻은 아니야. 다만 메모리 버그가 언어 하나의 결함이 아니라 설계·규약·테스트가 묶인 문제일 수 있다는 점은 보여줘.1

Bun의 설명은 이런 대안이 실제로 검토됐는지, 검토됐다면 왜 탈락했는지를 충분히 말하지 않아. Rust의 장점만 나열하고 비용은 거의 적지 않았다는 비판도 나와. 대규모 Rust 코드베이스는 안전성을 얻는 대신 느린 컴파일 시간을 치를 수 있고, Bun은 과거 컴파일 속도를 중요하게 여겨 Zig 컴파일러를 포크해 개선하려 했던 프로젝트였어. 전환 뒤 빌드 시간이 늘었다면 그 비용까지 함께 공개해야 비교가 가능해.1

AI가 빠르게 옮겼다는 말은 무엇을 가리킬까

Anthropic은 이 사건을 AI가 대규모 재작성을 수행할 수 있다는 서사와 함께 내세웠어. 하지만 실제 전환 방식은 “AI가 알아서 코드를 옮겼다”와 거리가 있어. Bun은 파일별로 unsafe Rust를 사용해 기존 구조를 먼저 보존했고, PORTING.md라는 전환 지침을 만들었으며, 에이전트가 그 지침에 따라 재작성 코드를 검토하도록 했어. 하네스와 규칙, Rust의 borrow checker, 인간의 판단이 함께 들어간 작업이야.1

여기서 묘한 점이 생겨. Bun은 일반적인 스타일 가이드는 강제하기 어렵다고 설명하면서도, 전환 작업에는 구체적인 지침과 에이전트 리뷰를 적용했어. 적절한 조건을 설계하면 에이전트 리뷰가 작동할 수 있다는 뜻이지만, 동시에 그 조건을 설계하고 결과를 판단할 엔지니어링은 남아 있다는 뜻이기도 해.

백만 줄 규모의 AI 생성 변경은 받아들이면서, 소유권을 드러내는 SharedPtr 래퍼와 deref() 같은 몇 줄의 코드는 가독성 문제로 꺼리는 태도도 같은 긴장을 드러내. 사람이 코드를 읽어야 한다면 몇 줄의 불편함도 검토 대상이고, 사람이 읽지 않아도 된다면 백만 줄 변경의 유지보수 위험을 어떻게 다룰지 설명해야 하지.1

다음에 볼 것은 전환의 결과보다 기록이야

이 사례에서 당장 확인할 수 있는 건 Rust가 Zig보다 절대적으로 낫다는 결론이 아니야. 대규모 언어 전환을 다시 판단할 때 필요한 질문이 더 선명해졌다는 데 있어.

메모리 버그는 전환 뒤 실제로 줄었나. 컴파일 시간과 기여자 경험은 어떻게 바뀌었나. unsafe Rust로 시작한 코드는 안전한 추상화로 얼마나 이동했나. AI가 만든 변경을 사람이 어떤 기준으로 검토했나. 이 질문에 공개된 수치와 결정 기록이 붙어야, AI가 재작성을 수행했다는 홍보 문장과 기술적 성과를 구분할 수 있어.

Anthropic이 코딩 에이전트를 만들고 있다는 사실과 소프트웨어 엔지니어링이 사라진다는 주장은 같은 말이 아니야. 이 전환이 보여주는 건 오히려 반대에 가까워. 코드를 옮기는 속도가 빨라져도, 무엇을 고칠지 정하고 어떤 비용을 감수할지 설명하는 일은 여전히 남아 있어.

각주

  1. 「Zig 창시자는 진실을 말하지만, Antropic은 허풍을 떨고 있다」, GeekNews ↩︎ ↩︎2 ↩︎3 ↩︎4 ↩︎5 ↩︎6 ↩︎7