Rust バージョン1.68.0、気になる更新内容をチェックローカルピンの構築、デフォルトの割り当てエラーハンドラーなど

オープンソースのプログラミング言語「Rust」を開発するRustプロジェクトは、Rustの新バージョン1.68.0を発表した。

» 2023年04月04日 08時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

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

1.68.0安定版に含まれるもの

Cargoの“sparse”レジストリプロトコル

 Cargoの"sparse"レジストリプロトコルは、crates.ioのプライマリレジストリで公開されているものに対して、インフラとともにcrateのインデックスを読むために安定化している。以前のgitプロトコル(デフォルトのもの)は、レジストリで利用可能な全てのクレートをインデックス化したリポジトリをクローンしていたが、スケーリングが限界に近づき、リポジトリの更新中に遅延が発生するようになった。新しいプロトコルは、実際に使用するクレートのサブセットに関する情報のみをダウンロードするため、crates.ioにアクセスする際の性能改善が期待できる。sparseプロトコルは1.70.0のリリースでcrates.ioのデフォルトになることが予定されている。

 crates.ioでsparseプロトコルを使用するには、環境変数

CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse

 を設定するか、.cargo/config.tomlファイルを以下のコードで追加する。

[registries.crates-io]
protocol = "sparse"

ローカルピンの構築

 新しいpin!マクロは、T型からPin<&mut T>を構築し、匿名でローカル状態をキャプチャする。これはしばしば「スタックピニング(stack-pinning)」と呼ばれるが、この「スタック」とは、async fnやblockでキャプチャされた状態のことも指す。このマクロは、tokio::pin!のような幾つかのクレートに似ているが、標準ライブラリは、より表現的なマクロを実現するために、Pinの内部と一時的なライフタイム延長を利用することが可能だ。

デフォルトの割り当てエラーハンドラー

Rustにおいて、Box::newやVec::pushのようなAPIで割り当てが失敗した場合、失敗を示す方法がないため、何らかの異なる実行パスを取る必要がある。stdクレートを使用する場合、プログラムはstderrに出力され、中止する。Rust1.68.0以降、stdを含むバイナリはこの動作を維持する。stdを含まないバイナリ(allocのみを含む)は、割り当て失敗時にpanic!を発生させる。必要に応じ#[panic_handler]を介してさらに調整できる。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。