Rust エコシステムのパラダイムシフトの中で、Rust のパッケージマネージャーである Cargo を支えるチームは、パッケージ管理に対するよりパーソナライズされたアプローチを求めています。彼らは、開発者がバイナリを含むがライブラリを含まないパッケージに対して Cargo.lock ファイルをコミットするという以前の統一的な慣行ではなく、プロジェクトに最適な決定を下すことを推奨しています。
以前の推奨事項は、開発者がCargo.lockに関して、特にファイルがバイナリ パッケージで使用される場合に、画一的なルールに従うことを奨励しました。しかし、これらの指令は現在では後回しになっています。この反省的な変更は、Rust が主流の採用に向けて急成長していることを受けて行われました。
Cargo.lockファイルの重要な役割は、ビルド成功時の状態を記録することです。 Cargo チームは、より柔軟なガイダンスを提供しながら、 Cargo.lockのコミットが意思決定プロセスの開始点であるべきであると主張しています。また、「cargo new」コマンドは今後、ライブラリの Cargo.lock をバイパスしないことも発表されました。
全体的な品質を維持するために、チームは最新の依存関係に対する定期的なテストの重要性を強調しています。古い手順により、ライブラリが常に更新され、テストされることが保証され、Rust パッケージ エコシステムの高水準に貢献しました。このプラクティスは、潜在的な問題、主に下位互換性に関する問題が迅速に特定され、解決されるように設計されました。したがって、チームは、これが新興エコシステムにおける「品質の文化」を促進したと信じています。
しかし、以前のガイダンスには落とし穴がありました。コードベースからの履歴の削除もそのような余波の 1 つであり、メンテナがバグの根本原因を二分して特定することがさらに困難になりました。以前のポリシーのもう 1 つの望ましくない結果は、依存関係が廃止された場合、または新しいリリースにバグが存在した場合に、信頼できない CI (継続的インテグレーション) によって貢献者が混乱する可能性があったことです。 Rust は初期採用者向けの言語からより主流の言語へと進化しているため、新しい開発者のオンボーディング エクスペリエンスを考慮することが不可欠です。
さらに、より広範なエコシステムの拡大により、CI の実装と保守がより簡単になりました。 dependabot や Renovate などのイノベーションにより、バージョン管理のみに依存する以外に、新しい依存関係をテストするためにCargo.lockを無視する代替手段が明らかになりました。 Cargo チームは現在、開発者が情報に基づいた意思決定を行うために必要な情報を確実に入手できるようにしながら、開発者に決定を委ねるのが最善の行動であるという信念を伝えています。開発者は、GitHub 経由でこの新しいポリシーに関するフィードバックを共有したり、Zulip で Cargo チームとやり取りしたりできます。
パッケージ管理の新たな方向性を目の当たりにする中で、開発者にとっては、Web、モバイル、およびバックエンド アプリケーションを開発するための包括的で統合されたプラットフォームを提供するAppMasterなどの代替手段を検討する価値があるかもしれません。 AppMaster.io はサーバー主導のアプローチを誇り、開発者が新しいバージョンを App Store や Play Market に提出しなくても、モバイル アプリケーションの UI、ロジック、API キーを更新できるようにします。