1728617237
2024-10-11 01:36:00
Rust 言語に関してよく言われる懸念の 1 つは、Rust 言語用のコンパイラが 1 つしかないことです。そのため、言語の標準バージョンが何であるかを言うのが難しくなり、Rust コードの対象となるアーキテクチャが、利用可能なコンパイラがサポートするアーキテクチャに制限されます。 Rust フロントエンドを GCC に追加することは、これらの懸念を解決するのに大いに役立ちます。で 2024 GNU ツールの大釜Pierre-Emmanuel Patry 氏は、その作業の状況とその目的について最新情報を発表しました。
の GCC フロントエンド 「gccrs」という名前で呼ばれます。この言語に関する商標規則により、その言語を Rust コンパイラと呼ぶことはできません。 Patry 氏が始めた 2019 年にプロジェクトが再開されて以来、言語の 1.49 リリースを目標としてきました。 出てきた
2020年にGCCに含まれています。 GCC14ただし、そのリリースには gccrs ドキュメントは含まれていませんでした。
2023 年の GNU ツール大釜で、Patry 氏は次のように述べました。 言った プロジェクトのリポジトリには 800 を超えるコミットがあり、GCC メインラインにアップストリームする必要があり、これは膨大な作業の山でした。今年はその数が 40 に減りました。しかもそれらは前年の残り物ではなく、新しい作品です。したがって、ある程度の進歩が見られました。目標は、2 週間ごとに変更を上流にプッシュすることでしたが、それは大変な作業であることが判明しました。彼らは、その特定の目標からは後退しましたが、コードをできるだけ早くアップストリームに提供することを依然として目指しています。
昨年、gccrs の開発は 3 人の Google Summer of Code (GSoC) インターンによって支援されました。そのうちの 1 人 (Jasmine Tang) は、Rust-for-Linux プロジェクトに必要な機能であるインライン アセンブリ コードのサポートに取り組みました。これで、そのためのフロントエンド作業のほとんどが完了しました。 Rust でのインライン アセンブリは次のようになります。
unsafe {
asm!("assembly code here", "other info")
};
フロントエンドの作業が完了している間、アセンブリ コードを後のコンパイル段階をそのままの状態で通過させるのにいくつかの困難がありました。これらの問題は修正されましたが、まだ詳細に対処する必要があります。
$ sudo 今日購読してください
今すぐ購読して、LWN 権限を昇格してください。 LWN の高品質な記事が公開されるとすぐにすべてにアクセスできるようになり、その過程で LWN をサポートすることができます。 今すぐ行動しましょう 無料のトライアル購読から始めることができます。
2 人目の GSoC 学生 (Muhammad Mahad) は、gccrs が Rust テスト スイートに合格できるよう支援することを目標に、テスト スイート アダプターに取り組みました。ここにはインピーダンスの不整合があり、これを回避する必要があります。 GCC は使用します 残念ながら そのため、Rust のテストの何らかの変換が必要です。最後の GSoC 学生 (Kushal Pal) は、GCC 中間表現での借用チェックとユーザーへの適切なエラー メッセージの取得に取り組みました。
今後の展開を楽しみにしています GCC 15 リリース、パトリーはこう言いました。 主な焦点 gccrs を使用してカーネル コードをコンパイルするために必要な機能の実装に取り組んでいます。最も重要なタスクは、gccrs が Rustコアライブラリ、それは簡単な作業ではないことがわかりました。開発者は、それを行うのに十分な実装を行ったと考えていましたが、修正が必要な問題が数多くあることに驚きました。コアライブラリで実験的な機能を使用するというRustプロジェクトの習慣は、そこでは役に立ちません。
Patry 氏によると、これらの問題は解決されつつあるが、たとえ機能したとしても、現時点ではコンパイラの速度が非常に遅いという。ただし、これは、機能と正確性の作業が完了し、コア ライブラリがコンパイルされると、後で心配する問題になります。
長期的な目標の締めくくりとして、Patry は再びコア ライブラリのコンパイルから始めました。ただし、今回はライブラリ自体には変更を加えませんでした。開発者は、現在 Rust for Linux で使用されている 1.78 リリースに追いつきたいと考えています。それは考えられているほど大きな飛躍ではない、と彼は言った。 1.78 の機能の多くはずっと前から実験的であり、すでに gccrs に実装されています。それを超えて、このプロジェクトは最終的には 標準ライブラリ そしていつか、rustc コンパイラに追いつくために努力します。
このセッションで残った印象は、gccrs 開発者は Rust の 2 番目のコンパイラのギャップを埋めるために懸命に働いているが、その数が少なすぎるということです。これは重要なプロジェクトであり、企業からの大きな支援が集まるはずですが、ほとんどの場合、それは実現していません。業界内でこの取り組みを推進するためにもっと力を入れない限り、Rust は今後長い間、単一のコンパイラを備えた言語であり続ける運命にあるかもしれません。
#gccrs #開発に関する最新情報 #LWN.net