ブラウザ開発者によると、Rustが注目を集めているものの、C++は依然としてChromiumの支配者となっている。

Table of Contents

ブラウザ開発者によると、Rustが注目を集めているものの、C++は依然としてChromiumの支配者となっている。

Google の Chromium プロジェクトは、主に C++ で構成される Chromium コードベースに Rust コードを追加することへの関心が高まっていることを認めています。

Rust は、Mozilla が推進するオープンソースのシステム指向プログラミング言語であり、ブラウザのセキュリティに関心のある開発者にとって特に興味深い特性であるメモリ安全性で知られています。

ChromiumチームはC++が「支配者」であり、現在の関心はRustコードから既存のC++を呼び出すことではなく、その逆であることを明確にしています。しかし、Rustを従属言語と認識していることは、Googleの開発者がChromiumの世界でRustにもっと重要な役割を担ってほしいと考えていることを示唆しています。

「ChromeのエンジニアはRustの実験を行っています」と、今月公開されたRustとC++の相互運用性に関するドキュメントで技術者たちは宣言しました。「当面の間、C++は私たちのコードベースの主役であり、Rustの使用はすべてC++に適合する必要があります。その逆ではありません。これは、これまで誰も直面したことのないC++とRustの相互運用性に関する課題を提示しているようです。」

このページでは、RustとC++のコード間でデータを交換する方法について説明していますが、言語間の違いにより、実際にはそれほど単純ではありません。Chromiumチームのアプローチは、Rust開発者のDavid Tolnay氏が1月に公開したcxxというライブラリに依存しており、C++とRustの関数間のブリッジを自動的に作成します。必要に応じて手動で行うこともできますが、複数のAPI(Chromiumには1,700以上のAPIがあります)を扱うようになると、ミスを避けるためにツールを使用することをお勧めします。

Rustプログラミング言語のロゴのスケッチ

Mozの削減で人々が困惑した後、堅牢なRustの信頼が議論されました:コーディング言語のための財団が検討されました

続きを読む

Rustコンパイラは、コンパイル時に潜在的なメモリアクセスエラーなどを検知し、危険なソフトウェアのビルドを拒否します。これにより、実行時にこれらのバグが顕在化したり、悪用されたりすることがなくなります。例えば、ポインタの使用と受け渡しについては、かなり厳格です。Rust関数がやり取りするC++コードには、同じレベルの保証はありません。cxxの役割は、2つの言語が明確に定義された安全な方法で相互運用し、情報を交換できるように支援することです。

Googleのエンジニアたちは長年Rustを研究してきましたが、この言語に対する公式の承認は得られていません。5月に初めて公開されたChromiumプロジェクトのメモリ安全性に関するページでRustについて言及されていましたが、そのページには週末に公開されたプロジェクトの「RustとC++の相互運用性」に関する投稿へのリンクがありませんでした。また、それ以前にもChromiumプロジェクトが使用しているGerritソースコードコラボレーションシステムへの様々な投稿にRustが登場しています。

Apple の Swift プログラミング言語も、安全でないメモリバグを減らす方法として検討されているが、どうやら Rust ほどではないようだ。

GoogleのFuchsiaプロジェクトはRustへの親和性を公に表明しており、3月にはZirconカーネルを除く「Fuchsiaプラットフォームソースツリー全体でRustの使用が承認されている」と宣言しました。LinuxカーネルプロジェクトもRustを採用しています。

グーグルはコメント要請に応じなかった。

今年初めに1.0リリースから5周年を迎えたRustは、プログラマーの間で人気を博しています。人気投票では常に上位にランクインし、実行速度を犠牲にすることなくより安全なソフトウェアを開発したいと考える大企業からも好意的な評価を受け続けています。

火曜日、Rust プロジェクトは、この言語の管理を引き継ぐ財団が年末までに設立されることを明らかにした。これは、資金難に陥っている Mozilla で何が起ころうとも、Rust が安定した中立的な管理下に置かれることを示す動きである。

「現時点では、Chrome における Rust への投資は、あくまで背景調査(主にこれらのツールと技術のプロトタイプ作成)に留まります」と Chromium チームの投稿には記されています。「このような相互運用性が実現可能だと確信できれば、Chrome における Rust の広範な利用を再検討し、その時点で、堅牢な製品品質のソリューションでこれを実現できるよう尽力して​​いく予定です。」®

Discover More