ニュース

「Chromium」へのRust言語採用はサードパーティライブラリから ~Googleが解説

来年中にも「Chrome」のバイナリにRustコードが含まれるように

「Google Chrome Community」におけるアナウンス

 米Googleは1月12日(現地時間)、「Chromium」におけるRust言語の活用方針を明らかにした。まずはサードパーティ製のRustライブラリをC++コードから呼べるようにするという。

 「Rust」は、Mozillaの主導で開発が進められているプログラミング言語。非力な組み込みデバイスにも耐えるメモリ効率、並列実行やメモリ操作における安全性、高い生産性などを重視しており、メモリ破損の不具合を避けるのが難しいC/C++言語に代わるシステム開発言語として期待されている。

 「Google Chrome」や「Microsoft Edge」などのベースとなっている「Chromium」は現在、ほぼすべての部分がC++言語で開発されている。そのコードベースは膨大で、それらをすぐにRustで置き換えるのは現実的ではない。そのため、新規に書き起こす部分にRust言語を利用し、既存のC++コードと同居(相互運用)させる方法が模索されていた。

 そこでの結論は、大きく分けて2つある。

 1つ目は、C++コードからRustコードを呼び出すことだけを許可するべきだということ。相互運用を単一方向に限定することで、RustコードはC++コードの挙動や仕様(内部的な型や関数)を知る必要がなくなり、設計がシンプルになるというわけだ。

 2つ目は、Rustの導入をまずはサードパーティ製ライブラリに限定するべきだということ。C++コードとRustコードにはメモリの扱いに大きな違いがあり、両者の混合は新しい不具合を生み出す危険性がある。

 その点、サードパーティライブラリは「Chromium」以外でも利用されることを想定したスタンドアロン(自己完結)コンポーネントとして書かれており、「Chromium」の実装に依存しない。C++コードとRustコードの橋渡しには限られたAPIのみが用いられ、コンポーネントとして明確に分離されているため、双方のコードが混じりあう危険を排除できる。

 こうした狭いAPIと明確に分離されたコンポーネントの原則はこれまでに成功したC/C++とRustの相互運用例によっても示されており、「Chromium」に採用されるサードパーティライブラリの選定基準としても用いられるとのこと。

 同社は「Chromium」におけるRustコードの採用を狭い範囲に留めつつも、ビルドシステムにRustツールチェインを追加することを積極的に進める方針。これにより、来年中にも「Chrome」のバイナリにRustコードを含めることができる見通しだ。