@@ -31,24 +31,27 @@ The crate starts conservative: a small scalar implementation, strict RFC 4648 be
3131
3232The current public release is ` 1.3.3 ` .
3333
34- ` 1.3.3 ` is a focused wasm SIMD posture and profile-ergonomics patch on top of
35- the ` 1.3.0 ` implementation-completion release, the ` 1.3.1 ` Tokio writer patch,
36- and the ` 1.3.2 ` non-standard SIMD surface review. It keeps the conservative
37- ` 1.2.x ` encode acceleration posture and the admitted ` 1.3.0 ` normal strict
38- SIMD decode scope for Standard and URL-safe alphabet families on std
39- ` x86 ` /` x86_64 ` AVX-512 VBMI, AVX2, SSSE3/SSE4.1, and little-endian std
34+ ` 1.3.3 ` is a focused wasm SIMD runtime-dispatch and profile-ergonomics patch
35+ on top of the ` 1.3.0 ` implementation-completion release, the ` 1.3.1 ` Tokio
36+ writer patch, and the ` 1.3.2 ` non-standard SIMD surface review. It keeps the
37+ admitted ` 1.2.x ` native encode acceleration posture and the admitted ` 1.3.0 `
38+ normal strict SIMD decode scope for Standard and URL-safe alphabet families on
39+ std ` x86 ` /` x86_64 ` AVX-512 VBMI, AVX2, SSSE3/SSE4.1, and little-endian std
4040` aarch64 ` NEON after whole-input scalar validation.
4141
4242Encode acceleration remains active only for admitted Standard and URL-safe
4343fixed-block surfaces. Decode acceleration remains limited to normal strict
4444decode. Wrapped decode, legacy whitespace decode, custom alphabets,
45- bcrypt-style and ` crypt(3) ` profiles, in-place decode, ` no_std ` , wasm runtime
46- dispatch, and constant-time-oriented secret decode remain scalar.
45+ bcrypt-style and ` crypt(3) ` profiles, in-place decode, ` no_std ` , and
46+ constant-time-oriented secret decode remain scalar. Wasm ` simd128 ` is admitted
47+ only for Standard and URL-safe public encode and normal strict decode when the
48+ binary is compiled with ` target-feature=+simd128 ` , the ` simd ` feature, and the
49+ explicit ` allow-wasm32-best-effort-wipe ` feature.
4750
48- The latest patch in this line is ` 1.3.3 ` , which records that wasm ` simd128 `
49- runtime dispatch remains unadmitted, adds release-gated wasm codegen evidence
50- for the inactive prototype , and adds wrapped-profile helper ergonomics. The
51- workspace crate family stays version-aligned at ` 1.3.3 ` .
51+ The latest patch in this line is ` 1.3.3 ` , which admits narrow wasm ` simd128 `
52+ runtime dispatch with Node/V8 and Wasmtime smoke evidence, keeps the wasm
53+ cleanup caveat fail-closed by default , and adds wrapped-profile helper
54+ ergonomics. The workspace crate family stays version-aligned at ` 1.3.3 ` .
5255
5356Implemented on this branch now:
5457
@@ -101,6 +104,12 @@ Implemented on this branch now:
101104 whole-input scalar validation. Unsupported CPUs, big-endian AArch64,
102105 ` no_std ` , custom alphabets, short inputs, tails, wrapped decode, legacy
103106 decode, in-place decode, and CT secret decode stay scalar.
107+ - Runtime-dispatched wasm ` simd128 ` fixed-block encode and normal strict
108+ decode for Standard and URL-safe alphabets when built for ` wasm32 ` with
109+ ` target-feature=+simd128 ` , ` simd ` , and
110+ ` allow-wasm32-best-effort-wipe ` . The admission is backed by Node/V8 and
111+ Wasmtime runtime smoke evidence; unsupported wasm builds stay scalar by
112+ compiling without ` +simd128 ` .
104113- Optional ` base64-ng-sanitization ` companion crate for applications that
105114 already admit ` sanitization ` and want direct CT decode helpers into
106115 clear-on-drop secret containers.
@@ -120,9 +129,9 @@ Planned behind admission evidence:
120129 alphabets, no bcrypt/crypt profiles, and no constant-time-oriented secret
121130 decode. Default builds, unsupported runtime CPUs, ` no_std ` , and all
122131 out-of-scope decode surfaces remain scalar.
123- - Additional admitted wasm ` simd128 ` , custom alphabet, and in-place encode
124- fast paths only after separate SIMD admission evidence is complete. Default
125- builds and unsupported runtime CPUs remain scalar.
132+ - Additional custom alphabet, wrapped/legacy, in-place, and broader wasm
133+ runtime/browser fast paths only after separate SIMD admission evidence is
134+ complete. Default builds and unsupported runtime CPUs remain scalar.
126135- Async reader and writer streaming is available through the optional
127136 ` base64-ng-tokio ` companion crate after cancellation-safety, accepted-byte,
128137 and backpressure review. The core ` tokio ` feature remains inert; use the
@@ -140,7 +149,7 @@ Planned behind admission evidence:
140149| MSRV | Rust ` 1.90.0 ` |
141150| Runtime dependencies | Zero external crates |
142151| Unsafe policy | Scalar encode/decode remains safe Rust; audited unsafe is limited to volatile wiping, CT comparison/barrier helpers, and the reviewed SIMD boundary |
143- | Active backend | Scalar by default; std x86/x86_64 AVX-512 VBMI preferred, then AVX2, then SSSE3/SSE4.1, plus little-endian std aarch64 NEON, when ` simd ` is enabled and platform checks pass |
152+ | Active backend | Scalar by default; std x86/x86_64 AVX-512 VBMI preferred, then AVX2, then SSSE3/SSE4.1, plus little-endian std aarch64 NEON, and wasm ` simd128 ` when the admitted feature/runtime profile is present |
144153| Strict decoding | Default, canonical, no whitespace |
145154| Legacy compatibility | Explicit opt-in APIs |
146155| Constant-time posture | Constant-time-oriented scalar validation/decode with isolated dudect-style timing evidence; no formal cryptographic guarantee |
0 commit comments