Skip to content

Commit 0b79fc8

Browse files
committed
Prepare 1.3.1 release candidate
1 parent 8b038a0 commit 0b79fc8

21 files changed

Lines changed: 177 additions & 94 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
# Changelog
22

3-
## 1.3.1 - Unreleased
3+
## 1.3.1 - 2026-07-03
44

55
- Added `base64-ng-tokio` `EncoderWriter` and `DecoderWriter` manual
66
`AsyncWrite` streaming adapters with fixed internal queues, explicit
77
shutdown finalization, short-write/backpressure handling, fail-closed error
88
latching, and drop cleanup.
99
- Added deterministic Tokio tests for split writes, pending shutdown drains,
10-
malformed decode failure, unpadded decoder shutdown tails, and inner writer
11-
errors.
10+
malformed decode failure, unpadded decoder shutdown tails, inner writer
11+
errors, large-input capacity clamps, and one-byte backpressure.
12+
- Extended panic-policy validation to companion crate production source and
13+
added a permanent `security/pentest/v1.3.1.md` review artifact.
1214
- Updated async, dependency, trust, and README documentation so Tokio writer
1315
adapters are no longer described as deferred.
16+
- Synchronized all workspace crate package versions to `1.3.1` so the crate
17+
family continues to publish under one visible version line.
1418

1519
## 1.3.0 - 2026-07-02
1620

Cargo.lock

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "base64-ng"
3-
version = "1.3.0"
3+
version = "1.3.1"
44
edition = "2024"
55
rust-version = "1.90"
66
license = "MIT OR Apache-2.0"

README.md

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,26 @@ The crate starts conservative: a small scalar implementation, strict RFC 4648 be
2929

3030
## Current Status
3131

32-
The current public release is `1.3.0`.
32+
The current public release is `1.3.1`.
3333

34-
`1.3.0` is the implementation-completion release for the original full
35-
Base64 scope. It keeps the conservative `1.2.x` encode acceleration posture and
36-
adds admitted normal strict SIMD decode for Standard and URL-safe alphabet
37-
families on std `x86`/`x86_64` AVX-512 VBMI, AVX2, SSSE3/SSE4.1, and
38-
little-endian std `aarch64` NEON after whole-input scalar validation.
34+
`1.3.1` is a focused patch on top of the `1.3.0`
35+
implementation-completion release. It keeps the conservative `1.2.x` encode
36+
acceleration posture and the admitted `1.3.0` normal strict SIMD decode scope
37+
for Standard and URL-safe alphabet families on std `x86`/`x86_64` AVX-512
38+
VBMI, AVX2, SSSE3/SSE4.1, and little-endian std `aarch64` NEON after
39+
whole-input scalar validation.
3940

4041
Encode acceleration remains active only for admitted Standard and URL-safe
4142
fixed-block surfaces. Decode acceleration remains limited to normal strict
4243
decode. Wrapped decode, legacy whitespace decode, custom alphabets,
4344
bcrypt-style and `crypt(3)` profiles, in-place decode, `no_std`, wasm runtime
4445
dispatch, and constant-time-oriented secret decode remain scalar.
4546

47+
The latest companion-crate patch in this line is `base64-ng-tokio` `1.3.1`,
48+
which adds reviewed manual `AsyncWrite` streaming adapters. The core
49+
`base64-ng` crate is also `1.3.1` so the main crate version stays aligned with
50+
changed companion crates.
51+
4652
Implemented on this branch now:
4753

4854
- `no_std` core with optional `alloc` and `std` features.
@@ -150,7 +156,7 @@ The minimum supported Rust version is Rust `1.90.0`. New deployments should
150156
prefer the latest tested stable Rust; as of July 2, 2026, this project tests
151157
through Rust `1.96.1`.
152158

153-
Compatibility evidence for the `1.3.0` workspace:
159+
Compatibility evidence for the `1.3.1` workspace:
154160

155161
| Rust | Local Evidence |
156162
| --- | --- |
@@ -167,7 +173,7 @@ Compatibility evidence for the `1.3.0` workspace:
167173

168174
```toml
169175
[dependencies]
170-
base64-ng = "1.3.0"
176+
base64-ng = "1.3.1"
171177
```
172178

173179
The crate is dual-licensed:
@@ -228,8 +234,8 @@ decode directly into `sanitization::LockedSecretBytes` or
228234

229235
```toml
230236
[dependencies]
231-
base64-ng = { version = "1.3.0", default-features = false }
232-
base64-ng-sanitization = { version = "1.3.0", default-features = false }
237+
base64-ng = { version = "1.3.1", default-features = false }
238+
base64-ng-sanitization = { version = "1.3.1", default-features = false }
233239
```
234240

235241
```rust
@@ -248,7 +254,7 @@ assert!(secret.sanitization_verify(
248254

249255
```toml
250256
[dependencies]
251-
base64-ng-sanitization = { version = "1.3.0", features = ["high-assurance"] }
257+
base64-ng-sanitization = { version = "1.3.1", features = ["high-assurance"] }
252258
```
253259

254260
```rust
@@ -267,8 +273,8 @@ newtypes around fixed byte arrays:
267273

268274
```toml
269275
[dependencies]
270-
base64-ng = { version = "1.3.0", default-features = false }
271-
base64-ng-derive = "1.3.0"
276+
base64-ng = { version = "1.3.1", default-features = false }
277+
base64-ng-derive = "1.3.1"
272278
```
273279

274280
```rust
@@ -287,7 +293,7 @@ assert_eq!(key.encode_base64::<8>().unwrap().as_str(), "aGVsbG8=");
287293

288294
```toml
289295
[dependencies]
290-
base64-ng-serde = "1.3.0"
296+
base64-ng-serde = "1.3.1"
291297
serde = { version = "1.0.228", features = ["derive"] }
292298
```
293299

@@ -306,8 +312,8 @@ Field-level modules are available for `standard`, `standard_no_pad`,
306312

307313
```toml
308314
[dependencies]
309-
base64-ng = "1.3.0"
310-
base64-ng-bytes = "1.3.0"
315+
base64-ng = "1.3.1"
316+
base64-ng-bytes = "1.3.1"
311317
bytes = "1.12.0"
312318
```
313319

@@ -324,8 +330,8 @@ projects that already admit `subtle`:
324330

325331
```toml
326332
[dependencies]
327-
base64-ng = "1.3.0"
328-
base64-ng-subtle = "1.3.0"
333+
base64-ng = "1.3.1"
334+
base64-ng-subtle = "1.3.1"
329335
```
330336

331337
```rust
@@ -343,8 +349,8 @@ controlled by a peer:
343349

344350
```toml
345351
[dependencies]
346-
base64-ng = "1.3.0"
347-
base64-ng-tokio = "1.3.0"
352+
base64-ng = "1.3.1"
353+
base64-ng-tokio = "1.3.1"
348354
tokio = { version = "1.52.3", features = ["io-util"] }
349355
```
350356

@@ -377,7 +383,7 @@ Disable defaults for embedded or freestanding use:
377383

378384
```toml
379385
[dependencies]
380-
base64-ng = { version = "1.3.0", default-features = false }
386+
base64-ng = { version = "1.3.1", default-features = false }
381387
```
382388

383389
Enable admitted encode acceleration on supported `std` targets with the
@@ -389,7 +395,7 @@ and URL-safe alphabets after whole-input scalar validation:
389395

390396
```toml
391397
[dependencies]
392-
base64-ng = { version = "1.3.0", features = ["simd"] }
398+
base64-ng = { version = "1.3.1", features = ["simd"] }
393399
```
394400

395401
```rust

crates/base64-ng-bytes/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "base64-ng-bytes"
3-
version = "1.3.0"
3+
version = "1.3.1"
44
edition = "2024"
55
rust-version = "1.90"
66
license = "MIT OR Apache-2.0"
@@ -23,7 +23,7 @@ default = ["std"]
2323
std = ["base64-ng/std", "bytes/std"]
2424

2525
[dependencies]
26-
base64-ng = { version = "1.3.0", path = "../..", default-features = false, features = ["alloc"] }
26+
base64-ng = { version = "1.3.1", path = "../..", default-features = false, features = ["alloc"] }
2727
bytes = { version = "1.12.0", default-features = false }
2828

2929
[lints.rust]

crates/base64-ng-derive/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "base64-ng-derive"
3-
version = "1.3.0"
3+
version = "1.3.1"
44
edition = "2024"
55
rust-version = "1.90"
66
license = "MIT OR Apache-2.0"
@@ -27,7 +27,7 @@ default = []
2727
[dependencies]
2828

2929
[dev-dependencies]
30-
base64-ng = { version = "1.3.0", path = "../..", default-features = false }
30+
base64-ng = { version = "1.3.1", path = "../..", default-features = false }
3131

3232
[lints.rust]
3333
unsafe_code = "deny"

crates/base64-ng-sanitization/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "base64-ng-sanitization"
3-
version = "1.3.0"
3+
version = "1.3.1"
44
edition = "2024"
55
rust-version = "1.90"
66
license = "MIT OR Apache-2.0"
@@ -31,7 +31,7 @@ strict-ct = ["sanitization/strict-ct"]
3131
wasm-compat = ["sanitization/wasm-compat"]
3232

3333
[dependencies]
34-
base64-ng = { version = "1.3.0", path = "../..", default-features = false }
34+
base64-ng = { version = "1.3.1", path = "../..", default-features = false }
3535
sanitization = { version = "=1.2.2", default-features = false }
3636

3737
[lints.rust]

crates/base64-ng-sanitization/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ constant-time-oriented Base64 decode into clear-on-drop secret containers.
88

99
```toml
1010
[dependencies]
11-
base64-ng = { version = "1.3.0", default-features = false }
12-
base64-ng-sanitization = { version = "1.3.0", default-features = false }
11+
base64-ng = { version = "1.3.1", default-features = false }
12+
base64-ng-sanitization = { version = "1.3.1", default-features = false }
1313
```
1414

1515
```rust
@@ -29,15 +29,15 @@ assert!(secret.sanitization_verify(
2929
Enable `alloc` for heap-backed `sanitization::SecretVec` helpers:
3030

3131
```toml
32-
base64-ng-sanitization = { version = "1.3.0", features = ["alloc"] }
32+
base64-ng-sanitization = { version = "1.3.1", features = ["alloc"] }
3333
```
3434

3535
For high-assurance native deployments, enable locked storage helpers. This
3636
uses `sanitization` 1.2.2's `memory-lock`, `canary-check`, and
3737
`random-canary` features and decodes directly into locked memory:
3838

3939
```toml
40-
base64-ng-sanitization = { version = "1.3.0", features = ["high-assurance"] }
40+
base64-ng-sanitization = { version = "1.3.1", features = ["high-assurance"] }
4141
```
4242

4343
```rust
@@ -90,5 +90,5 @@ For deployments that want `sanitization`'s assembly-backed comparison checks,
9090
enable the passthrough features:
9191

9292
```toml
93-
base64-ng-sanitization = { version = "1.3.0", features = ["strict-ct"] }
93+
base64-ng-sanitization = { version = "1.3.1", features = ["strict-ct"] }
9494
```

crates/base64-ng-serde/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "base64-ng-serde"
3-
version = "1.3.0"
3+
version = "1.3.1"
44
edition = "2024"
55
rust-version = "1.90"
66
license = "MIT OR Apache-2.0"
@@ -24,7 +24,7 @@ alloc = ["base64-ng/alloc", "serde/alloc"]
2424
std = ["alloc", "base64-ng/std", "serde/std"]
2525

2626
[dependencies]
27-
base64-ng = { version = "1.3.0", path = "../..", default-features = false }
27+
base64-ng = { version = "1.3.1", path = "../..", default-features = false }
2828
serde = { version = "1.0.228", default-features = false }
2929

3030
[dev-dependencies]

crates/base64-ng-subtle/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "base64-ng-subtle"
3-
version = "1.3.0"
3+
version = "1.3.1"
44
edition = "2024"
55
rust-version = "1.90"
66
license = "MIT OR Apache-2.0"
@@ -24,7 +24,7 @@ alloc = ["base64-ng/alloc"]
2424
std = ["alloc", "base64-ng/std", "subtle/std"]
2525

2626
[dependencies]
27-
base64-ng = { version = "1.3.0", path = "../..", default-features = false }
27+
base64-ng = { version = "1.3.1", path = "../..", default-features = false }
2828
subtle = { version = "2.6.1", default-features = false }
2929

3030
[lints.rust]

0 commit comments

Comments
 (0)