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

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

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

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

主な革新:

  • Cargo パッケージ マネージャーと crates.io リポジトリは、リポジトリ内に存在するすべてのパッケージの利用可能なバージョンを反映するインデックスを操作する新しい方法を定義する Sparse プロトコルのサポートを安定させました。新しいプロトコルにより、crates.io の操作速度が大幅に向上し、リポジトリ内のパッケージ数のさらなる増加に伴うスケーリングの問題を解決できます。

    完全なインデックスのダウンロードによって生じる遅延を軽減するために、Sparse では、Git を使用してインデックスにアクセスする代わりに、特定のプロジェクトの依存関係をカバーする必要なインデックス データのみを HTTPS 経由で直接ダウンロードします。新しいサービス、index.crates.io は、インデックス データを提供するために使用されます。デフォルトでは、新しいプロトコルは Rust 1.70 ブランチで使用される予定であり、その前にそれを有効にするには、環境変数 "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" を設定するか、'protocol =' パラメーターを "[registries. crates-io]" .cargo/config.toml ファイルの「sparse」セクション。

  • 「pin!」マクロを追加しました。これにより、式「T」からその状態をローカルに固定して Pin<&mut T> 構造体を作成できます (Box::pin とは異なり、ヒープにメモリを割り当てませんが、バインドします)スタックレベルで)。
  • デフォルトのメモリ割り当てエラー ハンドラが提案されており、標準の alloc パッケージを使用するときに使用されます。 alloc (std なし) のみを有効にするアプリケーションは、メモリ割り当てが失敗したときに「panic!」ハンドラーを呼び出すようになります。これは、オプションで「#[panic_handler]」を使用してインターセプトできます。 std ライブラリを使用するプログラムはエラー情報を stderr に出力し続け、クラッシュします。
  • API の新しい部分は、安定化された特性のメソッドと実装を含め、安定化のカテゴリに移動されました。
    • {コア、標準}::ピン::ピン!
    • からの影響{f32,f64} の場合
    • std::path::MAIN_SEPARATOR_STR
    • PathBuf の impl DerefMut
  • 「const」属性は、定数の代わりに任意のコンテキストで使用できるかどうかを決定し、VecDeque::new 関数で使用されます。
  • Android プラットフォームで動作するには、少なくとも NDK r25 (API 19) が必要になります。サポートされる Android の最小バージョンは 4.4 (KitKat) に引き上げられました。
  • Sony PlayStation Vita プラットフォームに第 7 レベルのサポートが実装されました (armvXNUMX-sony-vita-newlibeabihf)。 XNUMX 番目のレベルには基本的なサポートが含まれますが、自動テスト、公式ビルドの公開、コードがビルド可能かどうかの確認は含まれません。

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

コメントを追加します