「Rust 1.31」リリース、後方互換性のない「Rust 2018」の最初のバージョンに

 Mozillaのプログラミング言語「Rust」開発チームは12月6日、最新版となる「Rust 1.31」を公開した。多くの変更が加えられた「Rust 2018」の最初のバージョンとなる。

 Rust 1.31は10月に公開されたRust 1.30に続く最新版。本バージョンでは後方互換性のない大きな変更が加えられており、新たに「Rust 2018」エディション(版)と呼ばれる。従来のエディションは「Rust 2015」と呼ばれており、Rust 2015で実装されたコードは従来通りRust 2018でもコンパイルできる。

 Rust 2015が安定性をテーマにしていたのに対し、Rust 2018では生産性にフォーカスした。作業グループはネットワークサービス、コマンドラインアプリケーション、WebAssembly、組み込みデバイスの4つが立ち上がり、それぞれの作業を盛り込んだ。

 ツールでは、「Visual Studio Code」や「IntelliJ」、「Atom」、「Sublime Text 3」、「Eclipse」など各種IDEサポートのほか、Rustコードのフォーマット化を行うrustfmt、リンターのclippyなどがサポートされている。Webサイトも新しくなった。CargoのCargo.tomlで、editionを2018と指定することで利用できる。

 機能面での大きな特徴は、non-lexical lifetimes(NLL)の導入とモジュールシステムの変更。NLLはコンパイラの変数や値に対する厳格なルールを設定できる仕組みで、ライフタイムの概念により借用チェッカーをスマートにした。これにより、条件によってはこれまでは拒否になっていた有効なコードを受け入れるようになったという。NLLはRust 2018のみで使用できる機能だが、今後Rust 2015にもバックポートする予定という。

 コードのインポートを管理するモジュールシステムは、extern crateが多くの場合で不要になる、#[macro_use]属性ではなくuseでマクロをインポートするなどの変更が加わり、簡素化を図った。初心者でもわかりやすくなったとしている。

 このほか、ライブラリ、Cargoなども強化されている。

 なおRust 2015モードも引き続きサポートされ、新機能の追加も行うという。デフォルトはRust 2015で、cargo fixを走らせてアップグレードが必要なところにRust 2018モードをオプトインできる。

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