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

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

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

メイン イノベーション:

  • Rustc コンパイラ内 提供された コードプロファイリング結果に基づく最適化のサポート (PGO、プロファイルガイドに基づく最適化)、
    プログラムの実行中に蓄積された統計の分析に基づいて、より最適なコードを生成できます。 プロファイルを生成するには、「-C profile-generate」フラグが提供され、アセンブル中にプロファイルを使用するには、「-C profile-use」フラグが提供されます(最初、プログラムは最初のフラグでアセンブルされ、実行され、作成後に実行されます)プロファイル、XNUMX 番目のフラグで再構築されます);

  • コンソールアプリケーションを素早くテストするのに便利な「cargo run」コマンドを実行する際、パッケージ内に複数の実行可能ファイルがある場合に、実行する実行可能ファイルを自動的に選択する機能が追加されました。 実行されるデフォルトのファイルは、パッケージパラメータを含む [package] セクションのdefault-run ディレクティブによって決定されます。これにより、「cargo run」を実行するたびに「-bin」フラグを使用してファイル名を明示的に指定する必要がなくなります。
  • 以前は次のように指定されていた「cargo Vendor」コマンド 別パッケージ。 このコマンドを使用すると、依存関係のローカル コピーを使用して作業を整理できます。「cargo Vendor」を実行すると、プロジェクトの依存関係のすべてのソース コードが crates.io からローカル ディレクトリにダウンロードされ、crate にアクセスせずに作業に使用できます。 io (コマンドの実行後、ビルドにディレクトリを使用するように構成を変更するためのヒントが表示されます)。 この機能は、リリースですべての依存関係を XNUMX つのアーカイブにパッケージ化して、rustc コンパイラーの配信を整理するためにすでに使用されています。
  • 型エイリアスを使用して enum オプションへのリンクを作成できるようになりました (たとえば、関数「fn increment_or_zero(x: ByteOption)」の本体では、「ByteOption::None => 0」を指定できます)、型計算構造 (‹ MyType‹.. ››::option => N) または Self アクセス (ブロック c &self で「Self::Quarter => 25」を指定できます)。
  • マクロに名前のない定数を作成する機能が追加されました。 「const」で要素名を定義する代わりに、「_」文字を使用して非反復識別子を動的に選択できるようになり、マクロを再度呼び出すときの名前の競合を回避できます。
  • アラインメントを使用して AlignN‹T› 構造体を定義し、AlignN‹MyEnum› を使用するのと同様の構文を使用して、列挙型で "#[repr(align(N))" 属性を使用する機能を追加しました。
  • BufReader::buffer、BufWriter::buffer、および BufWriter::buffer などの API の新しい部分が安定したカテゴリに移動されました。
    セル::from_mut、
    Cell::as_slice_of_cells、
    DoubleEndedIterator::nth_back、
    オプション::xor
    {i,u}{8,16,64,128,size}::reverse_bits、Wrapping::reverse_bits および
    スライス::コピー内。

さらに、注目できるのは、 テストの開始 プロジェクト 非同期標準これは、Rust 標準ライブラリの非同期バリアント (すべてのインターフェイスが非同期バージョンで提供され、async/await 構文で使用できるようになっている std ライブラリのポート) を提供します。

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

コメントを追加します