Skip to content

Commit 9a79568

Browse files
committed
Lower MSRV to Rust 1.90
1 parent 1f7abab commit 9a79568

17 files changed

Lines changed: 53 additions & 26 deletions

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Changelog
22

3+
## 1.0.1 - 2026-05-29
4+
5+
- Lowered the documented MSRV from Rust `1.95.0` to Rust `1.90.0` after
6+
confirming the current code builds, tests, lints, and documents cleanly on
7+
Rust `1.90.0` without code changes.
8+
- Added README compiler-compatibility evidence for Rust `1.90.0` through
9+
Rust `1.96.0`, while continuing to recommend the latest stable Rust for new
10+
deployments.
11+
312
## 1.0.0 - 2026-05-19
413

514
- Started the stable API and security-contract freeze candidate after the

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[package]
22
name = "base64-ng"
3-
version = "1.0.0"
3+
version = "1.0.1"
44
edition = "2024"
5-
rust-version = "1.95"
5+
rust-version = "1.90"
66
license = "MIT OR Apache-2.0"
77
description = "no_std-first Base64 encoding and decoding with strict APIs and a security-heavy release process"
88
repository = "https://github.com/valkyoth/base64-ng"

README.md

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ The crate starts conservative: a small scalar implementation, strict RFC 4648 be
66

77
## Current Status
88

9-
The current public release is `1.0.0`.
9+
The current public release is `1.0.1`.
1010

1111
Implemented now:
1212

@@ -47,7 +47,7 @@ Implemented now:
4747
Planned behind admission evidence:
4848

4949
- Admitted AVX2, AVX-512, SSSE3/SSE4.1, ARM NEON, and wasm `simd128`
50-
fast paths after the SIMD admission evidence is complete. The `1.0.0`
50+
fast paths after the SIMD admission evidence is complete. The `1.0.1`
5151
release remains scalar-only.
5252
- Async streaming wrappers only after the `tokio` feature passes the
5353
dependency and cancellation-safety admission bar in [docs/ASYNC.md](docs/ASYNC.md).
@@ -63,7 +63,7 @@ Planned behind admission evidence:
6363
| Area | Status |
6464
| --- | --- |
6565
| License | `MIT OR Apache-2.0` |
66-
| MSRV | Rust `1.95.0` |
66+
| MSRV | Rust `1.90.0` |
6767
| Runtime dependencies | Zero external crates |
6868
| Unsafe policy | Scalar encode/decode remains safe Rust; audited unsafe is limited to volatile wiping, CT barriers, validated secret UTF-8 conversion, and test-only SIMD prototypes |
6969
| Active backend | Scalar only |
@@ -77,11 +77,28 @@ Planned behind admission evidence:
7777
Full adoption details live in [docs/TRUST.md](docs/TRUST.md). Security-control
7878
and CWE mapping lives in [docs/SECURITY_CONTROLS.md](docs/SECURITY_CONTROLS.md).
7979

80+
## Rust Version Support
81+
82+
The minimum supported Rust version is Rust `1.90.0`. New deployments should
83+
prefer the latest stable Rust; as of May 29, 2026, that is Rust `1.96.0`.
84+
85+
Compatibility evidence for `1.0.1`:
86+
87+
| Rust | Local Evidence |
88+
| --- | --- |
89+
| `1.90.0` | ✓ full release gate |
90+
| `1.91.0` |`cargo check --all-features` |
91+
| `1.92.0` |`cargo check --all-features` |
92+
| `1.93.0` |`cargo check --all-features` |
93+
| `1.94.0` |`cargo check --all-features` |
94+
| `1.95.0` |`cargo check --all-features` |
95+
| `1.96.0` |`cargo check --all-features` |
96+
8097
## Install
8198

8299
```toml
83100
[dependencies]
84-
base64-ng = "1.0.0"
101+
base64-ng = "1.0.1"
85102
```
86103

87104
The crate is dual-licensed:
@@ -108,7 +125,7 @@ Disable defaults for embedded or freestanding use:
108125

109126
```toml
110127
[dependencies]
111-
base64-ng = { version = "1.0.0", default-features = false }
128+
base64-ng = { version = "1.0.1", default-features = false }
112129
```
113130

114131
## Example
@@ -694,7 +711,8 @@ assert_eq!(&encoded[..written], b"aGVsbG8");
694711

695712
Security commitments:
696713

697-
- Stable Rust first. Current toolchain pin: Rust `1.95.0`.
714+
- Stable Rust first. Current MSRV toolchain pin: Rust `1.90.0`. New deployments
715+
should prefer the latest stable Rust, currently Rust `1.96.0`.
698716
- `no_std` core by default.
699717
- Scalar encode/decode remains safe Rust.
700718
- Audited unsafe helpers in `src/lib.rs` perform volatile best-effort wiping

docs/KANI.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ on the compiler bundled with the installed `cargo-kani` release.
55

66
## Current Status
77

8-
- Local Rust toolchain: Rust `1.95.0`.
8+
- Local Rust toolchain: Rust `1.90.0`.
99
- Locally tested Kani: `cargo-kani 0.67.0`.
1010
- Current result: `scripts/check_kani.sh` records an explicit skip because the
1111
installed Kani compiler is older than this crate's `rust-version`.
1212

1313
This is not a normal Cargo dependency-resolution issue. Kani runs are compiler-integration-sensitive because Kani is a verifier with its own compiler integration.
14-
Updating the project to Rust `1.95` does not make an older Kani release
14+
Updating the project to Rust `1.90` does not make an older Kani release
1515
understand that toolchain automatically.
1616

1717
## How To Check

docs/MIGRATION.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ After:
2929

3030
```toml
3131
[dependencies]
32-
base64-ng = "1.0.0"
32+
base64-ng = "1.0.1"
3333
```
3434

3535
For embedded or freestanding use:
3636

3737
```toml
3838
[dependencies]
39-
base64-ng = { version = "1.0.0", default-features = false }
39+
base64-ng = { version = "1.0.1", default-features = false }
4040
```
4141

4242
## Engine Mapping
@@ -168,7 +168,7 @@ Enable the `stream` feature for `std::io` wrappers:
168168

169169
```toml
170170
[dependencies]
171-
base64-ng = { version = "1.0.0", features = ["stream"] }
171+
base64-ng = { version = "1.0.1", features = ["stream"] }
172172
```
173173

174174
```rust

docs/PLAN.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Build `base64-ng` as a modern, secure, `no_std`-first Base64 implementation for
88

99
## Current Baseline
1010

11-
- Rust stable: `1.95.0`.
11+
- Rust stable/MSRV: `1.90.0`.
1212
- License: `MIT OR Apache-2.0`.
1313
- Project name: `base64-ng`.
1414
- Runtime and dev dependency graph: zero external crates.
@@ -498,7 +498,7 @@ cryptographic behavior until compatible verifier evidence exists.
498498
workflow, or document through [KANI.md](KANI.md) why Kani remains unavailable
499499
and what evidence replaces it for `v1.0`.
500500
Completed direction: keep the Kani harnesses in-tree, document an explicit
501-
verifier exception while local Kani is behind Rust `1.95`, and require Miri,
501+
verifier exception while local Kani is behind Rust `1.90`, and require Miri,
502502
bounded fuzz smoke, generated-code evidence, panic-policy checks,
503503
deterministic tests, release-policy validators, and invariant documentation
504504
as replacement release evidence for the initial `1.0.0` contract.

docs/SIMD.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# SIMD Admission Policy
22

3-
`base64-ng` is intentionally scalar-only in the `1.0.0` release. Future SIMD
3+
`base64-ng` is intentionally scalar-only in the `1.0.1` release. Future SIMD
44
dispatch remains gated unless a complete SIMD admission evidence package lands
55
in a later release series. The crate uses `#![deny(unsafe_code)]` and permits reviewed
66
`allow(unsafe_code)` exceptions only for audited cleanup, CT barrier, validated

docs/SIMD_ADMISSION.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ the admitted implementation.
1010
- Admitted backends: none.
1111
- Active backend: scalar only.
1212
- Public performance claims: none.
13-
- Release status: `1.0.0` remains scalar-only. Future releases may admit an
13+
- Release status: `1.0.1` remains scalar-only. Future releases may admit an
1414
accelerated backend only when this manifest is updated with a complete
1515
backend admission evidence package in the same release series.
1616

docs/TRUST.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ stable release.
77
| Area | Current Status | Evidence |
88
| --- | --- | --- |
99
| License | `MIT OR Apache-2.0` | `Cargo.toml`, `LICENSE-MIT`, `LICENSE-APACHE` |
10-
| MSRV | Rust `1.95.0` | `Cargo.toml`, `rust-toolchain.toml` |
10+
| MSRV | Rust `1.90.0` | `Cargo.toml`, `rust-toolchain.toml` |
1111
| Runtime dependencies | Zero external crates | `scripts/validate-dependencies.sh` |
1212
| Default dev dependencies | Zero external crates | `Cargo.toml` |
1313
| Optional runtime features | `alloc`, `std`, `stream`; `allow-wasm32-best-effort-wipe` explicit wasm cleanup-limit acceptance; `allow-compiler-fence-only-wipe` explicit unsupported-native cleanup-limit acceptance; reserved `simd`, `tokio`, `kani`, `fuzzing` | `Cargo.toml`, `scripts/check_reserved_features.sh`, `scripts/check_wasm_wipe_policy.sh` |

0 commit comments

Comments
 (0)