Rust 1.33リリース

Rust開発チームは、Rustの新しいバージョン1.33.0のリリースをお知らせします。 Rustは、誰もが信頼できる効率的なソフトウェアを作成できるようにするプログラミング言語です。


rustupを使用して以前のバージョンのRustがインストールされているrustup 、Rustをバージョン1.33.0にアップグレードするには、次のrustupを実行するだけです。


 $ rustup update stable 

rustupまだインストールしていない場合は、当社のWebサイトの対応するページからインストールできます。 Rust 1.33.0の詳細なリリースノートは GitHubで入手できます。


安定バージョン1.33.0に含まれるもの


このリリースの主要な改善: const fn機能の大幅な拡張と新しいPin APIの安定化。


const fn拡張する


const fnより多くのことができるようになりました



これで、「const fn」から「const unsafe fn」を呼び出すことができます。次に例を示します。


 const unsafe fn foo() -> i32 { 5 } const fn bar() -> i32 { unsafe { foo() } } 

これらの改善により、標準ライブラリの多数の関数に定数を宣言することが可能になりました。 それらは、ライブラリセクションに以下にリストされています。


ピンAPI


このリリースでは、言語に新しいメカニズムが導入され、導入されました タイプstd ::ピン::ピンおよびマーカータイプUnpin 。 主なアイデアは、モジュールのドキュメント「std :: pin」で詳細説明さいます

オブジェクトの移動を禁止すると便利な場合があります。 メモリ内のアドレスの不変性を保証します。 この機能を使用する主なシナリオは、自己参照構造です。このようなオブジェクトを移動すると無効なポインターが発生し、未定義の動作(UB)が発生する可能性があるためです。

Pin<P>は、タイプPポインターによって参照されるオブジェクトがメモリ内の固定位置を持つことを保証します。 彼は動かせず、彼の記憶は解放されません。 このような値は「固定」と呼ばれます。

このメカニズムは主にライブラリの作成者によって使用されることが予想されるため、ここでは詳細を詳しく説明しません(上記のリンクのドキュメントに記載されています)。 ただし、このAPIの安定化は、すべてのRustユーザーにとって重要なイベントです。なぜなら、それは非常に期待されているasync / awaitへの重要なステップだからです。 この方向の残りの作業のステータスは、 areweasyncyet.rsで監視できます。


「_」としてインポート


これで、エンティティを "_"としてインポートできます 。 これにより、現在のネームスペースに名前を入力せずに、特性実装をインポートできます。次に例を示します。


 use std::io::Read as _; //     : pub trait Read {} 

詳細については、リリースノートを参照してください。


標準ライブラリの安定化


一定になったすべてのリストを次に示します。



さらに、次のAPIが安定化されます。



詳細については、リリースノートを参照してください。


貨物の強化


最初のビルド中にファイルの1つが変更された場合、Cargoはクレートを再構築します。


詳細については、リリースノートを参照してください。


Crates.io


以前に発表したように 、このリリースからcrates.ioには、クレートを投稿するための確認メールアドレスが必要になります。 UTC 2019-03-01 00:00 UTCから、 cargo publishの実行は、確認済みメールのないアカウントで失敗します。


これは、 DMCA要件を満たすために必要です。 貨物が最近のリリースで書いたこのことに関する警告に気づかなかった場合は、 crates.io/meにアクセスして、メールを示し確認してください。 この郵送先住所は決して公開されず、crates.ioの直接の機能にのみ使用されます。


開発者1.33.0


多くの人々が一緒になってRust 1.33を作成しました。 皆さん一人一人がいなければ、作業を完了できませんでした。 よろしくお願いします!



Source: https://habr.com/ru/post/J442244/


All Articles