Futureトレイトが安定扱いに、「Rust 1.36」が公開

 Mozillaのプログラミング言語Rust開発チームは7月4日、「Rust 1.36.0」を公開した。プロジェクトのWebサイトより入手できる。

 Rust 1.36は5月末に公開されたバージョン1.35に続く最新版。

 Futureトレイトが安定扱いとなった。Futureは非同期の処理を行うための仕組みで、将来的に得られる値をハンドリングできる。安定扱いとなったことで、将来的にasyncと.awaitのための準備を進めることができるとしている。

 allocクレートも安定扱いとなった。標準ライブラリはコアの機能を提供するcore、std、proc_macroなどのクレートで構成されており、stdはBox<T>のような型とOSの機能を提供するが、グローバルアロケーターとほかのOS機能が必要だった。1.36より、グローバルアロケーターに依存するstdの一部をallocクレートとして提供する。

 Rustの初期化チェックを迂回するmem::uninitialized関数に代わって、MaybeUninit<T>を使用するようになった。また、SwissTable設計に基づくhashbrownクレートに代わってHashMap<K, V>実装を導入した。インターフェイスは同じままで、高速かつメモリオーバーヘッドも少量で済むという。

 パッケージマネージャのCargoでは、「–offline」フラグが安定扱いとなった。依存性管理のアルゴリズムを変更してローカルにキャッシュされている依存性のみに用いるようにするもので、必要なクレートがオフラインで利用できず、ネットワークアクセスが必要になるとエラーを出す。cargo fetchコマンドを使うことで、オフラインの準備としてローカルにあるキャッシュに必要な依存性をダウンロードできるという。

 このほか、ライブラリではdbg!マクロで複数の引数をサポートするようになった。task::Waker、task::Pollなど、新しいAPIも多数安定扱いとなっている。

Rust
https://www.rust-lang.org/