JavaScriptランタイムのBun、インストール不要の実行ファイル生成が可能に。Webpackより200倍以上高速とするバンドラがβ版、Puppeteerにも対応
今回は「JavaScriptランタイムのBun、インストール不要の実行ファイル生成が可能に。Webpackより200倍以上高速とするバンドラがβ版、Puppeteerにも対応」についてご紹介します。
関連ワード (単独、登場、開発等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
サーバサイドで実行可能なJavaScriptランタイム「Bun」は、5月に登場したバージョン0.6で、Bunをインストールすることなく、配置することでアプリケーションを実行できる単独の実行ファイルを生成できる「bun build」機能が搭載されました。
同じくバージョン0.6で高速なバンドラ「Bun Bundler」もβ版となり、6月に登場したバージョン0.6.7ではDiscordのボットを操作するDiscord.jsやWebブラウザを操作するPuppeteerなどの動作も確認されています。
下記はBunの開発者であるJarred Summer氏のツイート。
Standalone executables are coming in Bun v0.6.0 pic.twitter.com/eaUeFtKisL
— Jarred Sumner (@jarredsumner) May 14, 2023
単独の実行ファイルを生成する機能はDenoにも以前から搭載されており、つい先日にはnpmにも対応しました。Bunもそれに並んだことになります。
参考:Deno、npmパッケージ込みで単一の実行ファイル生成可能に。Deno Compileがnpmパッケージに対応
Bun Bundlerもβ版に
Bun Buildコマンドの中でバンドラとして動作する「Bun Bundler」も、これに合わせてβ版となりました。
下記はBunによるベンチマークの結果で、Three .jsをSourcemapとminify込みで10回バンドルしたときの性能が示されています。これによるとWebpack 5の224倍高速だということになります。
6月2日にリリースされたBunのバージョン0.6.7では、Discord.js、Prisma、Puppeteerなどの動作も確認され、Node.jsに対する高い互換性が実現されていることが示されました。
In the next version of Bun
Puppeteer works, thanks to @cirospaciari pic.twitter.com/DNc1wlipGA
— Jarred Sumner (@jarredsumner) June 3, 2023
BunはZig言語で開発され、JavaScriptCoreを採用
BunはNode.jsやDenoといったJavaScriptランタイムの競合と位置づけられているオープンソースのソフトウェアです。
JavaScriptエンジンにはSafariに搭載されているJavaScriptCoreを採用。Node.jsとの互換性を実現するためにNode.jsの主要なAPIやNode.jsのモジュール依存関係解決アルゴリズムも実装し、内蔵するnpmクライアントにより高速にnpmパッケージを読み込んで利用できるようになっています。
さらにバンドラ、トランスパイラ、タスクランナーなどの機能が最初から統合されており、TypeScript/JSXトランスパイラによってTypeScriptファイルをそのまま読み込んで実行できるなど、JavaScriptランタイムとして先行するNode.jsのエコシステムやDenoの利点を取り込みつつ、さらに機能を発展させています。
その上で、開発言語としてZigを採用し、メモリ管理などを含む低レイヤでの実装を実現することで、他のJavaScriptランタイムと比較して高速な動作を実現していると説明されています。