bun v0.3.0 릴리즈
소개
bun(bunjs, bun.sh) v0.3.0 릴리즈
2022-07 베타 이후 4개월 만에 v0.3.0이 릴리즈 되었네요. 4개월전에 보고 12월(연말) 이여서 진행되는거 있나? 하고 보았더니, 최근에 v0.3.0 이 릴리즈 되었습니다. 정확하게는 2022-12-07 릴리즈 문서가 작성된거 같습니다.
bunjs의 릴리즈 글을 보고 내용을 작성했습니다.
bun 소개는 이전 소개글을 참고하세요.
주요 변경 사항
Bun은 기존 철학과 마찬가지로, 최상위 우선순위로, 안정성과 호환성(node.js 와 web 양쪽 api) 위주로 업데이트가 진행되고 있다고 합니다.
그중에서도 이번 0.3.0 에서는 메모리 사용을 많이 줄였는데, 메모리 사용양을 줄인 부분을 크게 강조하고 있습니다. 실제 node.js 서버 대신 deno서버 구현하여 서비스 사용하고 있는 부분이 있는데, 실제로도 node보다 deno가 메모리를 많이 먹습니다. Bun 0.2.0 까지는 메모리를 그보다 더 많이 사용했는데 이번에 확실하게 줄였나 봅니다.
Bun.js 버전 업데이트 방법
To install:
curl -fsSL https://bun.sh/install | bash
To upgrade:
bun upgrade
주요 안정성 업데이트
-
3 ~ 5x 더 적은 메모리 사용.
-
console.log() 함수 개선.
출처: https://user-images.githubusercontent.com/709451/206131955-1678c2ba-b3ca-4294-ae81-ad39e05e73c5.png
-
text encoding 관련 일부 버그 수정 및 simdutf 라이브러리 사용하여 3x 빠른TextEncoder.encodeInto() 적용
출처: https://user-images.githubusercontent.com/3238291/205817178-bf25dcea-6b6f-487b-bdf1-6728f0e4aec1.png
-
다양한 리눅스 환경에서의 Bun 구동 보장, 이전 버전에서는 Amazon Linux 2 와 같은 VM내에서 미구동 되었는데 현재 지원됨, 이전에 다음과 같은 에러 났었는데 이제 에러 없이 구동된다. (“version ‘GLIBC_2.29’ not found”)
-
그외 다양한 업데이트 적용
- Increased test coverage for fetch(), Bun.spawn() and Bun.spawnSync(), streaming files, and much more
- Improved the bindings between JavaScriptCore and Zig, which has led to many garbage-collector related crashes being fixed
- Fixed various issues when using WebCrypto
- Fixed encoding and compression issues with fetch()
- Fixed a data corruption bug in fetch()
- Fixed a crash when async code was run within setTimeout()
Node.js 호환성 추가
다음 node.js api 들이 더 추가 되었다고 합니다.
- node:child_process
- process.stdout, process.stderr, and process.stdin
- Error.captureStackTrace() (ported from V8 to WebKit)
- fs.createWriteStream() and fs.createReadStream()
- process.release
정리
위 내용 이외 개선되거나 새롭게 추가된 API 들도 있고, npm package 을 자동 인스톨 해주는 기능이나, FileSystemRouter 추가 등 많은 부분이 개선 & 추가 된거 같습니다.
전체적으로 보면, 처음 릴리즈 이후 활발하게 프로젝트가 진행되고 있고, 앞으로의 진행을 유심히 followup 할만한 프로젝트 같습니다. 아직까지는 1.0.0 정식 release가 되면 한번 써볼만한 프로젝트 인듯 합니다. 정말로 node나 deno의 js 런타임을 대체하고 대세가 될 수 있을지! 관전 포인트가 쏠쏠 하네요!