先月(2024年12月)、RustベースのJavaScriptバンドラー「Rolldown」のベータ版が公開された。
RolldownはViteを手掛けるvoid(0)社が開発したもので、Rollup互換のAPIとプラグインインターフェースを提供しながら、機能範囲としてはesbuildに近いとされている。
Viteは、Vue.jsの開発者Evan You氏を中心に開発されたフロントエンド向けビルドツールで、ESモジュールを活用した高速な開発サーバーとして知られている。内部実装にはRollupなどを活用しており、開発時にホットリロードや依存関係の一括管理を高速に行える点が特徴だ。さらに、ビルドフェーズではesbuildなどを活用してトランスパイルやバンドリングを行ってきたが、今回のRolldownにより、それらを統合したより高速なビルドパイプラインの構築が期待されている。
Rollupはプラグインによる拡張性に優れたJavaScriptバンドラーとして広く使われており、ツリーシェイキングなどを通じて効率的なバンドルを行うことができる。一方、esbuildはGo言語で書かれた高速なバンドラー兼トランスパイラで、開発時のビルドやトランスパイル時間を大幅に短縮する。ViteはこれらRollupとesbuildを依存関係として利用してきたが、Rolldownでは両者の利点を兼ね備えつつ、単一のビルドツールで置き換えることを目指している。
RolldownはRustで実装されているため、高速な処理を行うことができ、 Rollupと比較すると10〜30倍の速度向上が期待できる という。また、同ツールにはWASM(WebAssembly)でビルドされたバージョンもあり、Rustを用いたWASMコンパイルの最適化によって、 esbuildのWASM版より(Go言語はWASMコンパイルが十分に最適化されていないため)高速に動作すると説明されている。
Rolldownは現在Vite向けに最適化されているが、一般的なバンドラーとしても利用できる。Rollupの代替としてプラグインや設定をそのまま移行できる場合が多いほか、より細かなチャンク制御を求められる局面ではesbuildの代替としての利用も想定している。公式ガイドはこちらにまとめられている。
詳細はRolldown