Rust 1.22(および1.22.1)リリース

Rustチームは、Rustの2つの新しいバージョン1.22.0と1.22.1を発表します。 Rustは、セキュリティ、速度、および並列コード実行を目的としたシステムプログラミング言語です。


2つのバージョンを待ちますか? 最後に、バージョン1.22.0の新しいmacOS High Sierra問題発見し、さまざまな理由でバージョン1.22.0を通常どおりリリースしましたが、修正された1.22.1もリリースしました。 エラーはrustcではなくCargoパッケージマネージャーで検出され、macOS High Sierraユーザーのみに影響しました。

Rustの以前のバージョンがインストールされている場合は、アップグレードするだけです:


 $ rustup update stable 

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


安定バージョン1.22.0および1.22.1に含まれるもの


このバージョンで多くの人が待ち望んでいた最も重要な変更: ?できます ? Option<T> ! 約1年前、 Rust 1.13で演算子を導入しました? Result<T, E>ます。 それ以来、オペレーターがどのくらい離れているかについて議論が続けられてい? 停止する必要があります: Resultためだけに滞在する必要がありますか? ユーザーに拡張を許可する必要がありますか? Option<T>で使用する必要がありますか?


Rust 1.22では、演算子の主な使用法は? Option<T>安定化されました。 これで、このコードはコンパイルされます:


 fn try_option_some() -> Option<u8> { let val = Some(1)?; Some(val) } assert_eq!(try_option_some(), Some(1)); fn try_option_none() -> Option<u8> { let val = None?; Some(val) } assert_eq!(try_option_none(), None); 

ただし、この機能はまだ少し制限されています。 たとえば、 ResultOptionを演算子と組み合わせたコードを書くことはできません? 1つの機能で。 これは後で実装されます-Rustの夜バージョンでは、すでにそのような機会があります。 将来のバージョンでこれについてのニュースを期待してください。


Dropを実装する型は constおよびstatic const 。 例:


 struct Foo { a: u32 } impl Drop for Foo { fn drop(&mut self) {} } const F: Foo = Foo { a : 0 }; static S: Foo = Foo { a : 0 }; 

この変更自体はあまり有用ではありませんが、アセンブリ中にコードを実行する能力が向上するにつれて、 constおよびstaticで使用できる型が増えstatic


また、いくつかの素敵な小さなものが追加されました:


最近の2つコンパイラの変更により 、デバッグモードでのビルド速度が向上するはずです。 正確な数字はありませんが、いつものように、アセンブリ時間の短縮は私たちの優先事項の1つです。


T op= &Tは、プリミティブ型動作するようになりました。例を使用すると簡単に表示できます。


 let mut x = 2; let y = &8; //    : x += y; 

以前は、リンクを間接参照するにはx += *yと記述する必要がありました。


MacOSはバックトレースを改善しました


これで、たとえばRustdoc compile-failテストを compile-failでき compile-fail


 /// ```compile_fail /// let x = 5; /// x += 2; //   ! /// ``` 

追加のRust機能により、以前はアセンブルされていなかったコードが動作する可能性があるため、このようなテストの信頼性が低いことに注意してください。 たとえば、どうでした? :コードはRust 1.21ではコンパイルされませんでしたが、Rust 1.22で動作するようになり、テストがクラッシュします。


最後に、 le32-unknown-nacl le32-unknown-nacl 。 Google自身は、PNaClが WebAssemblyをサポートするためのすべての努力を指示するために廃止されると宣言しました 。 WebAssemblyでRustコードをアセンブルできるようになり、Rustの新しいリリースでのサポートの開発に関するニュースを期待できます。


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


標準ライブラリの安定化


このリリースでは、いくつかの新しいAPIが安定化されています。



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


貨物機能


ユーザーに大きなサンプルを表示したい場合、Cargoは、 main.rs内にmain.rsを含むサブディレクトリを作成することにより、いくつかのファイルからサンプルを作成することができます


Cargoにgitリポジトリローカルでベンダーする機能が追加れました


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


開発者1.22.0および1.22.1


多くの人々がRust 1.22の開発に参加しました。 皆さん一人一人なしでは、これを達成できませんでした。 よろしくお願いします! (そして再び感謝!


翻訳者: @ BORN2LOSEおよびozkriff 翻訳を手伝っくれたvitvakatuに感謝



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


All Articles