GN⁺: Bun 1.1 릴리즈
(bun.sh)Windows 지원
- Windows 10 이상에서 Bun 실행 가능
- macOS 및 Linux에서의 Bun 테스트 스위트의 98% 통과
- 내장된 npm 호환 패키지 관리자 포함하여, Vite React 앱 설치 시
yarn
보다 18배,npm
보다 30배 빠름 -
.bunx
파일 형식으로 Windows에서 더 빠른 스크립트 실행 지원 - Windows에서 가장 빠른 시스템 호출을 사용하여 Node.js API 최적화
- 예:
fs.readdir()
가 Node.js보다 58% 빠름
- 예:
Bun은 JavaScript 런타임 임
- JavaScript, TypeScript, JSX 지원
-
tsc
와 같은 명령줄 도구가 Bun 1.0보다 최대 2배 빠름 - Bun Shell은 이제 Windows에서도 사용 가능한 크로스 플랫폼 쉘 이 되었음
-
ls
,rm
,cat
등의 코어 유틸리티 포함 - JavaScript 및 TypeScript에서
Bun.$
API를 사용하여 쉘 실행 가능
-
-
Bun.Glob
- 파일 및 문자열 매칭을 위한 내장 Glob API 제공
-
fast-glob
및micromatch
와 유사하지만 3배 빠른 문자열 매칭
-
Bun.Semver
- semver 문자열 파싱 및 정렬을 위한 새로운 Semver API
-
node-semver
패키지와 유사하지만 20배 빠름 -
Bun.stringWidth()
- 터미널에서 문자열의 가시적 너비 측정을 위한 새로운 API
- ANSI 이스케이프 코드, 전각 문자, 그래피, 이모지 지원
-
server.url
:Bun.serve()
를 사용하여 생성된 HTTP 서버의 URL을server.url
속성으로 얻을 수 있음 -
server.requestIP()
: HTTP 요청의 IP 주소를server.requestIP()
메서드로 얻을 수 있음 -
subprocess.resourceUsage()
:Bun.spawn()
을 사용하여 생성된 하위 프로세스의 CPU 및 메모리 사용량을resourceUsage()
메서드로 액세스 가능 - Node.js 호환성 향상
-
node:http2
클라이언트 API,Date.parse()
호환성 제공, 재귀적fs.readdir()
지원 등 다양한 API 개선 - Bun과 Node.js 간 IPC 가능
- 일부 Undocumented Node.js API도 지원
-
- Web API :
WebSocket
,performance.mark()
, Brotli 압축을 사용한fetch()
,URL.canParse()
등의 Web 표준 API 지원
Bun은 npm 호환 패키지 관리자임
-
bun install
을 사용하여 npm 패키지를 최대 29배 빠르게 설치 가능 - 라이프사이클 스크립트,
trustedDependencies
,bun pm trust
등의 기능 개선
Bun은 JavaScript 번들러 임
-
bun build --target=node
를 사용하여 Node.js에서 실행 가능한 코드 번들링 지원 -
--compile
플래그를 사용하여 단일 파일 실행 파일로 TypeScript 및 JavaScript 파일 컴파일 가능
Bun은 테스트 런너 임
- Jest와 동일한 API를 지원하는 내장 테스트 모듈 제공
- 새로운
expect()
매처 추가 및 모듈 목킹 지원
SQLite 지원 내장
-
better-sqlite3
에 영감을 받은 API를 사용하여 SQLite 지원 - 멀티-스테이트먼트 쿼리, 상세한 오류 메시지, 데이터베이스 임포트 및 내장 지원 개선
GN⁺의 의견
- Bun은 Node.js와 호환성을 유지하면서 성능을 크게 향상시킨 JavaScript 도구 키트로, Windows 지원을 통해 더 넓은 개발자 커뮤니티에 접근할 수 있게 되었음.
- 내장된 테스트 런너와 SQLite 지원은 개발자가 추가적인 도구 없이도 효율적으로 작업할 수 있도록 해줌.
- Bun의 빠른 성능과 개선된 개발자 경험은 특히 대규모 프로젝트나 성능에 민감한 애플리케이션에서 두드러질 수 있음.
- Bun이 제공하는 다양한 기능과 개선 사항에도 불구하고, Node.js 생태계의 광범위한 패키지와의 완벽한 호환성을 달성하기 위해서는 지속적인 개발과 커뮤니티의 피드백이 필요함.
- Bun의 새로운 기능들이 기존의 Node.js 기반 도구와 어떻게 경쟁하거나 협력할 수 있는지에 대한 추가적인 분석이 필요함.
Hacker News 의견
-
Bun의 인상적인 변화 목록
- Bun은 Node.js의 이상적인 대안으로 보이며, Windows 지원에 시간을 할애한 것은 웹 개발 세계에서 종종 간과되는 부분임.
- "Bun on Windows passes 98% of our own test suite for Bun on macOS and Linux."라는 말은 Windows 버전이 실패한 테스트를 포함하여 출시되었다는 의미인지, 아니면 오해인지에 대한 질문이 있음.
-
Bun의 매크로 기능
- Bun이 번들 시간에 코드를 실행하는 기본적인 매크로 기능을 가지고 있다는 사실을 알게 됨. 이는 매우 흥미로운 기능임.
-
Bun과 Deno 사용 이유에 대한 의문
- Bun과 Deno가 Node.js와의 호환성이 필수라는 것을 깨달았지만, VC 자금 지원이 있을 때 제품의 지속 가능성에 대한 의문이 있음.
- Bun과 Deno가 Node.js와 같은 (다소 불완전한) 생태계에 속해 있음에도 불구하고, 이들을 사용해야 하는 명확한 이유가 무엇인지 확신할 수 없음.
-
Bun의 열렬한 팬
- TypeScript와의 호환성으로 Bun을 처음 사용하게 되었고, 성능 때문에 계속 사용함.
- Deno를 시도해봤지만 사용하기 어려웠고, 반면 Bun은 통합하기 쉽고 매우 즐거운 경험이었음.
-
Bun의 새로운 릴리스에 대한 평가
- Bun의 비디오를 시청했지만, 차트가 명확하지 않아 이전 Bun 버전과 Node.js 중 어느 것과 비교하는지 알 수 없었음.
- Bun을 부수 프로젝트에서 사용해본 경험은 좋았으며, 내장 API가 잘 작동함. Deno와 Node.js도 이러한 API의 일부를 채택하기를 바람.
- Bun은 기본적으로 일부 텔레메트리를 수집함. 설치 스크립트에서 이에 대해 알리지 않으며, Bunfile 문서에서만 언급됨.
- 사용자가 설치 중에 텔레메트리를 비활성화하는 방법에 대한 지침을 받고, 이를 선택적으로 사용할 수 있기를 바람.
- Bun은 프로젝트의 .js 진입점과 런타임을 번들로 묶어 종속성이 없는 실행 파일을 생성하는 옵션을 제공함. 이는 사용자에게 단일 바이너리를 배포하고 싶을 때 유용하지만, 현재 파일 크기가 아직 상당히 큼 (GNU/Linux에서 작은 프로젝트의 경우 90MB 이상).
- Bun이 특정 기능을 비활성화하여 더 작은 바이너리를 얻을 수 있는 옵션을 제공할지 궁금함.
- Bun을 Haxe 타겟으로 사용해보고 있으며, Haxe를 TypeScript보다 선호하거나 기존 Haxe 프로젝트에 웹 서버를 추가하고 싶을 때 고려할 만한 선택임.
-
Bun 팀에 대한 요청
- 명확한 지원 정책/수명 주기 타임라인을 제공해달라는 요청이 있음. 버전 및 모듈 간 안정성 보장에 대한 명확성도 중요함.
-
Bun 개발자의 참여
- Bun 개발자가 질문에 답변할 준비가 되어 있음을 밝힘. Bun v1.1이 아직 컴파일 중이며, 완료되기까지 약 20분이 더 걸릴 것임을 언급함.
-
Bun의 안정성에 대한 질문
- Bun을 여러 프로젝트에서 세 번 시도해봤지만, 런타임이나 패키지 설치 중에 세그먼트 폴트(segmentation fault)가 발생하는 경험을 함.
-
Bun의 수익 모델과 VC 자금
- Bun의 수익 모델이 무엇인지, VC 자금이 소진되면 어떻게 될지에 대한 질문이 있음.