Rustプロジェクト、crates.ioでの「非正規ダウンロード」のサポートを2023年11月20日に終了URLでハイフンとアンダースコアを区別せずに使える機能が無効に

Rustプロジェクトは、「crates.io」の非正規ダウンロード機能のサポートを2023年11月20日に終了する。

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

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

 Rustプロジェクトは2023年10月27日(米国時間、以下同)、「crates.io」における非正規ダウンロード機能のサポートを2023年11月20日に終了すると発表した。

 crates.ioは、Rustコミュニティーのためのクレート(Rustのライブラリ)のレジストリ。Rustプロジェクトで利用されるクレートの多くはcrates.ioで公開されている。

 非正規ダウンロードは、クレートが公開されているURLにハイフンやアンダースコアが含まれる場合に、ハイフンの代わりにアンダースコアを、あるいはアンダースコアの代わりにハイフンを指定しても、そのクレートをダウンロードできる機能。

 serde_deriveクレートは「https://crates.io/api/v1/crates/serde_derive/1.0.189/download」で公開されている。アンダースコアの代わりにハイフンを使用し、クレート名の一部に大文字を使用した「https://crates.io/api/v1/crates/SERDE-derive/1.0.189/download」でも、ダウンロードできる。

 なお、crates.ioでは、このようにserde_deriveクレートが既に存在する場合、serde-deriveクレートを公開することはできない。

非正規ダウンロードのサポートを打ち切る理由

 crates.ioチームは、クレートのダウンロードの信頼性とパフォーマンスを高めていく計画だが、非正規ダウンロードのリクエストをサポートしていると、この計画に支障が出る。crates.ioサーバが全てのダウンロードリクエストに対してデータベース検索を実行し、正規のクレート名を見つける必要があるためだ。正規のクレート名は、ダウンロードURLの構築に使用され、クライアントはそのURLにHTTPリダイレクトされる。

 crates.ioチームはパフォーマンス上の懸念に対処するため、少し前にキャッシュレイヤーを導入した。だが、全てのダウンロードリクエストがバックエンドサーバを経由することが依然として問題となっており、crates.ioの利用が現在のペースで増加すれば、この問題は緩和しそうもない。

 この問題に対処していく中で、非正規ダウンロードをサポートしなければならないことから、ダウンロードリクエストのためにCDN(コンテンツデリバリーネットワーク)を直接使用することもできない。そこでcrates.ioチームは、非正規ダウンロードリクエストのサポートを終了することを決めた。これにより、パフォーマンスと信頼性が大幅に向上すると見込んでいる。

非正規ダウンロードのサポート終了の影響は

 crates.ioチームによると、RustソフトウェアプロジェクトのCUIビルドツールである「cargo」は、常にパッケージインデックス内の正規のクレート名を使用し、対応するダウンロードURLを構築する。このため、crates.ioが非正規ダウンロードのサポートを打ち切っても、cargoは以前と全く同じように動作する。

 またcrates.ioのリクエストログから、以下のユーザーエージェントが非正規ダウンロードのサポートに依存していることが分かった。

  • cargo-binstall/1.1.2
  • Faraday v0.17.6
  • Go-http-client/2.0
  • GNU Guile
  • python-requests/2.31.0

 「cargo-binstall」は、クレートのバイナリをインストールするツールだ。メンテナーは今回の変更を既に認識しており、cargo-binstallの最近のバージョンがこの変更の影響を受けないことを確認している。

 crates.ioチームは、非正規ダウンロードに依存しているスクリプトでは、パッケージインデックス、データベースダンプ、またはcrates.io APIから得られる正規名を使用するように調整することを推奨している。どのデータソースが最適か分からない場合は、crates.ioデータアクセスページを参照することを推奨している。

 サポート終了までのスケジュールは次の通り。

  • 2023年11月20日〜:非正規ダウンロードのサポートを停止し、移行エラーメッセージを返し、同機能の利用者に移行の必要性を知らせる
  • 2023年12月18日〜:移行エラーメッセージの代わりに通常の404エラーを返す。これにより、crates.ioチームはデータベースクエリ(の一部)をなくせるようになる

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のメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。