Rust 1.66 プログラミング言語のリリース

Mozilla プロジェクトによって設立され、現在は独立した非営利団体 Rust Foundation の後援の下で開発されている汎用プログラミング言語 Rust 1.66 のリリースが公開されました。 この言語はメモリの安全性に焦点を当てており、ガベージ コレクターとランタイムの使用を回避しながら、高いジョブ並列処理を実現する手段を提供します (ランタイムは、標準ライブラリの基本的な初期化とメンテナンスに短縮されます)。

Rust のメモリ処理メソッドは、開発者をポインタ操作時のエラーから守り、解放後のメモリ領域へのアクセス、null ポインタの逆参照、バッファ オーバーランなど、低レベルのメモリ処理によって発生する問題から保護します。 ライブラリを配布し、ビルドを提供し、依存関係を管理するために、プロジェクトは Cargo パッケージ マネージャーを開発します。 crates.io リポジトリは、ライブラリのホストとしてサポートされています。

Rustでは、参照チェック、オブジェクトの所有権の追跡、オブジェクトの有効期間(スコープ)の追跡、コード実行中のメモリアクセスの正確性の評価を通じて、コンパイル時にメモリの安全性が提供されます。 Rust は整数オーバーフローに対する保護も提供し、使用前に変数値の初期化を必須にし、標準ライブラリでエラーをより適切に処理し、デフォルトで不変参照と変数の概念を適用し、論理エラーを最小限に抑えるための強力な静的型付けを提供します。

主な革新:

  • 整数表現 (「#[repr(Int)]」属性) を使用した列挙では、列挙にフィールドが含まれている場合でも、判別式 (列挙内のバリアント番号) を明示的に指定できます。 #[repr(u8)] enum Foo { A(u8), # 判別式 0 B(i8), # 判別式 1 C(bool) = 42, # 判別式 42 }
  • 単に受け取った値を返す関数 core::hint::black_box を追加しました。 コンパイラはこの関数が何かを行っていると考えるため、コードのパフォーマンス テストを実行するとき、または生成されたマシン コードを調べるときに、black_box 関数を使用してループのコンパイラの最適化を無効にすることができます (コンパイラがコードを未使用とみなし、削除しないようにします)。 たとえば、以下の例では、 black_box(v.as_ptr()) により、コンパイラーがベクトル v が使用されていないと認識するのを防ぎます。 std::hint::black_box を使用します。 fn Push_cap(v: &mut Vec) { for i in 0..4 { v.push(i); black_box(v.as_ptr()); } }
  • 「cargo」パッケージ マネージャーは、コマンド ラインから Cargo.toml マニフェストから依存関係を削除できる「remove」コマンドを提供します。
  • API の新しい部分は、安定化された特性のメソッドと実装を含め、安定化のカテゴリに移動されました。
    • proc_macro::Span::source_text
    • u*::{checked_add_signed、overflowing_add_signed、saturating_add_signed、ラッピング_add_signed}
    • i*::{checked_add_unsigned、overflowing_add_unsigned、saturating_add_unsigned、ラッピング_add_unsigned}
    • i*::{checked_sub_unsigned、overflowing_sub_unsigned、saturating_sub_unsigned、ラッピング_sub_unsigned}
    • BTreeSet::{first、last、pop_first、pop_last}
    • BTreeMap::{first_key_value、last_key_value、first_entry、last_entry、pop_first、pop_last}
    • WASI を使用する場合の stdio ロック タイプの AsFd 実装を追加します。
    • impl TryFrom > ボックスの場合<[T; N]>
    • コア::ヒント::ブラックボックス
    • 期間::try_from_secs_{f32,f64}
    • オプション::解凍
    • std::os::fd
  • テンプレートでは範囲「..X」および「..=X」が許可されます。
  • Rustc コンパイラのフロントエンドと LLVM バックエンドを構築する場合、LTO (リンク時間最適化) および BOLT (バイナリ最適化およびレイアウト ツール) 最適化モードを使用して、結果として得られるコードのパフォーマンスを向上させ、メモリ消費を削減します。
  • armv5te-none-eabi およびthumbv5te-none-eabi プラットフォームのレベル XNUMX サポートを実装しました。 XNUMX 番目のレベルは基本サポートを意味しますが、自動テスト、公式ビルドの公開、コードのビルド機能のチェックは含まれません。
  • macOS 汎用ライブラリへのリンクのサポートが追加されました。

さらに、Rust 言語のフロントエンド コンパイラ (gccrs) が GCC コードベースに含まれていることにも注目してください。 このフロントエンドは、13 年 2023 月にリリースされる GCC 13 ブランチに含まれています。 GCC 13 以降、LLVM 開発を使用して構築された Rustc コンパイラをインストールすることなく、標準の GCC ツールキットを使用して Rust プログラムをコンパイルできるようになります。 GCC XNUMX の Rust 実装はベータ状態になり、デフォルトでは有効になりません。

出所: オープンネット.ru

コメントを追加します