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

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

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

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

主な革新:

  • Future::Output を使用した非同期関数の場合、戻り値が無視された場合に警告を含む「#[must_use]」アノテーションを指定できるようになりました。これは、関数が値を変更するという想定によって引き起こされるエラーを特定するのに役立ちます。新しい値を返すのではなく。 #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; 警告: `bar` によって返された future の未使用の出力は使用する必要があります —> src/lib.rs:5:5 | 5 | bar().await; | ^^^^^^^^^^^^ | = 注: デフォルトで `#[warn(unused_must_use)]` がオン
  • FIFO キュー std::sync::mpsc (マルチプロデューサー、シングルコンシューマー) の実装が更新され、以前の API を維持しながらクロスビームチャネル モジュールの使用に切り替えられました。 新しい実装は、多くの問題を解決し、パフォーマンスが向上し、コードのメンテナンスが簡素化されたことが特徴です。
  • API の新しい部分は、安定化された特性のメソッドと実装を含め、安定化のカテゴリに移動されました。
    • {整数}::checked_ilog
    • {整数}::checked_ilog2
    • {整数}::checked_ilog10
    • {整数}::ilog
    • {整数}::ilog2
    • {整数}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • 非ゼロ*::BITS
  • 「const」属性は、定数の代わりに任意のコンテキストで使用できるかどうかを決定し、関数で使用されます。
    • char::from_u32
    • char::from_digit
    • char::to_digital
    • core::char::from_u32
    • core::char::from_digit
  • Linux カーネル (linuxkernel) での Rust の使用、Sony PlayStation 1 (mipsel-sony-psx)、PowerPC with AIX (powerpc64-ibm-aix)、QNX Neutrino RTOS ( aarch64-unknown-nto-) プラットフォーム qnx710、x86_64-pc-nto-qnx710)。 XNUMX 番目のレベルには基本的なサポートが含まれますが、自動テスト、公式ビルドの公開、コードがビルドできるかどうかの確認は含まれません。

さらに、AArch64 アーキテクチャに基づいたシステム用にアセンブルされたドライバーと Linux カーネル モジュールを開発するために Rust 言語の使用を可能にするパッチが ARM によって公開されたことにも注目してください。

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

コメントを追加します