GN⁺: Bun 1.2 출시 발표
(bun.sh)Bun 1.2 업데이트
-
Bun 1.2는 Node.js 호환성을 크게 개선하고, S3 객체 저장소 API와 Postgres 클라이언트를 내장하여 제공함.
bun install
은 이제 텍스트 기반의bun.lock
을 사용함. Express의 성능을 3배 향상시킴.
Node.js 호환성
- Bun은 Node.js의 대체로 설계되었으며, Node.js 테스트 스위트를 실행하여 호환성을 개선함.
- 내부 API와 오류 메시지의 차이를 해결하여 Node.js 모듈의 90% 이상 테스트를 통과함.
HTTP/2 서버 및 기타 모듈
-
node:http2
를 사용하여 HTTP/2 서버를 생성할 수 있으며, 이는 gRPC 서버에도 필요함. -
node:dgram
을 사용하여 UDP 소켓을 바인딩하고 연결할 수 있음. -
node:cluster
를 사용하여 여러 Bun 인스턴스를 생성하여 작업을 병렬로 처리할 수 있음. -
node:zlib
모듈을 네이티브 코드로 재작성하여 성능을 2배 향상시킴.
S3 지원
- Bun 1.2는 S3 API를 내장하여 파일을 읽고, 쓰고, 삭제할 수 있음.
- Bun의 S3 클라이언트는 네이티브 코드로 작성되어 Node.js보다 5배 빠름.
Postgres 지원
-
Bun.sql
을 사용하여 SQL 쿼리를 실행할 수 있으며, 이는 SQL 인젝션을 방지함. -
Bun.sql
은 다른 Postgres 클라이언트보다 50% 빠름.
패키지 관리자
-
bun install
은 이제 텍스트 기반의bun.lock
을 사용하여 더 빠르고, 병합 충돌을 줄임. -
package.json
에 주석과 후행 쉼표를 사용할 수 있음. -
.npmrc
파일을 읽어 npm 레지스트리를 구성할 수 있음.
테스트 러너
- Bun은 내장된 테스트 러너를 제공하여 테스트 작성과 실행을 쉽게 할 수 있음.
Hacker News 의견
-
일부 사용자는 외부 라이브러리를 핵심 라이브러리에 포함시키는 것에 대해 의문을 제기하며, 선택적 라이브러리로 두는 것이 더 나을 것이라고 생각함
- 런타임은 표준 라이브러리에 포함시키는 것에 매우 신중해야 하며, 이미 포함된 것들이 프로젝트를 복잡하게 만들 수 있음
-
Bun을 사용하는 경험이 매우 좋았다는 의견이 있음
- TypeScript, Jest, React, Webpack 설정이 번거로웠지만, Bun은 간단하고 효과적임
- 외부 라이브러리 통합에 대해서는 언급할 수 없지만, 일반적으로 많이 요청되는 것에 집중하고 있음
-
기본 동작이 너무 마법적이라는 의견이 있음
- 예를 들어, S3 파일을 다운로드하지 않고 사용자에게 프리사인 URL을 제공하는 것은 놀라운 선택임
- 이러한 동작을 비활성화하는 방법이 명확하지 않음
-
기본 제공 기능이 큰 차이를 만든다는 의견이 있음
- Web API가 V8과 Webkit 런타임에 기본적으로 포함되어 있는 것을 좋아함
- 그러나 S3는 너무 멀리 간 것일 수 있으며, SQL 드라이버는 이해되지만 어느 정도까지 포함해야 하는지 고민이 필요함
- 민감한 API를 추가함으로써 보안 문제를 놓치고 있을 수 있음
-
한 클라이언트가 Bun을 프로덕션에서 사용하고 있으며, 개발 경험이 매우 좋다는 의견이 있음
- 개발 경험은 장기적으로 큰 역할을 할 수 있음
- 코드베이스나 프로세스가 좋지 않으면 좋은 인재를 잃을 수 있음
-
Bun의 기능 목록이 길어 모든 것이 견고하고 버그가 없을지 의심스럽다는 의견이 있음
- 프로젝트 관리 관점에서 S3 지원에 시간을 쓰는 것이 이해되지 않음
- Next.js 고객을 확보하는 것이 더 성장할 수 있는 방법일 것임
-
Bun 1.2에서 HTML import 지원이 추가되었음
- 단일 import 문으로 전체 프론트엔드 툴체인을 대체할 수 있음
- 매우 놀랍고 멋진 기능이라는 의견이 있음
-
Bun을 처음 사용했을 때 매우 놀라운 경험이었다는 의견이 있음
- Webpack이나 Vite 설정이 번거로웠지만, Bun은 바로 작동함
- 작은 스크립트에 대해 설정할 가치가 없었지만, Bun은 훌륭하게 작동함
-
Node.js의 대안으로 실패할 것이라고 생각했지만, Bun을 사용해 본 결과 만족스러웠다는 의견이 있음
- TypeScript와 SQLite DB 업데이트를 처리하는 독립형 스크립트를 쉽게 만들 수 있었음
- 새로운 JS/TypeScript 프로젝트에서도 사용해 보았으며, 모든 것이 빠르게 작동함
-
품질 보증 프로세스가 형식적이라는 의견이 있음
- 빌드가 통과하지 않은 상태에서 변경 사항이 병합되고 릴리스된 것으로 보임
- 테스트가 불안정하면 회귀를 추적하기 어려울 것임