6 ポイント 投稿者 GN⁺ 2024-04-02 | 1件のコメント | WhatsAppで共有

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 でも利用可能なクロスプラットフォームシェルに
    • lsrmcat などのコアユーティリティを含む
    • 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: WebSocketperformance.mark()、Brotli 圧縮を使った fetch()URL.canParse() などの Web 標準 API をサポート

Bun は npm 互換パッケージマネージャー

  • bun install を使って npm パッケージを最大 29 倍高速にインストール可能
  • ライフサイクルスクリプト、trustedDependenciesbun 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 ベースのツールとどのように競合または協調できるのか、さらなる分析が必要。

1件のコメント

 
GN⁺ 2024-04-02
Hacker Newsの意見
  • Bunの印象的な変更点一覧

    • BunはNode.jsの理想的な代替のように見え、Windowsサポートに時間を割いたのは、Web開発の世界でしばしば見過ごされる部分だと思う。
    • 「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プロジェクトにWebサーバーを追加したい場合に検討する価値のある選択肢だ。
  • Bunチームへの要望

    • 明確なサポートポリシー/ライフサイクルのタイムラインを示してほしいという要望がある。バージョン間およびモジュール間の安定性保証についての明確さも重要だ。
  • Bun開発者の参加

    • Bun開発者が質問に答える用意があることを明らかにした。Bun v1.1はまだコンパイル中で、完了まであと約20分かかるだろうとも述べている。
  • Bunの安定性への疑問

    • Bunを複数のプロジェクトで3回試したが、ランタイムやパッケージインストール中にセグメンテーションフォルトが発生した経験がある。
  • Bunの収益モデルとVC資金

    • Bunの収益モデルは何か、そしてVC資金が尽きたらどうなるのか、という質問がある。