Skip to content

the crate says it builds on Rust 1.74 and has not for some time - #10

Merged
bjmeetsfo merged 3 commits into
mainfrom
fix/state-the-rust-version-the-build-actually-needs
Aug 27, 2026
Merged

the crate says it builds on Rust 1.74 and has not for some time#10
bjmeetsfo merged 3 commits into
mainfrom
fix/state-the-rust-version-the-build-actually-needs

Conversation

@bjmeetsfo

Copy link
Copy Markdown
Collaborator

rust-version, the README badge, the README text and the CI job all say 1.74. A default build has
needed considerably more than that since the RocksDB bump, so the number is not a floor any more,
it is a claim that fails for the people most likely to trust it -- someone on an older toolchain
who reads the badge, installs the crate, and gets a resolver error instead of a build.

What the resolved tree actually requires, highest first:

1.88.0   rocksdb 0.25.0
1.88.0   librocksdb-sys 0.19.0+11.8.1
1.77     rustc-hash 2.1.3          (pulled in through bindgen, for the RocksDB bindings)
1.74     rustflags 0.1.7
1.71     syn 3.0.3, serde_derive 1.0.229

rocksdb-ssd is a default feature, so 1.88 is what a plain cargo build needs, and that is
what this now declares. The crate's own sources are nowhere near that ceiling -- the constraint
is entirely the storage backend -- so building with --no-default-features still works on much
older toolchains; the README says so rather than implying the crate itself demands 1.88.

The CI job moves with it. It was pinned to 1.74.0 and running cargo check --locked, so it has
been failing on main since the dependency bumps landed: a red job that everyone learns to scroll
past is worse than no job, because it stops reporting the thing it exists to report. On 1.88 it
goes back to answering a real question.

No source changes, and no dependency changes: this only makes the stated floor match the actual
one.

`rust-version`, the README badge, the README text and the CI job all say 1.74. A default build has
needed considerably more than that since the RocksDB bump, so the number is not a floor any more,
it is a claim that fails for the people most likely to trust it -- someone on an older toolchain
who reads the badge, installs the crate, and gets a resolver error instead of a build.

What the resolved tree actually requires, highest first:

```text
1.88.0   rocksdb 0.25.0
1.88.0   librocksdb-sys 0.19.0+11.8.1
1.77     rustc-hash 2.1.3          (pulled in through bindgen, for the RocksDB bindings)
1.74     rustflags 0.1.7
1.71     syn 3.0.3, serde_derive 1.0.229
```

`rocksdb-ssd` is a **default** feature, so 1.88 is what a plain `cargo build` needs, and that is
what this now declares. The crate's own sources are nowhere near that ceiling -- the constraint
is entirely the storage backend -- so building with `--no-default-features` still works on much
older toolchains; the README says so rather than implying the crate itself demands 1.88.

The CI job moves with it. It was pinned to 1.74.0 and running `cargo check --locked`, so it has
been failing on `main` since the dependency bumps landed: a red job that everyone learns to scroll
past is worse than no job, because it stops reporting the thing it exists to report. On 1.88 it
goes back to answering a real question.

No source changes, and no dependency changes: this only makes the stated floor match the actual
one.
Raising the declared Rust version re-enables the lints that were held back for 1.74, and the
first one it lets through is a real one: a hex decoder testing its length by hand where the
standard library has said it plainly since 1.87.
The current clippy release flags both sites, so the build is failing on `main` for a reason that
has nothing to do with anyone's code -- a toolchain moved. Both rewrites are the same computation:
the hash still reads four bytes at a time and folds the same tail, and the hex decoder still walks
pairs. The tests that pin the hash values pass unchanged.

Like `is_multiple_of`, `as_chunks` is available precisely because the declared floor now matches
what a default build already required.
@bjmeetsfo
bjmeetsfo merged commit 0cfc70a into main Aug 27, 2026
5 checks passed
@bjmeetsfo
bjmeetsfo deleted the fix/state-the-rust-version-the-build-actually-needs branch August 27, 2026 01:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants