6.2.0 から 6.2.1 へのアップグレード
要点:サーバー側には何の変更もありません。 6.2.1 が存在するのは、2 つのクライアント crate——kevy-client と kevy-client-async——が crates.io 上で 2.2.0 のまま、5.x エンジンに対して組まれた状態で止まっていたからです。6.0.0 以降のすべての kevy リリースは、それらを 6.x として説明していました。サーバーを動かしている、言語バインディングを使っている、Rust からエンジンを組み込んでいる、のいずれであっても、することはありません。crates.io からこの 2 つのクライアント crate のどちらかに依存しているなら、1 行を書き換えます。
このリリースが存在する理由
- 2 つの crate は 3 回公開されて、一度も届いていませんでした。
kevy-clientとkevy-client-asyncは独自のバージョン系列(2.x)を持っていました。ワークスペースが 6.0.0 に移ったとき、ツリー内の manifest は兄弟 crate をすべて 6.x に固定しましたが、自身の番号は 2.2.0 のまま——API は何も変わっていなかったからです。cargo publishは既に存在するバージョンを拒み、リリースワークフローはその拒否を「もう済んでいる」と読みました。こうして 6.0.0、6.1.0、6.2.0 はそれぞれ 40 crate を出荷し、この 2 つを飛ばし、cargo add kevy-clientはkevy-embedded 5.4.1を引き込むクライアントを解決し続けました。気づいたのは利用者で、ゲートではありませんでした。
- いまはすべての crate がワークスペースのバージョンを持ちます。 この 2 つのクライアントと、ワークスペースの番号を継承せず手書きしていた 3 つの crate が
version.workspace = trueになりました。1 回の bump がすべてを動かし、バージョンゲートは独自のバージョンを宣言するワークスペースメンバーを拒みます。公開ループも「既に存在する」を鵜呑みにしません。crates.io が保持する manifest とツリーがアップロードするはずの manifest を項目ごとに比較し、異なればリリースを失敗させます。
そのまま引き継がれるもの
- ワイヤ。 RESP2 と RESP3 の応答は 6.2.0 とバイト単位で同一です。汎用の Redis クライアントも kevy 自身のクライアントも、サーバーに対しては何も必要ありません。
- データディレクトリ。 6.2.1 は 6.2.0 のコードに新しい番号を付けたものです。AOF、スナップショット、value log、各種 checkpoint はこれまでどおり、双方向に開けます。
- 他のすべての crate とバインディング。 6.2.0 から 6.2.1 へ、コードの変更なしに移ります。番号を上げるのは、1 つの数字がすべての成果物で 1 つのリリースを指すようにするためです。
- クライアント API。
kevy-client 6.2.1はkevy-client 2.2.0の API そのもので、依存先がこの changelog の説明するエンジンに向いただけです。呼び出しの変更はありません。
kevy-client または kevy-client-async に依存している場合
要求バージョンをエンジンのメジャーに合わせます:
[dependencies]
kevy-client = "6" # 以前は "2"
kevy-client-async = { version = "6", features = ["tokio"] } # 以前は "2""2" と書かれた要求は 2.2.0 に解決され続け、それは kevy-embedded ^5.0 を固定しているので、5.4.1 のエンジンがあなたのバイナリに組み込まれます。あなたの crate が kevy-resp 6 や kevy-embedded 6 にも直接依存しているなら、それぞれが 2 部ずつ入り、継ぎ目で型エラーになります——これが、この件の発端となった報告が私たちに届いた理由です。
推奨手順
要求を書き換えたら、依存グラフにエンジンが 1 つしかないことを cargo に証明させます:
cargo update -p kevy-client -p kevy-client-async
cargo tree -i kevy-embedded # ちょうど 1 行、6.2.12 つ目のコマンドが 2 つのバージョンを表示するなら、グラフ内のほかの何かがまだ 5.x エンジンを要求しています。cargo tree -i kevy-embedded@5.4.1 がその名前を示します。