Rustプロジェクトは、「crates.io」の非正規ダウンロード機能のサポートを2023年11月20日に終了する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
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」は、クレートのバイナリをインストールするツールだ。メンテナーは今回の変更を既に認識しており、cargo-binstallの最近のバージョンがこの変更の影響を受けないことを確認している。
crates.ioチームは、非正規ダウンロードに依存しているスクリプトでは、パッケージインデックス、データベースダンプ、またはcrates.io APIから得られる正規名を使用するように調整することを推奨している。どのデータソースが最適か分からない場合は、crates.ioデータアクセスページを参照することを推奨している。
サポート終了までのスケジュールは次の通り。
Copyright © ITmedia, Inc. All Rights Reserved.