Rust 1.6のお知らせ

2016年はこんにちは! Rustの今年最初のリリースである1.6を発表できることを嬉しく思います。 Rustは、メモリ、速度、およびコードの並列実行による安全な作業を目的としたシステムプログラミング言語です。

いつものように、サイトの対応するページからRust 1.6インストールできます。また、Github でバージョン1.6の詳細な変更リストを確認できます。 このリリースには、1,100個のパッチが含まれています。

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


このリリースには、いくつかのマイナーな改善、1つの大きな革新、およびCrates.ioへの変更が含まれています。

Libcoreの安定化


1.6での最大の革新は、 libcoreライブラリの安定化です。 標準のRustライブラリは、小さなベースlibcoreライブラリと、 libstd上に構築された完全な標準libstdライブラリの2つの層で構成されています。 libcore自体libcore完全にプラットフォームに依存せず、いくつかの外部関数を定義する必要があります。 完全なlibstdライブラリlibstd基づいてlibcore 、メモリ割り当て、I / O、およびマルチスレッドのサポートを追加します。 組み込み環境でRustを使用する場合、およびオペレーティングシステムを記述する場合、多くの場合libstd破棄され、 libstdのみlibcoreます。

libcore安定化は、Rustの安定バージョンでlibcoreレベルのコードを記述できるようにするための重要なステップです。 ただし、作業はまだ完了していません。 安定化により、ライブラリのエコシステムがlibcore中心に成長できるようになりますが、 アプリケーションでのその使用はまだ完全にはサポートされていません。 今後のリリースでこの分野からのニュースを期待してください。

ライブラリの安定化


1.6では、約30のライブラリ関数とメソッドが安定化されています。 最も注目すべき改善点は次のとおりです。

コレクションのdrain()関数のファミリー。 これらのメソッドを使用すると、アイテムが配置されているメモリを保持しながら、コレクションからアイテムを移動できるため、場合によってはメモリ割り当ての必要性が軽減されます。

標準ライブラリのタイプ間、主に整数と浮動小数点数の間で変換するためのFrom特性のいくつかの実装。

そして最後に、 Vec::extend_from_slice()メソッド、以前はpush_all()として知られていpush_all() 。 より一般的なextend()メソッドよりも大幅に高速です。

変更点詳細リストもご覧ください。

依存関係バージョンの代わりにCrates.ioでアスタリスクを使用することは禁止されています


Crates.ioでコンテナーをサポートしている場合、警告に既に気付いているかもしれません。新しいコンテナーは、依存関係のバージョン番号として*テンプレートを使用できなくなりました。 つまり、これはもうできません。

 [dependencies] regex = "*" 

代わりに、 semverコンテナからの多くのバージョン制限( ^~または= ~いずれかを使用して、 特定のバージョンまたはバージョンの範囲を指定する必要があります。

アスタリスクは、この依存関係の任意のバージョンで作業できることを意味します。 おそらくこれは真実ではなく、エコシステムの互換性に関する不必要な問題を追加するだけです。 Crates.ioでコンテナを公開する際に、アスタリスクをバージョンとして禁止することに関する警告がかなり長い間表示されていましたが、今ではそれが本当の間違いになります。

翻訳者から


defuzRevertisD101101 、そしてロシア語を話すRustコミュニティ全体の翻訳への支援に感謝します。

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


All Articles