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

公開済み システムプログラミング言語のリリース 錆1.44, Mozilla プロジェクトによって設立されました。 この言語はメモリの安全性に重点を置き、自動メモリ管理を提供し、ガベージ コレクタやガベージ コレクタを使用せずに高いタスクの並列処理を実現するツールを提供します。 ランタイム.

Rust の自動メモリ管理は、ポインタ操作時のエラーを排除し、解放後のメモリ領域へのアクセス、null ポインタの逆参照、バッファ オーバーランなど、低レベルのメモリ操作から生じる問題を防ぎます。 プロジェクトごとにライブラリを配布し、確実にアセンブリし、依存関係を管理するためのパッケージ マネージャーが開発されています。 貨物を使用すると、プログラムに必要なライブラリをワンクリックで取得できます。 リポジトリはライブラリをホストするためにサポートされています crates.io.

新しいリリースの発表文の中で、Rust開発者は政治に関与し、警察暴力に対する抗議活動参加者との連帯のしるしとしてRust 1.44の変更点の完全なレビューを公開することをきっぱりと拒否し、この問題がより重要であることを示している。技術的な知識の交換よりも。基本 イノベーション:

  • Cargo パッケージ マネージャーには、ツリー状の依存関係グラフを表示する「cargo Tree」コマンドが統合されています。また、同じパッケージの異なるバージョンの依存関係を評価できるようにするオプション「-duplicates」(「cargo Tree -d」) も追加されました。

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    §── アンモニア v3.0.0
    │ §── html5ever v0.24.0
    │ │ §── ログ v0.4.8
    │ │ │ └─ cfg-if v0.1.9
    │ │ §── mac v0.1.1
    │ │ ━─ markup5ever v0.9.0
    │ │ §── ログ v0.4.8 (*)
    │ │ §── phf v0.7.24
    │ │ │ └─ phf_shared v0.7.24
    │ │ │ §── サイファッシャー v0.2.3
    │ │ │ └─ ユニケース v1.4.2
    │ │ │ [ビルド依存関係] │ │ │ └─ version_check v0.1.5
    ...

  • std (「#![no_std]」) にバインドされていないアプリケーションの場合、非同期プログラミング手法のサポートは、「async」関数、async move { ... } ブロック、および「.await」演算子に基づいて実装されます。ノンブロッキング ハンドラーのメイン コマンド フローの作成を簡素化します。
  • 拡張可能なモジュール階層定義スキームのサポートがパーサーに追加されました。たとえば、次の構成では、モジュール「foo/bar/baz.rs」が実際に存在しないにもかかわらず、エラーは生成されません (この構成は依然として意味的に無効であり、エラーが発生する可能性がありますが、変更は次の場所で確認および解析できます)マクロと条件付きコンパイル レベル):

    #[cfg(FALSE)] モッドフー{
    モッドバー{
    モッドバズ。
    }
    }

  • Rustc コンパイラには、インクリメンタル モードで「-C codegen-units」フラグを使用する機能が追加されました。 catch_unwind の実装は、巻き戻しプロセスが無効になって例外がスローされない場合でもパフォーマンスに影響を与えないように再加工されました。
  • レベル 64 のサポートは、aarch64-unknown-none、aarch64-unknown-none-softfloat、arm86-apple-tvos、および x64_XNUMX-apple-tvos プラットフォームに提供されています。 XNUMX 番目のレベルには基本的なサポートが含まれますが、自動テストや公式ビルドの公開は含まれません。
  • API の新しい部分は、安定化されたものを含む安定化カテゴリに移されました。
    PathBuf::with_capacity、
    PathBuf::容量、
    PathBuf::clear、
    PathBuf::reserve、
    PathBuf::reserve_exact、
    PathBuf::shrink_to_fit、
    {f32|f64}::to_int_unchecked、
    レイアウト::align_to、
    レイアウト::pad_to_align、
    レイアウト::配列と
    レイアウト::拡張。

  • 標準ライブラリの拡張機能:
    • Vec::new() に直接反映される特別な "vec![]" バリアントを追加し、定数の代わりにコンテキストで "vec![]" を使用できるようにしました。
    • Convert::Infallible にトレイトの実装 (impl) が追加されました。 ハッシュ.
    • OsString はスマート ポインターを実装します デレフムト и インデックスマット、「&mut OsStr」を返します。
    • Unicode 13 のサポートが追加されました。
    • 文字列で実装 から.
    • IoSlice はトレイトを実装します コピー.
    • Vec は From。
    • proc_macro::LexError は fmt::Display と Error を実装します。
  • 「const」属性は、定数の代わりに任意のコンテキストで使用できるかどうかを決定し、すべての整数型の from_le_bytes、to_le_bytes、from_be_bytes、to_be_bytes、from_ne_bytes、および to_ne_bytes メソッドで使用されます。
  • Windows 上の GNU プラットフォーム向けに、「.lib」ではなく「.a」形式で静的ライブラリを生成するためのサポートが追加されました。
  • LLVM の最小要件は LLVM バージョン 8 に引き上げられました。

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

コメントを追加します