6P by neo 1달전 | favorite | 댓글 1개

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-globmicromatch와 유사하지만 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 자금이 소진되면 어떻게 될지에 대한 질문이 있음.