AI-Studio/runtime/patches/README.md

37 lines
1.7 KiB
Markdown
Raw Normal View History

# Runtime Patches
This directory documents temporary patches for third-party Rust dependencies.
## permutation_iterator
`qdrant-edge` depends on `permutation_iterator 0.1.2`, and that crate has seen no release since
2019. Its published version pulls in an outdated `rand` line, which drags a second copy of the
whole `rand` family into our dependency tree: `rand 0.7.3`, `rand_core 0.5.1`, `rand_chacha 0.2`,
`rand_hc`, `getrandom 0.1.16`, `wasi 0.9` and `cfg-if 0.1`, next to the current ones everything
else uses.
The fork `SommerEngineering/permutation-iterator-rs` is the published 0.1.2 with `rand` raised to
0.8, so it still satisfies what `qdrant-edge` asks for. AI Studio pins it in `runtime/Cargo.toml`:
```toml
[patch.crates-io]
permutation_iterator = { git = "https://github.com/SommerEngineering/permutation-iterator-rs.git", rev = "..." }
```
The same change was offered upstream in
[asimihsan/permutation-iterator-rs#14](https://github.com/asimihsan/permutation-iterator-rs/pull/14),
where it has been waiting since 2021. This is tree hygiene, not a build failure: without the patch
the runtime still builds, it just carries the old `rand` family along.
### When this patch can go
Either of these is enough, and both are worth a look whenever `qdrant-edge` is updated:
- crates.io carries a `permutation_iterator` newer than 0.1.2 which uses a current `rand`. Then the
`[patch.crates-io]` entry goes, and `qdrant-edge`'s own requirement decides the version.
- `qdrant-edge` stops depending on `permutation_iterator` at all. Check with
`cargo tree -i permutation_iterator` after the update.
Afterward, `grep 'name = "rand"' -A 2 runtime/Cargo.lock` must not show a 0.7 version anymore.
`SommerEngineering/permutation-iterator-rs` can then be deleted.