gccrs は、GCC を介した Rust 言語の完全な代替実装です。
最近、Rust言語とGCC(GNU Compiler Collection)のインターフェースを提供する「gccrs」プロジェクトが、 GCC 13への統合に向けて順調に進んでいることが発表されました。今月初めに開催されたFOSDEM開発者会議では、エンジニアのアーサー・コーエン氏がgccrsに関するプレゼンテーションを行い、現在の作業状況を概説しました。
gccrsプロジェクトをご存知ない方のために説明すると、これはGCC上に構築されたRust言語の完全な代替実装であり、 GNUツールチェーンへの完全な統合を目指しています。
このプロジェクトの起源は、Rust がまだバージョン 0.9 だった数年前のコミュニティの取り組みです。 Mozilla によって作成された言語は非常に多くの変更を受ける可能性があったため、コミュニティの取り組みが追いつくのが困難になりました。
言語が安定したので、次は代替コンパイラを作成します。
「2014年に開始され(そして2019年に再開され)、2020年からこの取り組みは継続されており、多くの努力と多くの進歩を遂げてきました. GCC 内に gccrs の最初のバージョンをアップロードしました。 次回 GCC 13 をインストールすると、内部に gccrs が含まれます。
あなたはそれを使用することができ、ハッキングを開始することができます.それが必然的にクラッシュして恐ろしく死ぬときに問題を報告することができます. 私たちが行っている大きなことの XNUMX つは、rustc テスト スイートを機能させることに取り組んでいることです」と Arthur Cohen 氏は、今月初めの FOSDEM カンファレンスでのプレゼンテーションで述べました。
rustcコンパイラのテストスイートを正常に実行できることも目標の一つです。Cohen氏によると、RustのGCCインターフェースは、古いRust libcoreバージョン1.49も対象としています。
gccrsプロジェクトのFAQには、Rustが使用するすべてのLLVMビルド技術には「GCC互換のバックエンドがいくつか欠けているため、gccrsの実装によってそのギャップを埋め、統合開発で使用できる」と記載されている。
ただし、Rust-GCC コンパイラ (gccrs) はまだ初期段階にあり、実際の Rust プログラムのコンパイルには使用できないことに注意してください。
GCCチームは昨年7月、gccrsをビルドスイートとして統合することを承認する投票を行った。このプロジェクトの重要性は、Linuxカーネルにとっての意義にある。実際、Linuxカーネルは通常GCCでビルドされるが、メモリ安全性の観点から、カーネルコードにC言語と並行してRust言語を使用できるようにする計画が着実に進展している。
「Rust for Linux」プロジェクトは、昨年 6.1 月にメインの Linux 31 Git ツリーに正式に統合され、XNUMX 年間の C ベースのみの開発を経て、Rust は Linux 開発専用の XNUMX 番目の言語になりました。
「私たちは gccrs を真の Rust コンパイラーにしたいと考えています。おもちゃのプロジェクトや、Rust に似ているが Rust ではない言語をコンパイルするようなものではありません。 私たちは本当にこのテスト スイートを機能させようとしています」と彼は付け加えました。 プレゼンテーション中、Cohen 氏は GCC 13 の Rust インターフェースは良いスタートを切ったものの、まだやるべきことがたくさんあると述べました。 借用された検証コードは現時点では明らかに欠落しており、組み込みおよび組み込みモジュールのサポートはまだ進行中であり、Linux 用の Rust コードをコンパイルするという重要なマイルストーンにはまだ到達していません。
念のため申し添えると、Rust for Linuxプロジェクトは、Linuxカーネルに新しいシステムプログラミング言語を導入することを目的としています。専門家によると、RustにはLinuxカーネルの第二言語として検討する上で非常に興味深い重要な特性があります。それは、(安全でないコードが健全である限り)未定義の動作が発生しないことを保証するという点です。
これには、解放後の使用、二重解放、データ競合などのエラーがないことも含まれます。 関連する議論は、Rust 言語を支持して C を捨てる可能性を中心に展開しています。 しかし、Linux の生みの親である Linus Torvalds 氏は、それは Rust for Linux プロジェクトの明確な目標ではないと述べています。
最後に、gccrsインターフェースは次期GCC 13リリースに統合されましたが、ほとんどのRust開発者がRustの公式LLVMコンパイラの代替として実際に使用できる状態にはまだ達していないことを述べておく価値があります。
少なくとも GCC 14 では、来年まではそうではないはずです。