ニュース

「Rusty V8」が安定版に ~「V8」のC++ APIをオーバーヘッドゼロで「Rust」から

組み込みデバイスやサーバーレス環境、プラグインシステムなどへの活用に期待

「Rusty V8」が安定版に

 「Deno」の開発チームは9月24日、「Rusty V8」バインディングが安定版に達したと発表した。「Google Chrome」で採用されているJavaScriptエンジン「V8」のC++ APIに直接、「Rust」言語からアクセスできるようになる。オーバーヘッドはゼロだ。

 「Rust」はメモリ破壊などの脆弱性を生みにくい言語設計でありながら、C++言語と同等の速度を実現するプログラミング言語として近年注目を集めており、OSやドライバー、ライブラリなどで採用が進んでいる。「Deno」もそうした例の一つで、Web標準に準拠したJavaScriptランタイムを「Rust」で構築しようというプロジェクトだ。

 今回、安定版としてリリースされた「Rusty V8」は、「V8」を「Rust」で手軽に扱えるようにするバインディング(対応させるためのライブラリやツールチェーン)。もともとは2015年に始まった「v8worker」というライブラリで、当時は「Go」言語でJavaScriptランタイムを構築する実験であったという。その後、ガベージコレクション(GC)との相性などから「Go」が不適切と判断され、2019年後半、「Rust」バインディングの開発が開始された。

 「Rusty V8」は「V8」へのオーバーヘッドがなく、「V8」を完全に制御できる一方で、所有モデルと呼ばれる「Rust」の設計のおかげでメモリ安全性を確保することができる。そのため、組み込みデバイスやサーバーレス環境、プラグインシステムなど、独自のJavaScriptランタイムの構築に最適で、ビルドシステム「Cargo」で比較的容易に「Rust」プロジェクトへ組み込める。「V8」インスペクターを使用して、ブレークポイントやプロファイリングなどのデバッグ機能をJavaScriptランタイムに追加することも可能だ。

 なお、安定版「Rusty V8」のバージョンは一般的には「1.0」となるところだが、「Chrome 129」に合わせて「129.0.0」となっている。今後も「Chrome」に合わせたアップデートが行われていくようだ。