このプロジェクトに Rust を使用すると、多くの潜在的なバグが完全に排除されるため、このプロセスをスピードアップできます。
シルヴェストル・レドル氏は、 COVID-19パンデミック中にGNU CoreutilsのRustによる再実装に取り組み始め、先週のFOSDEM 2023で発表した。その結果生まれたプロジェクトはuutilsと呼ばれ、現在多くのLinuxディストリビューションに同梱されているほか、Yoctoプロジェクトを通じて人気のソーシャルネットワークでも利用されている。
Rust 言語と C++ 言語の比較には共通点があります。メモリの安全性に関して、C++ に対する Rust の優位性を強調することです。 RisingWave の編集者は、C++ プロジェクトを離れた後、ネイティブのクラウド DBMS を Rust でゼロから書き直した理由を説明します。
「Rust は、所有権の規則を導入することで、コンパイル時にメモリとスレッドの安全性を保証します。 これは、C++ で一般的に使用されるメモリ管理メカニズムである RAII を超えています。 これには XNUMX つの利点があります。 XNUMX つ目は明らかです。Rust コンパイラがプログラムを検証すると、実行時にセグメント エラーや競合状態が発生しなくなります。これは、特に同時実行性の高いコードベースや大部分が非同期の場合に、何十時間ものデバッグが必要になります。 XNUMX つ目はより微妙です。Rust のコンパイラは単に障害の種類を制限するだけで、このような障害のある動作を引き起こす可能性のある密にネストされたコード スニペットを減らします。 確定的実行を使用することで、エラーの複製が大幅に改善されます。 »
GNU Coreutilsは、 Unix系オペレーティングシステムに必要な多くの基本ツール(cp(ファイルやディレクトリのコピー)、mkdir(ディレクトリの作成)など)を含むGNUプロジェクトパッケージです。開発者は、Rust言語による再実装版を提供しています。
目標の一つは、このパッケージをWindows、macOS、Android、FreeBSDなどの他のオペレーティングシステムでも使用できるようにすることです。この動きは、新規プロジェクトをCやC++で開始し続けるべきか、それともRust言語を選択するべきかという議論を再燃させています。
「Rust 言語は、メモリ管理に関してデフォルトでセキュリティ保証を提供します。 これは、Mozilla での使用がメモリ セキュリティの問題の原因となっている C や C++ には当てはまりません」と Sylvestre Ledru 氏は強調します。
しかし、Bjarne Stroustrup は、Rust と C++ を比較すると、ソフトウェアを保護するという概念がメモリを保護するという概念に限定されることに同意しません。
「『セキュリティ』の概念に単一の定義はなく、プログラミング スタイルの組み合わせ、サポート ライブラリ、および静的分析の活用により、さまざまな種類のセキュリティを実現できます。 したがって、Bjarne Stroustrup は、ソフトウェア セキュリティの観点から C++ から何が得られるかは、とりわけ開発者、特に言語が提供するツールの知識、コンパイラの熟達度などに依存することを示唆しています。
Google のエンジニアは、C++ が可能性として提供するものを認識しており、この言語でのローン検証機能の作成に着手しました。 メモリ ポインタの割り当て管理を通じてメモリの安全性を確保するのは、Rust コンパイラの機能です。
前年の第3四半期に論文を発表したGoogleチームは、 C++のようなシステムはこのような検証には適していないと結論付けた。C ++でメモリセキュリティを実現するには、プログラム実行中の制御によってのみ可能となる。つまり、Rustと同等のセキュリティレベルを達成するには、低速なC++コードを用いるしかないということだ。
RisingWave エディタのリリースは、Rust が、C および C++ の代替として何年も提示されてきた他の言語から際立っているときに行われます。 実際、Linux カーネルは Mozilla のシステム プログラミング言語に対してますますオープンになっています。