検索
ニュース

Rust バージョン1.70.0、30以上のAPIが安定化パフォーマンスや安定性、使い勝手が向上

オープンソースのプログラミング言語「Rust」の新バージョン1.70.0がリリースされた。

Share
Tweet
LINE
Hatena

 オープンソースのプログラミング言語「Rust」を開発するRustプロジェクトは2023年6月1日(米国時間)、Rustの新バージョン1.70.0を発表した。

 Rust 1.70.0では、以下のような機能強化が行われた他、30以上のAPIが安定化された。

「sparse」が「crates.io」用の既定プロトコルに

 Rustのビルドツール兼パッケージ管理ツール「Cargo」の「sparse」プロトコルが、Rustの公式パッケージレジストリである「crates.io」のインデックスを読み込むためのプロトコルとして、既定で有効化されるようになった。これにより、このインデックス情報を取得する際のパフォーマンスが大幅に改善される。

 ただし、そのためには、https://index.crates.ioにアクセスできる必要がある。何らかの理由で、GitHubでホストされるgitインデックスを使用するという従来の既定の方法を継続する必要がある場合は、「registries.crates-io.protocol」構成設定を用いて、既定を変更できる。

共有データの1回限りの初期化を可能にする「OnceCell」と「OnceLock」

 共有データの1回限りの初期化のために、2つの新しい型が安定化された。その内訳は、「OnceCell」と、そのスレッドセーフな対応物である「OnceLock」だ。これらは、即座に構築することが望まれていない場合や、不可能かもしれない場合に使用できる。

「IsTerminal」が安定化

 新たに安定化されたトレイトである「IsTerminal」は、与えられたファイル記述子やハンドルが端末やTTYを表しているかどうかを判断する「is_terminal」という単一のメソッドを備えている。トレイトは、特定の型に存在し、他の型と共有できる機能について、Rustコンパイラに知らせるものだ。IsTerminalは、「atty」や「is-terminal」のような外部クレート(Rustのライブラリ)に存在した機能を標準化したものだ。一般的に、スクリプトで実行するか、対話モードで実行するかをプログラムが区別し、対話時に色や完全なTUI(ターミナルUI)を提供するために使用される。

デバッグ情報のレベルが名前で指定可能に

 コンパイラオプションの「-Codebuginfo」はこれまで、デバッグ情報の量を増やすために0〜2の数字しかサポートしていなかった。Cargoでは、開発およびテストプロファイルでは「2」、リリースおよびベンチプロファイルでは「0」が既定となっていた。こうしたデバッグレベルが名前で設定できるようになり、「none」(0)、「limited」(1)、「full」(2)に加え、「line-directives-only」「line-tables-only」という新しい2つのレベルも設定可能になった。

 line-tables-onlyレベルでは、デバッグ情報がファイル名と行番号のみに絞り込まれる。line-directives-onlyレベルは、NVPTXのプロファイリング用であり、他の用途には推奨されない。

「test」CLIで安定性を強制

 「#[test]」関数がコンパイルされると、実行ファイルは「test」クレートからコマンドラインインタフェース(CLI)を取得する。このCLIで使える多くのオプションの中には、Rustツールチェーンの他の多くのコマンドと同様に、まだ安定化されておらず、「-Zunstable-options」を指定する必要があるオプションが含まれている。

 これらのオプションは、ナイトリービルドでのみ許可されることを意図している。だが、これまでtestオプションでは、その制限は有効ではなく、他のビルドでも使用できた。Rust 1.70.0から、Rustの安定ビルドとβビルドは不安定なtestオプションを許可しなくなり、これらのオプションはドキュメント通り、ナイトリービルド専用になった。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る