Bun 1.4, Rust 전환과 Node.js 호환성 개선을 함께 담았어요
Bun 1.4, Rust 전환과 Node.js 호환성 개선을 함께 담았어요

Bun 1.4가 2026년 8월 20일 공개됐어요. 이번 버전은 런타임을 Zig에서 Rust로 옮긴 첫 정식 릴리스예요. Node.js 호환성, 서버 자원 사용량, 테스트와 패키지 관리 도구도 한꺼번에 손봤어요. 2
핵심 요약
| 구분 | 핵심 | 왜 볼 만한가요 |
| 런타임 | Bun의 주요 구현을 Zig에서 Rust로 옮겼어요 | 언어 전환이 실제 배포 버전에 들어간 첫 사례예요 |
| Node.js 호환성 | Node.js 테스트 1,517개가 새로 통과했어요 | 기존 Node.js 프로젝트를 옮길 때 만나는 호환성 문제를 줄였어요 |
| 성능 | 유휴 CPU 사용량은 5분의 1로, 메모리는 최대 35% 줄였다고 밝혔어요 | 상시 실행하는 서버와 개발 도구의 운영 비용에 직접 닿는 변화예요 |
| 개발 도구 | 이미지 처리, 헤드리스 브라우저, 크론, 터미널 기능을 내장했어요 | 외부 패키지에 맡기던 작업을 런타임 안에서 처리할 선택지가 늘었어요 |
1. Bun 1.4는 호환성과 운영 효율을 함께 손봤어요
Bun 팀은 이번 릴리스에서 Node.js 공식 테스트 스위트 가운데 1,517개 테스트가 새로 통과했고, Bun 1.3 이후 2,900개가 넘는 문제를 고쳤다고 밝혔어요. `node:http`, `node:fs`, `node:cluster`, `node:timers`, `node:zlib`, `node:vm`, `node:stream`은 각 모듈에 해당하는 Node.js 테스트의 97%를 통과해요. `node:quic`은 99%, `node:events`, `node:trace_events`, `node:sqlite`는 100%에 도달했어요. 다만 Bun 팀도 Node.js와 100% 호환되는 상태는 아니라고 선을 그었어요. 2
호환성 개선은 숫자에만 머물지 않아요. Playwright 테스트와 UI 모드가 Bun에서 작동하고, Next.js 16.3의 Turbopack과 React Compiler 빌드도 지원해요. Vitest는 스레드와 프로세스 풀, 커버리지 실행까지 사용할 수 있어요. OpenTelemetry와 Datadog 계열 관측 도구도 지원 범위에 들어왔어요. 기존 Node.js 프로젝트가 이런 도구를 함께 쓴다면 런타임 교체 전 검증 범위를 구체적으로 잡기 쉬워졌어요. 1
Rust 전환은 실제 서비스에서 먼저 검증했어요
Bun 1.4는 Rust 포트를 담은 첫 정식 버전이에요. 공식 글에 따르면 Claude Code는 이 포트를 수개월 동안 사용했고, Prisma Compute도 같은 기반에서 출시됐어요. Bun 팀은 메모리 할당 구조를 단순화하면서 유휴 CPU 사용량을 5분의 1로 줄였다고 설명해요. 메모리 사용량은 최대 35% 감소했고 Linux 시작 속도는 50% 빨라졌어요. Claude Code 운영 환경에서는 CPU 사용량 중앙값이 5.8%에서 2.5%로, 상위 1% 구간은 24%에서 10%로 내려갔다고 공개했어요. 2
HTTP 서버 메모리 측정값도 함께 나왔어요. Bun 팀의 벤치마크에서 Fastify는 233MB에서 120MB로, Express는 169MB에서 92MB로, Next.js는 397MB에서 285MB로 줄었어요. 이 수치는 Bun이 제시한 자체 측정값이에요. 실제 효과는 애플리케이션 구조와 트래픽에 따라 달라질 수 있으니 같은 워크로드로 다시 재는 편이 안전해요. 2
외부 패키지가 맡던 기능을 런타임에 넣었어요
`Bun.Image`는 이미지 변환 API를 제공하고, `Bun.WebView`는 내장 헤드리스 브라우저 역할을 해요. `Bun.markdown`은 Markdown을 HTML이나 React 출력으로 바꿀 수 있어요. `Bun.cron()`은 운영체제의 예약 작업에 작업을 등록하고, `Bun.Terminal`은 별도 PTY 패키지 없이 셸 프로그램을 실행할 수 있게 해요. 디렉터리 정적 서빙과 실험적인 HTTP/3 지원도 `Bun.serve`에 들어갔어요. 2
내장 기능이 늘면 의존성 수와 설치 과정은 줄일 수 있어요. 대신 런타임에 더 많은 책임을 맡기게 돼요. 특히 `Bun.markdown`의 HTML 출력은 자동으로 안전하게 정리되지 않아요. 신뢰할 수 없는 Markdown을 받는 서비스라면 원시 HTML, 이벤트 속성, `javascript:` 링크를 별도로 차단해야 해요. HTTP/3 서버와 HTTP/2·HTTP/3 `fetch`도 아직 실험적 기능이라 운영 환경에 바로 넣기보다 부하 테스트와 장애 시 되돌리는 경로를 먼저 준비하는 편이 좋아요. 1
업그레이드 전에 호환성 변경을 확인해야 해요
Bun 1.4는 Node.js 26을 기준으로 맞췄어요. 네이티브 애드온은 모듈 ABI 147용 빌드가 필요할 수 있어요. 새 모노레포는 격리형 링커를 기본으로 쓰지만 기존 잠금 파일은 기존 방식을 유지해요. Bun을 Node.js 대체 실행기로 사용할 때는 `.env` 파일을 자동으로 읽지 않아요. YAML과 TOML 파서도 이전보다 엄격해졌어요. 2
TLS 인증서 검증 기본값도 강화됐어요. 1.3에서 연결되던 서버가 1.4에서는 호스트 이름이나 인증서 문제로 실패할 수 있어요. 업그레이드 전에 네이티브 애드온, 환경 변수 로딩, 설정 파일 파싱, TLS 연결을 따로 점검하면 원인을 찾는 시간을 줄일 수 있어요. 1
왜 중요한가요
Bun을 검토할 때 가장 큰 부담은 빠른 벤치마크보다 기존 Node.js 생태계와 얼마나 잘 맞는지였어요. 이번 버전은 Playwright, Next.js, Vitest, 관측 도구처럼 실제 프로젝트가 자주 묶어 쓰는 구성의 호환 범위를 넓혔어요. Node.js 테스트 통과 수치와 지원 도구 목록이 함께 공개돼서 마이그레이션 실험의 기준을 잡기 쉬워졌어요. 2
Rust 전환과 자원 사용량 개선은 장시간 켜 두는 서버나 CLI에서 체감할 여지가 있어요. 그래도 공식 벤치마크만으로 운영 비용 절감을 단정하면 안 돼요. 현재 서비스의 요청 패턴, 메모리 상한, 시작 시간, 네이티브 모듈 의존성을 같은 조건에서 비교해야 해요. Bun 1.4는 바로 전면 교체할 근거라기보다, 기존에 호환성 문제로 보류했던 팀이 다시 시험해 볼 만한 범위를 넓힌 릴리스에 가까워요. 1
참고 자료
- Bun 1.4 출시, Zig에서 Rust로 재작성하고 Node.js 호환성을 넓혔어요 — GeekNews
- Bun 1.4 — Bun Blog