Bump deps: pyo3 0.22→0.28, bincode 1→2, lru, uuid, assert_cmd - #184
Merged
Conversation
Combined dependency upgrade addressing #172, #173, #174, #175, #176. pyo3 0.22 → 0.28: - `PyBytes::new_bound` / `PyDict::new_bound` / `PyList::new_bound` / `PyList::empty_bound` → unsuffixed `new` / `empty` (Bound is now the default). `PyList::new` is now fallible (returns `PyResult`), so call sites add `?`. - `py.allow_threads(..)` → `py.detach(..)` and `Python::with_gil(..)` → `Python::attach(..)` (0.28 rename). - `value.into_py(py)` → `value.into_py_any(py).unwrap()` via the new `IntoPyObjectExt` trait. - `obj.downcast::<T>()` → `obj.cast::<T>()` on `&Bound<PyAny>`. - Five `#[pyclass]` types that derive `Clone` opt-in to the legacy `FromPyObject` derive via `from_py_object` to avoid the 0.28 deprecation warning. bincode 1.3 → 2.0: - Dependabot proposed 3.0.0, which is an xkcd-2347 placeholder crate (`compile_error!`). Targeted 2.0 instead — the real latest stable. - Added thin `crate::serde_bincode` module wrapping `bincode::serde::encode_to_vec` / `decode_from_slice` with `bincode::config::legacy()` so the on-disk format stays byte-compatible with what 1.3 produced (git blobs, RocksDB rows, and proximity index snapshots written by older versions still round-trip). - `bincode::Error` is gone in 2.x. `GitKvError::SerializationError` splits into `SerializationEncodeError(EncodeError)` and `SerializationDecodeError(DecodeError)`; `StorageError::Serialization` likewise splits into `SerializationEncode` / `SerializationDecode`. lru 0.16 → 0.18, uuid 1.0 → 1.23, assert_cmd 2.0 → 2.2: drop-in. Verified: cargo build --all, cargo clippy with each feature flag set (default / +rocksdb_storage +proximity +proximity_text / python / python +proximity +proximity_text +rocksdb_storage), and the full `git sql` and `git sql rocksdb_storage proximity proximity_text` test suites all pass. maturin build with `python sql` produces a working wheel that round-trips basic ops; 21 of the 22 collected pre-rocksdb Python tests pass (the 1 setup error in test_sql is an unrelated pre-existing missing `git init` in the temp dir).
This was referenced May 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Combined dependency upgrade that supersedes the open Dependabot PRs:
3.0.02.0; see note below)What changed
pyo3 0.22 → 0.28
PyBytes::new_bound/PyDict::new_bound/PyList::new_bound/PyList::empty_bound→ unsuffixednew/empty(theBoundvariants became the default).PyList::newis now fallible (returnsPyResult), so call sites add?.py.allow_threads(..)→py.detach(..)andPython::with_gil(..)→Python::attach(..)(0.28 rename).value.into_py(py)→value.into_py_any(py).unwrap()via the newIntoPyObjectExttrait.obj.downcast::<T>()→obj.cast::<T>()on&Bound<PyAny>.#[pyclass]types that deriveCloneopt in to the legacyFromPyObjectderive viafrom_py_objectto silence the 0.28 deprecation warning.bincode 1.3.3 → 2.0
Note: Dependabot's #173 proposed
bincode 3.0.0, but that release is an xkcd-2347 placeholder crate (compile_error!("https://xkcd.com/2347/");) — not a real release. This PR targetsbincode 2.0.1, the actual latest stable.crate::serde_bincodehelper module wrapsbincode::serde::encode_to_vec/decode_from_slicewithbincode::config::legacy(), preserving byte-level wire compatibility with bincode 1.3. Existing git blobs, RocksDB rows, and proximity index snapshots written by older versions still round-trip.bincode::Erroris gone in 2.x.GitKvError::SerializationErrorsplits intoSerializationEncodeError(EncodeError)/SerializationDecodeError(DecodeError);StorageError::Serializationlikewise splits intoSerializationEncode/SerializationDecode.lru 0.16 → 0.18, uuid 1.0 → 1.23, assert_cmd 2.0 → 2.2
Drop-in — no code changes needed.
Test plan
cargo build --allcleancargo clippy --features "git sql"cleancargo clippy --features "git sql rocksdb_storage proximity proximity_text"cleancargo clippy --features "python proximity proximity_text rocksdb_storage"cleancargo fmt --all -- --checkcleancargo test --features "git sql"— 225 tests pass, 0 failedcargo test --features "git sql rocksdb_storage proximity proximity_text"— 363 tests pass, 0 failedmaturin build --release --features "python sql"produces a working wheelProllyTree.insert/findround-trip workspytest python/tests/(without rocksdb-gated tests) — 21 of 22 collected tests pass; the 1 setup error intest_sql.pyis pre-existing (test creates atempfile.mkdtemp()and callsProllySQLStore(dir)withoutgit initfirst — fails onmainas well).