Immutable
release. Only release title and notes can be modified.
dryoc v0.9.0
dryoc 0.9.0 expands libsodium-compatible coverage with AEAD, direct HMAC, HKDF, SHA-2/SHA-3 hashing, and Ed25519 key extraction helpers. It also makes protected memory available on stable Rust for supported targets, improves wasm coverage, reduces the normal dependency surface, and tunes several hot paths.
Full Changelog: v0.8.0...v0.9.0
Breaking Changes / Compatibility Notes
dryocstream::Tagnow uses a local compatibility implementation instead of the externalbitflagstype. The public constants, methods, operators, formatting, and iteration behavior are preserved for normal use, but code depending on bitflags-specific trait impls or concrete iterator types may need adjustment.- The legacy
gen/r#gengeneration APIs are deprecated becausegenis reserved in Rust 2024. Existing callers remain source-compatible; prefer thegeneratereplacements, including the new protected-memory key generation helpers. - Default features are now
base64,u64_backend, andprotected. Protected-memory APIs are available on stable Rust for Unix and Windows targets, and unsupported targets such aswasm32-unknown-unknowndo not expose the protected-memory module.
Highlights Since v0.8.0
Cryptographic APIs
- Added libsodium-compatible
crypto_aead_xchacha20poly1305_ietf_*APIs plus the RustaceousdryocaeadAPI for XChaCha20-Poly1305-IETF, including explicit-nonce boxes, generated-nonce envelopes, protected aliases, serde/wincode support, tests, and fuzz coverage. - Added direct HMAC variants for SHA-256, SHA-512, and SHA-512/256, plus HKDF-SHA-256 and HKDF-SHA-512 APIs in both Classic and Rustaceous forms.
- Added SHA-256 Classic hashing support and SHA-3-256/SHA-3-512 Classic and Rustaceous hashing APIs.
- Added Ed25519 secret-key extraction helpers for seed and embedded public-key extraction, matching libsodium's signing-key layout.
Protected Memory And Platform Support
- Moved protected memory off the nightly allocator API for the stable storage path while keeping the nightly allocator implementation available behind
nightly. - Added wasm32-unknown-unknown compatibility coverage, target-specific randomness setup, and wasm-bindgen tests for core Rustaceous encryption and hashing paths.
- Clarified protected-memory tradeoffs, platform behavior, and default feature guidance in the README, rustdoc, and repository guidance.
Performance And Dependency Surface
- Removed normal dependencies on
base64,bitflags, andlazy_staticby replacing them with local or standard-library implementations while keeping thebase64feature as a compatibility flag. - Uses the soft Poly1305 backend on AArch64 under
simd_backend,nightly, where profiling showed it outperforming the portable-SIMD Poly1305 path. - Removed redundant software Poly1305 state stores.
- Optimized detached
crypto_secretboxseal/open paths to avoid full-buffer pre-copying. Detached open now leaves the output buffer unchanged when authentication fails.
Maintenance
- Added a
cargo-denyadvisory check to CI. - Updated the README libsodium coverage audit against libsodium 1.0.22 and narrowed the crate-level compatibility wording to supported APIs and wire formats.
- Fixed new
chunks_exactclippy lints while preserving existing remainder handling.
Upgrade Guidance
cargo update -p dryoc- Replace
r#gen()calls withgenerate()where practical. ExistinggenAPIs are deprecated, not removed. - If you relied on the previous default feature set, pin features explicitly, for example:
dryoc = { version = "0.9", default-features = false, features = ["u64_backend"] }Pull Requests by Category
Features And API
- feat: add XChaCha20-Poly1305 AEAD APIs (#124)
- feat: support protected memory on stable (#125)
- feat: add libsodium HMAC and HKDF APIs (#128)
- feat: deprecate gen generation APIs (#129)
- feat(sign): add Ed25519 key extraction helpers (#133)
- feat: add SHA-3 hash variants (#134)
Performance
- perf: use soft poly1305 on aarch64 (#121)
- perf: remove redundant poly1305 state stores (#122)
- perf: avoid detached secretbox buffer copies (#123)
Bug Fixes
- fix: address chunks_exact clippy lints (#132)
Testing, CI, And Maintenance
- refactor: reduce dependency surface (#119)
- test: add wasm compatibility coverage (#118)
- ci: enforce cargo-deny advisory checks (#131)
Documentation
- docs: audit libsodium feature coverage (#120)
- docs: clarify protected memory tradeoffs (#127)
- docs: update default feature guidance (#130)
- docs: clarify libsodium compatibility scope (#135)