14.5주 만에 Rust 83만 줄, 에이전트가 끌고 간 런타임 재작성

메모리는 1,383MB에서 126MB로 줄었고 토큰 비용은 약 12만 달러가 들었다. 그럼에도 컴파일러가 순순히 통과시킨 회귀 버그가 수십 건 남았다

|5분 읽기0
Source code on a developer's screen, the surface where GitHub's agents carried out a 14.5-week TypeScript-to-Rust port of the Copilot runtime
Source code on a developer's screen, the surface where GitHub's agents carried out a 14.5-week TypeScript-to-Rust port of the Copilot runtime

프로덕션 언어 런타임 하나가 TypeScript를 걷어내고 Rust 83만 2,378줄로 다시 태어났다. 성능 격차는 뚜렷하다. 단일 턴 세션 수명주기 1,000회를 처리하는 벤치마크는 초당 7.55회에서 120회로 올라갔고, 클라이언트 10개를 묶은 에이전트 배치의 메모리는 1,383MB에서 126MB로 떨어졌다. 작업은 2026년 5월 12일부터 8월 21일까지 이어졌다. 개발자 한 명이 코딩 에이전트를 감독하며 사실상 홀로 이끌었고, 그 전 과정은 Microsoft 수석 엔지니어 Stephen Toub이 남긴 상세 엔지니어링 기록에 담겼다.

핵심 요약

  • 에이전트가 14.5주 동안 128개의 병합된 풀 리퀘스트를 통해 프로덕션 TypeScript 약 43만 줄을 Rust 83만 2,378줄로 옮겼다.
  • 단일 턴 세션 수명주기 1,000회 벤치마크는 TypeScript에서 초당 7.55회, 인프로세스 Rust에서 초당 120회를 기록했다. 클라이언트 10개 에이전트 배치의 메모리는 1,383MB에서 126MB로 줄었다.
  • 세션 로그에 남은 사용자 메시지 3만 1,247건 가운데 사람이 직접 입력한 것은 약 2,600건, 열두 건에 한 건꼴이다.

이식 작업을 떠받친 숫자들

에이전트는 프로덕션 코드와 별개로 Rust 단위 테스트 46만 8,689줄을 만들어냈다. 이식 풀 리퀘스트는 하루 1.3건꼴로 들어왔고, 그 사이에도 공개 릴리스 135건이 나갔다. 한 번에 갈아엎지 않고 모듈을 하나씩 제자리에서 교체한 덕분이다. The Register는 토큰 비용을 약 12만 달러로 전했다.

임시 연결 장치의 곡선도 같은 이야기를 한다. 두 세계를 잇던 N-API 익스포트는 8월 3일 2,019개로 정점을 찍었고, TypeScript 호출 지점은 3,356곳에 달했다. 둘 다 결국 0으로 수렴했다.

이 런타임이 실제로 돌리는 것

이 엔진은 정작 그것을 쓰는 사람 대부분의 눈에는 보이지 않는다. Copilot CLI와 Copilot 데스크톱 앱, 6개 언어로 제공되는 Copilot SDK, 클라우드 에이전트를 떠받치고, 최근 버전의 VS Code와 Visual Studio에 함께 실려 나간다. Excel, Outlook, PowerPoint, Word에까지 발을 걸치고 있다.

처음 구현은 Node.js와 V8 위에서 TypeScript로 돌아갔다. 반복 개발은 빨랐지만, 같은 엔진을 C ABI를 거쳐 그 많은 호스트에 임베드해야 하는 순간 시작 지연과 서버 집적도가 발목을 잡았다. Toub은 결론의 범위를 조심스럽게 그었다. 이 프로젝트가 모든 대형 TypeScript 프로그램을 Rust로 바꿔야 한다는 주장은 결코 아니며, 여기서는 C ABI 임베딩과 낮은 정상 상태 오버헤드, 예측 가능한 자원 사용이라는 요구가 유난히 컸다는 것이다.

에이전트가 쓰기보다 읽기에 시간을 더 쓴 이유

로그에는 이벤트 1,276만 995건과 도구 실행 시작 185만 7,409건이 기록됐다. Git 상태를 들여다보는 명령에만 측정된 시간으로 608시간이 들어갔다. 프롬프트 캐시 적중률은 96.22%까지 올라갔는데, 이것이 없었다면 그 길이의 세션은 비용을 감당할 수 없었다.

AI가 코드를 쏟아낸다는 통념은 사실과 거의 반대다. 이 규모에서 작업은 훨씬 더 반복적인 조사에 가까웠다.

런타임 전체에 걸쳐 있는 3만 줄짜리 파일 session.ts를 옮기는 데는 25시간짜리 세션이 필요했다. 그 세션은 첫 편집 한 줄을 쓰기까지 56분을 읽는 데 썼고 확인용 도구 호출을 122번 던졌다. 이후 일곱 차례에 걸쳐 자식 세션 15개를 띄우고 조율 메시지 89건을 주고받았다. 모델은 강점에 따라 나눠 붙였고, GPT-5.6 Sol과 Anthropic의 Claude Opus 4.8이 함께 투입됐다.

컴파일러가 잡지 못한 것

Rust의 난이도를 말할 때 늘 도마에 오르는 보로우 체커는 정작 존재감이 없었다. 컴파일 오류 8,678건 가운데 소유권·빌림·수명 문제는 1.7%에 그쳤고, 이름과 임포트 해석이 37%를 차지했다. unsafe 코드는 36개 파일에 걸쳐 158개 블록으로 묶였고, 거의 전부가 C ABI와 Windows API, POSIX 경계에 몰려 있었다.

문제는 회귀였다. 수십 건이 추적됐고 대부분 사전 배포 채널에서 드러났으며, 9월 14일이 되어서야 완전히 정리됐다. 유형은 미완의 마이그레이션, 상태와 수명 문제, 동작 계약 불일치, 호스트 경계 문제, 잘못된 테스트 기준으로 갈렸다. 어느 것도 컴파일러가 판정해주지 않는 종류다. 몬트리올에서 열린 RustConf에서 컨설턴트 Lisa Crossman은 컴파일러를 정답지로 취급하지 말라고 경고했다. Rust는 에이전트가 메모리 안전하지 않은 코드를 쓰는 것은 막아주지만, 틀린 프로그램을 문법적으로 올바르게 쓰는 것은 막지 못한다는 지적이다. Toub도 비슷한 자리에 닿았다. 컴파일되는 코드가 곧 올바른 코드라는 말은 농담으로나 쓸 만하다는 것이다.

전망

비교 사례는 Anthropic이 인수한 JavaScript 런타임 Bun이다. 제작자 Jarred Sumner는 Zig 약 53만 5,000줄을 거의 전적으로 Claude 에이전트로 Rust에 옮겼고, 실험적 포팅은 7월 30일 기준 Linux x64 glibc에서 Bun 테스트의 99.8%를 통과했다. 다만 안정 빌드는 여전히 Zig에서 나오고, Zig 창시자 Andrew Kelley는 그 결과물을 검토되지 않은 쓰레기라고 일축했다. GitHub는 반대로 갔다. 구조를 손대지 않고 모듈을 일대일로 교체했고, 그래서 정작 최적화 작업은 아직 시작도 하지 않은 상태다. 이 패턴은 엔지니어 두 명이 진행한 OpenAI의 Rust 재작성과도 겹친다. 작은 사람 팀, 막대한 에이전트 처리량, 그리고 병목으로 남은 리뷰다.

자주 묻는 질문

Rust 코드를 전부 AI 에이전트가 썼나

대부분은 에이전트가 만들었지만 설계와 리뷰, 최종 판단에는 사람이 계속 개입했다. 세션 로그를 보면 전체 사용자 메시지 3만 1,247건 가운데 사람이 직접 친 것은 약 2,600건이다. 열두 번에 한 번꼴로 사람이 끼어든 셈이다.

Rust 런타임은 얼마나 빨라졌나

공개된 벤치마크 하나는 클라이언트를 공유하고 파이프라인 100개를 동시에 돌리며 단일 턴 세션 수명주기 1,000회를 측정했다. 이 조건에서 Rust 빌드는 초당 120회, TypeScript는 7.55회를 기록해 15.9배 차이가 났다. 클라이언트 10개 에이전트 배치의 메모리는 1,383MB에서 126MB로 내려갔다.

다른 TypeScript 프로젝트도 Rust로 옮겨야 하나

Toub은 일반화를 분명히 거부했다. 이번에 Rust를 택한 근거는 C ABI를 통한 임베딩, 낮은 시작 비용, 여러 호스트 애플리케이션에 걸친 예측 가능한 자원 사용이었다. 대다수 TypeScript 코드베이스에는 해당하지 않는 조건이다.

이 기사에 대한 반응을 남겨주세요!

SJ
로딩 중...

관련 기사

GitHub 하이드라퓨전, 모델을 고르지 않는다. 워크플로를 짠다
Developer Tools

GitHub 하이드라퓨전, 모델을 고르지 않는다. 워크플로를 짠다

GitHub의 프로젝트 하이드라퓨전은 Copilot 코딩 요청마다 다중 모델 실행 계획을 짠다. 단일 모델의 단순함을 내주고 비용을 크게 낮췄다.

Seung Jung6일 전
Plugin4Shell, 제로클릭 원격 코드 실행이 Claude Code·Codex·Copilot·Gemini CLI를 관통했다
Developer Tools

Plugin4Shell, 제로클릭 원격 코드 실행이 Claude Code·Codex·Copilot·Gemini CLI를 관통했다

Plugin4Shell로 명명된 제로클릭 원격 코드 실행 취약점이 AI 코딩 에이전트의 커밋 고정을 우회한다. 네 개 벤더 중 두 곳만 패치를 내놨다.

Seung Jung그저께
기업들이 자사 비공개 소스코드를 AI 평가 데이터로 팔기 시작했다
Developer Tools

기업들이 자사 비공개 소스코드를 AI 평가 데이터로 팔기 시작했다

Specific Labs가 소비자 제품 기업과 핀테크 플랫폼의 비공개 저장소를 라이선스해 Real-SWE를 만들었다. 독점 코드가 긁어모을 수 없는 AI 평가 데이터로 바뀌었다.

Seung Jung5일 전
Claude Code Projects, 병렬 클라우드 스레드를 지휘하는 조정자로 돌아왔다
Developer Tools

Claude Code Projects, 병렬 클라우드 스레드를 지휘하는 조정자로 돌아왔다

새로 설계된 Claude Code Projects는 작업 스레드 위에 조정자를 둔다. 스레드는 저마다 자기 브랜치에서 도는 완전한 클라우드 세션이고, 메모리는 함께 쓴다.

Seung Jung그저께
Perplexity는 에이전트 수백 개에 DB 코드를 맡겼다. 배포 권한만은 사람이 쥐었다.
Developer Tools

Perplexity는 에이전트 수백 개에 DB 코드를 맡겼다. 배포 권한만은 사람이 쥐었다.

Perplexity가 DynamoDB를 CobbleDB로 교체했다. 엔지니어 두 명과 배포 권한이 없는 에이전트 수백 개가 두 달 만에 만든 4만 줄짜리 Rust 저장소다.

Seung Jung3일 전
OpenAI "자체 모델이 Jalapeño 설계를 9개월로 줄였다"
Tech & Business

OpenAI "자체 모델이 Jalapeño 설계를 9개월로 줄였다"

AI가 작성한 커널이 OpenAI 전문가의 구현을 최대 1.8배 앞섰다. Jalapeño의 첫 InferenceX 벤치마크 결과가 공개됐다.

Seung Jung24일 전