최근 수정 시각 : 2026-06-21 13:28:08

Bun


파일:다른 뜻 아이콘.svg  
#!if 넘어옴1 != null
''''''{{{#!if 넘어옴2 == null
{{{#!if 넘어옴1[넘어옴1.length - 1] >= 0xAC00 && 넘어옴1[넘어옴1.length - 1] <= 0xD7A3
{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴1[넘어옴1.length - 1] < 0xAC00 || 넘어옴1[넘어옴1.length - 1] > 0xD7A3
은(는)}}}}}}{{{#!if 넘어옴2 != null
, ''''''{{{#!if 넘어옴3 == null
{{{#!if 넘어옴2[넘어옴2.length - 1] >= 0xAC00 && 넘어옴2[넘어옴2.length - 1] <= 0xD7A3
{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴2[넘어옴2.length - 1] < 0xAC00 || 넘어옴2[넘어옴2.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴3 != null
, ''''''{{{#!if 넘어옴4 == null
{{{#!if 넘어옴3[넘어옴3.length - 1] >= 0xAC00 && 넘어옴3[넘어옴3.length - 1] <= 0xD7A3
{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴3[넘어옴3.length - 1] < 0xAC00 || 넘어옴3[넘어옴3.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴4 != null
, ''''''{{{#!if 넘어옴5 == null
{{{#!if 넘어옴4[넘어옴4.length - 1] >= 0xAC00 && 넘어옴4[넘어옴4.length - 1] <= 0xD7A3
{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴4[넘어옴4.length - 1] < 0xAC00 || 넘어옴4[넘어옴4.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴5 != null
, ''''''{{{#!if 넘어옴6 == null
{{{#!if 넘어옴5[넘어옴5.length - 1] >= 0xAC00 && 넘어옴5[넘어옴5.length - 1] <= 0xD7A3
{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴5[넘어옴5.length - 1] < 0xAC00 || 넘어옴5[넘어옴5.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴6 != null
, ''''''{{{#!if 넘어옴7 == null
{{{#!if 넘어옴6[넘어옴6.length - 1] >= 0xAC00 && 넘어옴6[넘어옴6.length - 1] <= 0xD7A3
{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴6[넘어옴6.length - 1] < 0xAC00 || 넘어옴6[넘어옴6.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴7 != null
, ''''''{{{#!if 넘어옴8 == null
{{{#!if 넘어옴7[넘어옴7.length - 1] >= 0xAC00 && 넘어옴7[넘어옴7.length - 1] <= 0xD7A3
{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴7[넘어옴7.length - 1] < 0xAC00 || 넘어옴7[넘어옴7.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴8 != null
, ''''''{{{#!if 넘어옴9 == null
{{{#!if 넘어옴8[넘어옴8.length - 1] >= 0xAC00 && 넘어옴8[넘어옴8.length - 1] <= 0xD7A3
{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴8[넘어옴8.length - 1] < 0xAC00 || 넘어옴8[넘어옴8.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴9 != null
, ''''''{{{#!if 넘어옴10 == null
{{{#!if 넘어옴9[넘어옴9.length - 1] >= 0xAC00 && 넘어옴9[넘어옴9.length - 1] <= 0xD7A3
{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴9[넘어옴9.length - 1] < 0xAC00 || 넘어옴9[넘어옴9.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴10 != null
, ''''''{{{#!if 넘어옴10[넘어옴10.length - 1] >= 0xAC00 && 넘어옴10[넘어옴10.length - 1] <= 0xD7A3
{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴10[넘어옴10.length - 1] < 0xAC00 || 넘어옴10[넘어옴10.length - 1] > 0xD7A3
은(는)}}}}}} 여기로 연결됩니다. 
#!if 설명 == null && 리스트 == null
{{{#!if 설명1 == null
다른 뜻에 대한 내용은 아래 문서를}}}{{{#!if 설명1 != null
{{{#!html 의학 용어}}}에 대한 내용은 [[BUN]] 문서{{{#!if (문단1 == null) == (앵커1 == null)
를}}}{{{#!if 문단1 != null & 앵커1 == null
의 [[BUN#s-|]]번 문단을}}}{{{#!if 문단1 == null & 앵커1 != null
의 [[BUN#|]] 부분을}}}}}}{{{#!if 설명2 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단2 == null) == (앵커2 == null)
를}}}{{{#!if 문단2 != null & 앵커2 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단2 == null & 앵커2 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명3 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단3 == null) == (앵커3 == null)
를}}}{{{#!if 문단3 != null & 앵커3 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단3 == null & 앵커3 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명4 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단4 == null) == (앵커4 == null)
를}}}{{{#!if 문단4 != null & 앵커4 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단4 == null & 앵커4 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명5 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단5 == null) == (앵커5 == null)
를}}}{{{#!if 문단5 != null & 앵커5 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단5 == null & 앵커5 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명6 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단6 == null) == (앵커6 == null)
를}}}{{{#!if 문단6 != null & 앵커6 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단6 == null & 앵커6 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명7 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단7 == null) == (앵커7 == null)
를}}}{{{#!if 문단7 != null & 앵커7 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단7 == null & 앵커7 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명8 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단8 == null) == (앵커8 == null)
를}}}{{{#!if 문단8 != null & 앵커8 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단8 == null & 앵커8 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명9 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단9 == null) == (앵커9 == null)
를}}}{{{#!if 문단9 != null & 앵커9 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단9 == null & 앵커9 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명10 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단10 == null) == (앵커10 == null)
를}}}{{{#!if 문단10 != null & 앵커10 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단10 == null & 앵커10 != null
의 [[#|]] 부분을}}}}}}
#!if 설명 == null
{{{#!if 리스트 != null
다른 뜻에 대한 내용은 아래 문서를}}} 참고하십시오.

#!if 리스트 != null
{{{#!if 문서명1 != null
 * {{{#!if 설명1 != null
의학 용어: }}}[[BUN]] {{{#!if 문단1 != null & 앵커1 == null
문서의 [[BUN#s-|]]번 문단}}}{{{#!if 문단1 == null & 앵커1 != null
문서의 [[BUN#|]] 부분}}}}}}{{{#!if 문서명2 != null
 * {{{#!if 설명2 != null
: }}}[[]] {{{#!if 문단2 != null & 앵커2 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단2 == null & 앵커2 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명3 != null
 * {{{#!if 설명3 != null
: }}}[[]] {{{#!if 문단3 != null & 앵커3 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단3 == null & 앵커3 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명4 != null
 * {{{#!if 설명4 != null
: }}}[[]] {{{#!if 문단4 != null & 앵커4 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단4 == null & 앵커4 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명5 != null
 * {{{#!if 설명5 != null
: }}}[[]] {{{#!if 문단5 != null & 앵커5 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단5 == null & 앵커5 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명6 != null
 * {{{#!if 설명6 != null
: }}}[[]] {{{#!if 문단6 != null & 앵커6 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단6 == null & 앵커6 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명7 != null
 * {{{#!if 설명7 != null
: }}}[[]] {{{#!if 문단7 != null & 앵커7 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단7 == null & 앵커7 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명8 != null
 * {{{#!if 설명8 != null
: }}}[[]] {{{#!if 문단8 != null & 앵커8 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단8 == null & 앵커8 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명9 != null
 * {{{#!if 설명9 != null
: }}}[[]] {{{#!if 문단9 != null & 앵커9 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단9 == null & 앵커9 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명10 != null
 * {{{#!if 설명10 != null
: }}}[[]] {{{#!if 문단10 != null & 앵커10 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단10 == null & 앵커10 != null
문서의 [[#|]] 부분}}}}}}

[[JavaScript|
파일:JavaScript 로고.svg
JavaScript
관련 문서
]]
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"
<colbgcolor=#f7df1e,#f7df1e><colcolor=#000,#000> 관련 문서 표준(TC39 · 브라우저 전쟁) · Vanilla JS · AJAX · JSFuck · 상태관리 라이브러리 · JSON · CSS-in-JS
문법 this · undefined
표준 라이브러리 및 API 표준 내장 객체 · Fetch API · Web Cryptography API
구현체 <bgcolor=#f7df1e,#f7df1e> 엔진 V8 · SpiderMonkey · JavaScriptCore · 헤르메스 · Boa
<bgcolor=#f7df1e,#f7df1e> 런타임 Node.js · Deno · Bun · workerd
패키지 관리자 npm · Bun
파생 언어 TypeScript · CoffeeScript · ActionScript · AssemblyScript · elm · PureScript · ReasonML · ReScript
관련 인물 브랜든 아이크
기타 JavaScript npm 마비 사태 }}}}}}}}}
{{{#!wiki style="margin: -10px -10px"<tablealign=center><tablewidth=320><tablebordercolor=white,#1f2023> 파일:Bun 로고.svgBun }}}
종류 JavaScript 런타임
최초 개발자 Jarred Sumner
출시 2023년 9월 8일
최신 버전 v1.3.14 (2026년 5월 13일 배포)
개발 언어 Zig (~2026년 5월 14일)
Rust (2026년 5월 14일~)
라이선스 MIT 라이선스
파일:홈페이지 아이콘.svg | 파일:GitHub 아이콘.svg파일:GitHub 아이콘 화이트.svg | 파일:디스코드 아이콘.svg
1. 개요2. 역사
2.1. Anthropic의 인수와 Rust로 재작성
3. 특징4. 설치5. 기타6. 관련 문서

1. 개요

Zig 언어로 제작되었다가 Rust로 포팅된 JavaScriptCore 엔진 기반 JavaScript 런타임. 라이선스는 MIT 라이선스이다.

빠른 성능을 첫 번째 목표로 하며 그를 입증하듯 벤치마크 결과 Node.js에 비해 3배 가까이 빠른 성능을 보여준다. 단, 속도보다 차지하는 메모리 용량이 중요하다면 여전히 Node.js를 사용하는 것이 좋다.

2. 역사

2021년 5월경 Jarred Sumner에 의해 Bun 개발이 처음 시작되었다.

2021년 9월 14일, Bun의 첫 번째 프리뷰 버전(v0.0.0-9)이 깃허브에 처음으로 공개되었다.

2022년 7월 5일, 0.1.0 퍼블릭 베타 버전이 공식적으로 출시되며 개발자들의 큰 주목을 받았다.

2022년 8월 24일, Bun 개발을 전담하는 스타트업 Oven이 설립되고 700만 달러의 시드 투자를 유치했다.

2023년 9월 8일, 프로덕션 환경에서 사용 가능한 정식 버전인 1.0 버전이 출시되었다.

2024년 4월 1일, Windows 운영체제 공식 지원을 포함한 대규모 업데이트 1.1 버전이 출시되었다.

2025년 1월 25일, 내장 Postgres 클라이언트 등을 지원하는 1.2 버전이 출시되었다.

2025년 10월 10일, 내장 Redis 및 MySQL 클라이언트를 추가로 지원하는 1.3 버전이 출시되었다.

2026년 5월 13일, 마지막 Zig 기반 버전인 1.3.14 버전이 출시되었다.

2.1. Anthropic의 인수와 Rust로 재작성

2025년 12월 3일, Anthropic이 Bun을 인수했다. 자사의 콘솔 기반 앱인 Claude Code의 경우, 소스 코드 유출 이전에도 Bun 을 사용하는 것으로 알려져 있다.

2026년 5월에는 앤트로픽이 자사의 클로드를 이용해 Zig에서 Rust로 언어를 바꾸려는 움직임이 GitHub에서 포착됐다. 하지만 해당 커밋을 진행한 Jarred Sumner[1]가 해당 커밋은 본격적인 언어 전환이 아니라 별도의 브랜치를 만들어 진행한 언어 전환 시에 대한 유지보수 시나리오 테스트로 해명하며, 과도한 반응이라 일축했다.

하지만 이후 동년 5월 11일에는 RIIR 버전을 머지한다면 v1.3.14버전이 마지막 Zig 구현이 될 것이라고 암시하며, 현재 Rust 재구현 버전이 대부분의 플랫폼에서 테스트를 통과했다며 상당한 확신을 가지고 있다고 밝혔다.# 이후 5월 14일부로 Rust 재구현 버전이 트리에 병합됐다. (#)

이렇듯 번갯불에 콩구워먹듯 날림으로 이식이 이루어지자[2] 몇몇 프로젝트에서 공개적으로 반발이 터져나왔다. 특히나 100만줄이 넘는 변경사항을 일일이 체크한다는 것은 불가능하므로 이식이 제대로 되지 않았을 것이라 지적하는 의견이 많았다. yt-dlp는 마지막 Zig 버전인 1.3.14 버전 이후는 공식적으로 지원하지 않는다 선언했고[3] electrobun 2.0도 bun의 업데이트 반영을 중단했다.

3. 특징

성능뿐만 아니라 기존의 Node.js가 하지 못했던 all-in-one 컨셉을 내세우고 있다. 번들링, 트랜스파일링, 패키지 관리 등등을 모두 Bun에서 처리할 수 있도록 한다고 한다.

Node.jsDeno가 자바스크립트를 실행하는 데 V8 엔진을 사용한 반면 Bun은 WebKit 엔진의 JavaScriptCore를 사용한다.[4]

또한 Node와의 완벽한 호환성을 표방한다는 점이 Deno와의 가장 큰 차이점이다. 따라서 별도의 마이그레이션이 필요 없이 실행 명령어를 node에서 bun run으로만 대체하기만 해도 속도가 빨라진다는 주장. 다만 실제로는 아직 미구현된 node API가 많아서 현재까지는 모든 툴이 돌아가는 것은 아니다. 모듈의 경우 node_modules 방식을 그대로 사용하기 때문에 기존 JavaScript/TypeScript 코드베이스를 그대로 활용할 수 있다는 점이 deno와의 또 다른 차이점이다. 또한 TS뿐만 아니라 JSX 트랜스파일링 역시 내장으로 지원한다.

또 다른 특징으로는 .env 파일을 자동으로 로드해 준다는 점이 있다. Node.js에서는 dotenv 패키지를 설치하는 등의 방식으로 해야 했던 것이 통합된 것에 가깝다. 다만 Node.js도 최신 버전에서는 내장 지원되면서 문제가 해결됐다.

4. 설치

[ Ubuntu / Linux 계열 OS ]
#!syntax sh
curl https://bun.sh/install | bash

[ Windows ]
#!syntax sh
powershell -c "irm bun.sh/install.ps1 | iex"

이전에는 Node.js 버전 관리자인 nvm, fnm 같은 Bun의 버전 매니저가 존재하지 않았지만, 범용 버전 매니저(asdf, vfox, mise)에서 각각 제공하는 플러그인을 통해 버전을 관리할 수 있다.

5. 기타

아이콘은 만두[5]인데, 영미권에서 만두를 bun으로 부르곤 하기 때문으로 보인다. 일반적으로는 dumpling이나 (소가 없는 꽃빵류 한정으로) mantou를 쓴다.

6. 관련 문서


[1] 표에도 적혀있듯 Bun 프로젝트의 최초 개발자이다.[2] 처음 포팅 가이드 문서가 커밋된 것이 5월 4일인데 채 열흘도 되지 않은 시점에서 재구현을 마치고 머지까지 완료한 것이다.[3] 원래는 아예 지원을 중단하려 했으나 bun 이용자들의 의견을 수렴해 사용은 허용하되 해당 환경에서의 버그 수정 요청 등은 받지 않는 선으로 마무리지었다.[4] "JavaScriptCore, the engine Bun’s runtime uses, tends to start faster than V8 (the engine Node uses), so that helps a lot. A lot of Bun’s runtime APIs are implemented in Zig and C++ instead of JS (unlike Node). We spend kind of an absurd amount of time instrumenting/profiling and thinking about performance." #[5] 그 중 소롱포에 가깝다.