Release Notes#
This section includes significant changes, new features, performance improvements, and various issues. Unless noted, listed issues should not impact functionality. When functionality is impacted, we offer a work-around to avoid the issue (if available).
0.6.0#
This release includes the following updates:
New Libraries
cuPQC-BigInt (Multi-Precision Integer Arithmetic): a new device-side library for fixed-width unsigned multi-precision integer arithmetic, callable directly from CUDA kernels. Single-thread and warp-cooperative (
TPI) execution for widths from 32 to 4096 bits, modular arithmetic and modular inverse, Barrett and Montgomery reduction, double-width products, and configurable error-handling policies.cuPQC-NTT (Number Theoretic Transform): a new device-side library for forward and inverse NTT, callable directly from CUDA kernels. Support for any custom prime field, transform lengths 22 through 224, built-in BabyBear and KoalaBear primes with pre-computed primitive roots for 210 through 224, and a staged two-pass mode (
SubSize<M>) for transforms whose working set exceeds a single block’s shared memory.
Documentation
The documentation now covers all four libraries, each with Features, Usage Guide, and API Reference sections.
Known Limitations
cuPQC-BigInt builds a specific set of bit widths for each
TPI. A width outside that set compiles but fails to link; see Supported Widths.Several cuPQC-BigInt operations are built for thread execution only, including division and remainder, the scalar conversions, and the trapping error policies; see Warp Execution Coverage.
0.5.0#
There was no separate 0.5.0 release. The changes developed under this version are included in 0.6.0.
0.4.1#
This release includes the following updates:
Library Naming Changes
The cuPQC SDK now encompasses all sub-libraries.
The former cuPQC library (ML-KEM and ML-DSA) is now named cuPQC-PK (Public Key).
The former cuHash library is now named cuPQC-Hash (Cryptographic Hash Functions).
New Features
cuPQC-Hash: Hash Functions
Poseidon2-KoalaBear: The Poseidon2 hash function now supports the KoalaBear field (231 - 224 + 1), in addition to the BabyBear field (231 - 227 + 1).
cuPQC-Hash: Merkle Tree
Multi-block Merkle Tree generation: The Merkle Tree API now supports generating subtrees that can be combined to form larger trees, allowing very large Merkle trees to be computed across multiple CUDA blocks for improved performance and lower latency.
Merkle Tree Support for N = 222: The Merkle Tree API now supports generating trees with 222 leaves. Note that this can only be computed using the multi-block Merkle Tree generation feature.
Performance Improvements
Performance improvements for Merkle Tree generation.
Performance improvements for Poseidon2 hash function.
Bug Fixes
Bumped CUDA Toolkit version to 12.8 for better compatibility. This fixes a compilation error when linking with the cuPQC SDK on ARM64 CPUs.
0.4.0#
This release adds the Poseidon2 hash function to cuHash, as well as a Merkle Tree API that uses any of the hash functions in cuHash.
0.3.0#
This release introduces the cuPQC Software Development Kit. The cuPQC SDK is now a single package download that contains libraries for cryptographic processes. The two libraries that are contained in the cuPQC SDK for the 0.3.0 release are: the cuPQC library, as well as a new library, cuHash. The cuHash library contains GPU accelerated SHA-2, SHA-3, SHAKE hashing algorithms.
Additionally, some performance improvements have been made to cuPQC’s ML-KEM and ML-DSA algorithms.