Claude Code가 이제 Rust로 다시 쓴 Bun을 쓴다
Claude Code uses Bun written in Rust now
TL;DR Highlight
Claude Code 바이너리를 뜯어보니 Rust로 포팅한 Bun v1.4.0이 들어 있었다
Who Should Read
Claude Code나 Bun 런타임을 쓰면서 Zig에서 Rust로 바뀐 Bun의 실제 배포 여부가 궁금한 개발자
Core Mechanics
- Claude Code 2.1.181부터 Rust판 Bun
- Jarred Sumner가 Claude Code v2.1.181(6월 17일 릴리스) 이후 버전이 Bun의 Rust 포팅판을 쓴다고 밝혔다.
- 시작 속도는 Linux에서 10% 빨라졌고 그 외에는 거의 아무도 눈치채지 못했다고 한다.
- strings로 Bun v1.4.0 확인
- `strings ~/.local/bin/claude | grep -m1 'Bun v1'` 결과가 Simon Willison 환경에서 Bun v1.4.0(macOS arm64)이었다.
- GitHub 최신 릴리스는 v1.3.14(5월 12일)라서 아직 정식 출시 전 버전이 들어간 셈이다.
- 바이너리 안에 .rs 파일 563개
- `grep -Eo 'src/[[:alnum:]_./-]+\.rs'`로 563개 파일명이 나왔다.
- src/runtime/bake/dev_server/mod.rs, src/bundler/bundle_v2.rs 같은 경로가 포함돼 있다.
- Bun.version으로도 확인 가능
- Ajan Raj의 방법은 BUN_OPTIONS="--preload=..."로 스크립트를 먼저 실행해 Bun.version을 찍는 것이다.
- Simon Willison 환경에서는 1.4.0이 출력됐다.
- Rust판은 canary로 받을 수 있다
- 업데이트로 Rust 버전이 Bun canary로 공개됐고 `bun upgrade --canary`로 설치한다.
Community Reactions
- Zig의 수동 메모리 관리가 버그 원인이었다는 의견
- Zig에서는 메모리 수명을 손으로 추적해 해제하다 보니 놓치는 버그가 많았고 Rust는 이를 자동으로 막는다는 댓글이 있었다.
- 컴파일 에러는 코딩 에이전트에게 결정적인 가드레일이라는 의견도 있었다.
- 커뮤니티 신뢰와 거버넌스를 문제 삼는 반응
- 1백만 줄 넘는 PR이 한 달 안에 머지된 소통 방식이 신뢰를 해쳤다는 비판이 있었다.
- Bun의 거버넌스 문서를 찾을 수 없고 사실상 Anthropic이 결정하는 것 같다는 의견도 있었다.
- Rust 코드 품질과 안정성에 대한 우려
- 변환된 Rust 코드가 관용적이지 않은 트랜스파일 결과물이라는 의견이 있었다.
- 최근 Claude Code가 TUI 렌더링 문제로 많이 불안정했다는 경험담도 있었다.
- RAM·CPU 사용량 확인이 필요하다는 의견
- 시작 속도 외에 메모리·CPU 사용량과 데드락 여부가 궁금하다는 댓글이 있었다.
- Deno를 쓰면 되지 않느냐, 아예 네이티브로 다시 쓰지 그랬냐는 의문도 나왔다.
How to Apply
- 내 Claude Code의 Bun 버전 확인하기
- 터미널에서 `strings ~/.local/bin/claude | grep -m1 'Bun v1'`을 실행해라.
- Bun v1.4.0이 나오면 Rust판이 들어 있는 것이다.
- 내 프로젝트를 Bun canary로 돌려보기
- 별도 브랜치나 CI 잡에서 `bun upgrade --canary`를 실행해라.
- 기존 테스트 스위트를 돌려 Zig판과 결과·속도·메모리 차이를 비교해라.
- 운영 환경 Bun 버전 고정하기
- 프로덕션 Bun 버전을 명시적으로 고정해 자동 업그레이드를 막아라.
- 정식 릴리스가 나오고 거버넌스가 분명해질 때까지 전환 시점을 따로 정해라.
Try It
# 터미널(셸)에 그대로 붙여넣기: Claude Code에 내장된 Bun 버전 확인
strings ~/.local/bin/claude | grep -m1 'Bun v1'
# .rs 파일 경로가 바이너리에 들어 있는지 확인
strings ~/.local/bin/claude | grep -Eo 'src/[[:alnum:]_./-]+\.rs' | head
# 이어서 해 볼 것: Bun.version 직접 출력 (Ajan Raj 방법)
cat > /tmp/bun-version.ts <<'EOF'
console.log("embedded bun:", Bun.version);
process.exit(0);
EOF
BUN_OPTIONS="--preload=/tmp/bun-version.ts" claude --versionTerminology
관련 논문
같은 시뮬레이션, 다른 근거: 도구 출력을 파일로 넘기면 LLM 에이전트 정확도가 어디서 깎이나
긴 툴 출력을 파일로 넘기자 GPT-5.1은 정확도 11.3%p 하락, 정식 출력 지정하니 회복
가짜 뉴스가 진짜 폭락을: LLM 트레이딩 에이전트 대상 정보 주입 공격
가짜 헤드라인 한 줄로 LLM 트레이딩 에이전트 62%를 조종했다(프롬프트 주입은 14%)
Harness Engineering 101: LLM은 뇌, harness는 몸
에이전트는 JSON 배열을 관리하는 루프이고, 16개 챕터로 직접 만들어 본다
Harness²: 에이전트 harness를 스스로 고쳐 쓰는 재귀 최적화 프레임워크
모델은 고정하고 harness를 재귀로 고쳤더니 벤치마크 점수가 최대 11.8%p 올랐다
해고된 Savannah 경찰관, ICE 요원 남편에게 Flock 계정 공유
경찰관이 Flock 계정을 남편(ICE 요원)에게 공유했고, 감사에서 983건 검색이 드러나 해고됐다
tmux와 Claude Code: 세션, send-keys, 그리고 한계선
tmux로 Claude Code 여러 개를 돌리면 편하지만 에이전트 4개쯤에서 한계가 온다
Hybrid Reasoning Agents: 잠재 공간에서 생각하고 텍스트로 행동하는 LLM 에이전트
잠재 공간 추론과 텍스트 도구 호출을 섞었더니 성능 10.4%↑, 토큰 최대 54.7%↓