본문 바로가기

IT & AI

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

728x90

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

Bun 1.4 개발자 뉴스 썸네일
Bun 1.4 개발자 뉴스 썸네일
728x90

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

참고 자료

  1. Bun 1.4 출시, Zig에서 Rust로 재작성하고 Node.js 호환성을 넓혔어요 — GeekNews
  2. Bun 1.4 — Bun Blog
728x90