Skip to content

Commit f51e2a2

Browse files
committed
Use Rust 1.96.1 as development toolchain
1 parent 6ed58f6 commit f51e2a2

7 files changed

Lines changed: 49 additions & 11 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
- Updated README installation snippets, latest-stable Rust wording, and release
1313
metadata for `1.1.1`.
1414
- Added local compatibility evidence for Rust `1.96.1`.
15+
- Switched the pinned development toolchain to Rust `1.96.1` while keeping the
16+
crate MSRV at Rust `1.90.0`.
17+
- Added CI/release checks that verify backward compatibility on Rust `1.90.0`.
1518

1619
## 1.1.0
1720

README.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ Planned or intentionally external:
8383
| --- | --- |
8484
| License | `MIT OR Apache-2.0` |
8585
| MSRV | Rust `1.90.0` |
86+
| Development toolchain | Rust `1.96.1` |
8687
| Crate shape | Library only |
8788
| Runtime graph | `image`, `palette`, `rand`, `sanitization`, `sanitization-crypto-interop`, transitive `sha2`, `subtle`; optional `blake3`, `xxhash-rust`, `image/png`, `image/jpeg`, `image/gif` |
8889
| Unsafe policy | `#![forbid(unsafe_code)]` |
@@ -103,26 +104,27 @@ to split it.
103104

104105
## Rust Version Support
105106

106-
The minimum supported Rust version is Rust `1.90.0`. New deployments should
107-
prefer the latest stable Rust; as of June 30, 2026, that is Rust `1.96.1`.
107+
The minimum supported Rust version is Rust `1.90.0`, as declared by
108+
`Cargo.toml`. Local development and release checks use the pinned
109+
`rust-toolchain.toml` toolchain, currently Rust `1.96.1`. CI also checks back
110+
to Rust `1.90.0` so the MSRV stays honest. New deployments should prefer the
111+
latest stable Rust; as of June 30, 2026, that is Rust `1.96.1`.
108112

109113
Compatibility evidence for `1.1.1`:
110114

111115
| Rust | Local Evidence |
112116
| --- | --- |
113-
| `1.90.0` |full release gate |
117+
| `1.90.0` |`cargo check`; ✓ `cargo check --features all-formats`; ✓ `cargo check --features "blake3 all-formats"`; ✓ `cargo check --features "xxh3 all-formats"` |
114118
| `1.91.0` |`cargo check --features all-formats` |
115119
| `1.92.0` |`cargo check --features all-formats` |
116120
| `1.93.0` |`cargo check --features all-formats` |
117121
| `1.94.0` |`cargo check --features all-formats` |
118122
| `1.95.0` |`cargo check --features all-formats` |
119123
| `1.96.0` |`cargo check --features all-formats` |
120-
| `1.96.1` |`cargo check --features all-formats` |
124+
| `1.96.1` |full release gate; ✓ `cargo check --features all-formats` |
121125

122126
Optional hash modes are mutually exclusive, so `hashavatar` cannot use a single
123-
`--all-features` evidence run. The `1.90.0` MSRV was also checked with
124-
`cargo check --features "blake3 all-formats"` and
125-
`cargo check --features "xxh3 all-formats"`.
127+
`--all-features` evidence run.
126128

127129
## Install
128130

docs/RELEASE.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ cargo publish --dry-run
1313
freshness still has to be checked before release through crates.io, docs.rs,
1414
upstream repositories, and RustSec advisories.
1515

16-
The stable gate runs the normal project checks, package verification, documentation generation, fuzz harness compilation, and reproducibility checks. Optional SBOM generation runs when `cargo-sbom` is installed.
16+
The stable gate runs on the pinned development toolchain from
17+
`rust-toolchain.toml`. The normal project checks also install and run focused
18+
compatibility checks against the `Cargo.toml` MSRV, currently Rust `1.90.0`.
19+
Package verification, documentation generation, fuzz harness compilation, and
20+
reproducibility checks run as part of the same gate. Optional SBOM generation
21+
runs when `cargo-sbom` is installed.
1722

1823
The crate package should contain the reusable library, metadata, documentation, and policy scripts. It should not contain binaries, the demo/API server, fuzz harnesses, or generated build output.

docs/release-notes/RELEASE_NOTES_1.1.1.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@ the public API.
2828
- Updated latest-stable Rust wording to Rust `1.96.1`.
2929
- Added local `cargo check --features all-formats` compatibility evidence for
3030
Rust `1.96.1`.
31+
- Documented the split between the Rust `1.96.1` development toolchain and the
32+
Rust `1.90.0` MSRV.
33+
34+
## Toolchain
35+
36+
- Switched `rust-toolchain.toml` from Rust `1.90.0` to Rust `1.96.1`.
37+
- Kept `Cargo.toml` `rust-version = "1.90"` as the public MSRV.
38+
- Added project checks that run focused compatibility coverage on Rust `1.90.0`
39+
in addition to the normal development-toolchain checks.
3140

3241
## Compatibility
3342

rust-toolchain.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
[toolchain]
2-
channel = "1.90.0"
2+
channel = "1.96.1"
33
components = ["clippy", "rustfmt"]

scripts/checks.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,20 @@ cargo clippy --all-targets -- -D warnings
2828
echo "checks: tests"
2929
cargo test
3030

31+
echo "checks: MSRV compatibility"
32+
if command -v rustup >/dev/null 2>&1; then
33+
if ! rustup toolchain list | grep -q '^1\.90\.0'; then
34+
rustup toolchain install 1.90.0 --profile minimal
35+
fi
36+
cargo +1.90.0 check
37+
cargo +1.90.0 check --features all-formats
38+
cargo +1.90.0 check --features "blake3 all-formats"
39+
cargo +1.90.0 check --features "xxh3 all-formats"
40+
else
41+
echo "checks: rustup is required for MSRV compatibility checks" >&2
42+
exit 1
43+
fi
44+
3145
echo "checks: docs"
3246
cargo doc --no-deps
3347

scripts/validate-release-metadata.sh

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,13 @@ if [ -z "$cargo_rust_version" ]; then
2929
exit 1
3030
fi
3131

32-
if [ "$toolchain_version" != "$cargo_rust_version.0" ]; then
33-
echo "release metadata: rust-toolchain.toml channel $toolchain_version does not match Cargo.toml rust-version $cargo_rust_version" >&2
32+
if [ "$cargo_rust_version" != "1.90" ]; then
33+
echo "release metadata: Cargo.toml rust-version must remain the MSRV 1.90" >&2
34+
exit 1
35+
fi
36+
37+
if [ "$toolchain_version" != "1.96.1" ]; then
38+
echo "release metadata: rust-toolchain.toml channel must be the development toolchain 1.96.1, got $toolchain_version" >&2
3439
exit 1
3540
fi
3641

0 commit comments

Comments
 (0)