Rustのバージョニングの根本的な問題は、0.3.5が0.3.6とは互換性があるけど、0.4.0や1.0.0とは互換性がないことだね。メジャーバージョンが0のとき、マイナーバージョンがメジャーの役割を果たして、パッチがマイナーの役割を果たす。だから、パッケージは0.xバージョンを繰り返し、最終的に「安定した」バージョンに到達するんだ。もしバージョン0.7が正しいAPIに達して、後方互換性のない変更が必要なかったら、1.0をリリースするのはユーザーにとってメジャーバージョンの変更と同じくらい混乱を招くことになるし、バージョンセマンティクスを通じてそれが破壊的な変更だと伝えることになる。Semverは、バージョン0.xは初期開発用で、安定性の保証がまったくないことを宣言してる。これはバージョニングシステムにとって正しいセマンティクスだけど、Cargoはこの部分を守ってないんだ。0.xサイクル全体で安定性の保証を提供すると、プロジェクトが0.xに閉じ込められることになる。これがCargoに対する俺の最大の不満の一つだ。でもRustの人たちはこれを普遍的に問題視してないみたいだから、修正されることはないと思う。