Skip to content

Releases: loadingalias/rscrypto

rscrypto v0.3.1

01 Jun 20:00
v0.3.1
6f1a146

Choose a tag to compare

0.3.1 - 2026-06-01

📦 Other Changes

  • workspace: enable cargo-rail release publishing (bb7ec88)
  • bench: add Ascon coverage and refresh HMAC measurement shape (b06b946)

rscrypto v0.3.0

30 May 17:08
v0.3.0
7f82051

Choose a tag to compare

rscrypto v0.3.0 is the RSA and validation-hardening release.

Highlights:

  • RSA is now a full first-class primitive: strict DER import/export, RSA-PSS, RSASSA-PKCS1-v1_5, OAEP, RSAES-PKCS1-v1_5, key generation, X.509/JWT/COSE/TLS profile mapping, blinded private operations, and
    reusable scratch APIs.
  • RSA verification coverage landed with vectors, fuzzing, oracle checks, and benchmark fixtures.
  • RSA private operations and assembly-backed paths were completed.
  • Ed25519 assembly backends were added.
  • RSA public verification was tightened: 8192-bit verifier backend coverage widened, public Montgomery precompute deferred, and brittle scratch allocation assertions removed.
  • CI validation was hardened: Miri now focuses on UB-risk coverage, weekly validation timeouts were widened, SHA3 fuzz builds were fixed, workflow cancellation was scoped, and action pins / lockfiles were
    refreshed.
  • Benchmark docs were refreshed with the 2026-05-27 Linux CI scorecard, including RSA rows.

Performance snapshot from the latest public benchmark pass:

  • 1.61x Linux CI fastest-external geomean.
  • 3,545 wins / 5,832 fastest-external comparisons.
  • 5,210 wins-or-ties / 5,832 comparisons.
  • Checksums: 5.03x geomean.
  • SHA-3 / SHAKE: 2.15x / 1.86x geomean.
  • BLAKE3 >=64 KiB: 2.31x geomean.
  • AEAD: 1.57x geomean.
  • RSA import + verify: 1.32x geomean, with RSA verify-only still at 0.98x.

Known pressure points remain visible and intentional: PBKDF2-SHA256 low-iteration setup, X25519 DH, RSA verification on some Arm/RISC-V rows, and small-message AEAD overhead. If you're really interested in them check the benchmark_results/OVERVIEW.md file.

Get it:

[dependencies]
rscrypto = { version = "0.3.0", default-features = false, features = ["sha2"] }

Full toolbox with OS randomness:

[dependencies]
rscrypto = { version = "0.3.0", features = ["full", "getrandom"] }

References:

rscrypto v0.2.0

18 May 03:16
v0.2.0
2f3c0f6

Choose a tag to compare

rscrypto v0.2.0 is the 2026-05-17 performance and platform release.

Highlights:

  • Published to crates.io as rscrypto 0.2.0.
  • Linux CI fastest-external scorecard: 3,807 wins / 6,552 comparisons, 1.52x geomean vs the fastest matched Rust baseline.
  • Full current corpus including local Apple Silicon: 4,120 wins / 7,280 fastest-external comparisons, 1.51x geomean.
  • Checksums remain the cleanest broad win at 5.10x Linux CI geomean.
  • SHA-3 / SHAKE remain strong at 2.17x / 2.60x Linux CI geomean.
  • BLAKE3 sustained rows (>=64 KiB) hold at 2.38x Linux CI geomean against the blake3 crate.
  • AEAD is broadly positive at 1.37x Linux CI geomean, with GCM-SIV, XChaCha20-Poly1305, AEGIS-256, and IBM Z as the strongest areas.
  • SHA-512-family work landed: HMAC-SHA384 and HMAC-SHA512 both sit at 1.23x Linux CI geomean; local Apple Silicon HMAC-SHA512 is 1.02x.

Known pressure points remain visible in the benchmark overview: password hashing, Linux CI Ed25519 verify, X25519, local Apple Silicon Ed25519 signing, and sustained AES-GCM on POWER10/RISC-V.

References:

rscrypto v0.1.1

03 May 15:31
v0.1.1
e13af2d

Choose a tag to compare

Patch release. No API changes; safe drop-in for v0.1.0.

Changes

  • Trim published crate. Removed tests/, testdata/, and benches/ from the package include list. Compressed crate size dropped from 1.61 MiB → 0.88 MiB (~45% reduction). Users who only enable a few features still download the same tarball, so this directly cuts cache footprint and CI download time across the ecosystem.
  • Fix README Quick Start. Removed four unused-import warnings (Aead, Mac, Blake3, Kmac256) and added the missing FastHash trait import so Xxh3::hash(...) compiles. Copy-pasting from the README now produces zero warnings.
  • Wire README into the doctest harness. Added ReadmeDoctests (gated on cfg(doctest) + full + getrandom) so every rust block in README.md runs as a doc test under cargo test --doc --features "full getrandom". Prevents the Quick Start from silently rotting again.

Get it

[dependencies]
rscrypto = { version = "0.1", default-features = false, features = ["sha2"] }

rscrypto v0.1.0

03 May 15:31
v0.1.0
8281dd1

Choose a tag to compare

First public release of rscrypto.

What this is

A single-crate, pure-Rust cryptography stack:

  • Cryptographic hashes: SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2b/2s, BLAKE3, Ascon-Hash/Xof/CXof
  • Fast hashes: XXH3 (64/128), RapidHash (64/128)
  • Checksums: CRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMe
  • MACs / KDFs: HMAC-SHA-{256,384,512}, KMAC256, HKDF, PBKDF2
  • Password hashing: Argon2id/d/i, scrypt, PHC strings with bounded-policy verify
  • Signatures / KEX: Ed25519, X25519
  • AEADs: AES-256-GCM, AES-256-GCM-SIV, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128

Zero default dependencies. No C, no FFI, no OpenSSL, no libcrypto. Hardware acceleration in-tree across x86_64, aarch64, ppc64le, s390x, riscv64, plus Apple Silicon, with portable Rust fallbacks always available. no_std-first with WASM/WASI compatibility.

Three-tier dispatch: compile-time target_feature → runtime detection (with std) → portable fallback. The portable Rust path is the byte-for-byte authority; SIMD and ASM kernels are accelerators, differential-tested against the portable path on every release.

Note on this release page

The CHANGELOG.md section for v0.1.0 was generated by cargo-rail, which I also maintain. Because v0.1.0 is the first release, cargo-rail's auto-generator had no previous tag to bound against and dumped the entire pre-release commit history into one section — 127 KB, just over GitHub's 125 KB release-body limit. I'm fixing that in cargo-rail itself (per-version override file + a cap on first-release history).

This release page is the short version. For full pre-release commit history, see CHANGELOG.md in the repo.

Get it

[dependencies]
rscrypto = { version = "0.1", default-features = false, features = ["sha2"] }