Google は Chromium コードを Rust の層で磨き上げます • The Register

Google は、オープン ソース ブラウザ プロジェクト Chromium でサードパーティの Rust ライブラリの使用をサポートする予定です。これは、プログラミング言語とそのセキュリティ特性を大きく支持するものです。

木曜日に公開されたブログ投稿で、Chrome セキュリティ チームの Dana Jansens は、Google のソフトウェア エンジニアが、ビルド システムへの Rust ツールチェーンの運用を開始したと述べました。 希望としては、年末までに Rust コードを Chrome バイナリに含めることです。

「Rust を Chromium に導入する私たちの目標は、開発をスピードアップするために、2 つのルールを満たすための、よりシンプル (IPC なし) で安全 (全体的に複雑でない C++、サンドボックス内のメモリ安全性バグもない) 方法を提供することです (書くコード、デザイン ドキュメント、セキュリティ レビューの削減) と、Chrome のセキュリティの向上 (メモリの安全性に関するバグのないコードの行数の増加、コードのバグ密度の減少) を実現します」と Jansens 氏は説明します。

Rust は、安全でないと書かれていない場合、Chromium で特定された重大なセキュリティ バグの 70% を占めるメモリの安全性の欠陥を回避できます。 この言語はコードの無敵性を保証するものではありませんが、潜在的な欠陥が大幅に少なくなる可能性があります。

それだけの価値があるため、Google は C++ のメモリの安全性の向上にも取り組んでいます。この言語は、作成者の Bjarne Stroustrup が、ISO C++ 標準に準拠し、静的分析によって適用される特定のガイドラインに準拠している場合にメモリを安全にできると主張しています。

Jansens は、Rust が成熟するまで開発をサポートし、独自の基盤に値する十分な外部サポートを集めた Mozilla に感謝しました。 Mozilla は、Mozilla の Firefox ブラウザのデフォルトの検索エンジンとして料金を支払っている Google から長い間財政的にサポートされてきました。 しかし、この公益企業は、Chrome が Firefox の使用を侵食したため、他の資金源を探していました。

Chromium の基盤である Rust と C++ は、cxx、autocxx bindgen、cbindgen、diplomat、crubit などのツールを介してやり取りできると Jansens 氏は説明します。 これらのツールは、Rust コードから C++ コードを安全に呼び出す方法を提供し、その逆も可能です。 しかし、それぞれの設計の違いにより、2 つの言語間の相互運用性には限界があります。

「たとえば、Rust は、2 つの入力に依存する静的解析による一時的なメモリの安全性を保証します。寿命 (推定または明示的に記述) と排他的可変性です」と Jansens 氏は説明します。 「後者は、Chromium の C++ の大部分の記述方法と互換性がありません。」

Jansens 氏は、Rust と C++ は異なるルールで動作するため、相互運用性は簡単に失敗する可能性があることに気付きました。 そのため、Google は慎重なアプローチを取っています。

当初、Google は依存関係グラフの形状を制御するために、C++ から Rust への一方向の相互運用性をサポートします。 「Rust は C++ に依存できないため、依存性注入による場合を除き、C++ の型と関数について知ることはできません」と Jansens 氏は説明します。 「このように、Rust は任意の C++ コードに到達することはできず、C++ から API を介して渡された関数にのみ到達します。」

そして今のところ、Rust に対する Chromium の公開は、サードパーティのライブラリを介してのみ行われます。

それにもかかわらず、Google の Rust へのコミットメントの深化は、C++ と Rust の間の双方向の相互運用性を改善するための crubit のようなツールを開発および維持することで、Rust パッケージのエコシステムを大幅に豊かにすることが期待できます。

Google はすでに Rust を Android エコシステムに導入しています。 Microsoft Azure CTO の Mark Russinovich は、新しいプロジェクトでは C++ ではなく Rust を使用するよう呼びかけました。 Linux カーネルに Rust サポートが追加されました。 また、制御できない技術にコミットすることを嫌がる Apple でさえ、Rust を使用しています。 ®

Leave a Comment

Your email address will not be published. Required fields are marked *