Releases: mplanchard/cuid-rust
Releases · mplanchard/cuid-rust
cuid v1.3.3, cuid2 v0.1.3
cuid2 v0.1.3, cuid 1.3.3
Upcoming
- The next major release will be a breaking release, dropping the
top-levelcuid()
,slug()
, andis_cuid()
functions in favor of
their version-specific counterparts (see below). - I also intend to split the v1 CUID functionality out into its own
crate and publish it independently, like I have done forcuid2
.
The top-levelcuid
crate will then pull in the sub-crates depending
on features, making it easy to just pull the CUID version you need.
Added
- Provide new top-level functions from the
cuid
library to disambiguate
CUID versions:cuid::cuid1()
: generate a v1 CUID, replacement for deprecatedcuid()
cuid::cuid1_slug()
: generate a v1 CUID slug, replacement for deprecatedslug()
cuid::is_cuid1()
- check whether a string looks like it could be a v1 CUID,
replacement for deprecatedis_cuid()
cuid::is_cuid1_slug()
- check whether a string looks like it could be a v1 CUID
slug, replacement for deprecatedis_cuid()
cuid::cuid2_slug()
- generate a v2 CUID of length 10cuid::is_cuid2_slug()
- check whether a string looks like could be a v2 CUID
slugcuid::Cuid2Constructor
- expose the v2 CUID constructor interface
- Added a couple of functions to
cuid2
for parity with v1 functions:cuid2::slug()
- generate a v2 CUID of length 10cuid2::is_slug()
- check whether a string looks like could be a v2 CUID
slug
- Added support for webassembly builds. Builds are tested for
wasm32-unknown-unknown
andwasm32-wasi
targets. I intend to add Javascript bindings and publish
npm packages in an upcoming update.- The system hostname is not available to WASM, so for the CUID v1
fingerprint algorithm, we instead use a v4 UUID. This does mean the
fingerprint will not be consistent on a host over time, which slightly
diverges from the behavior of CUIDs on other targets. Please open an
issue if this is a problem for you.
- The system hostname is not available to WASM, so for the CUID v1
Changed
- CUID v1 functions are no longer marked as deprecated. The original JS
library was marked as insecure and deprecated by its creators, but this
was merely due to their personal stance that any k-sortable IDs are
insecure and should not be used. This library's author does not share
the same view. New functions have been provided to better disambiguate
creating v1 vs v2 IDs, and functions that do not explicitly specify
a version are still marked as deprecated. - The CUID binaries now randomize the counter prior to generating an ID,
rather than always starting at 0. This ensures that commandline-generated
CUIDs do not lose entropy relative to library-generated CUIDs due to
always having the same counter value. - The
cuid2::is_cuid()
/cuid::is_cuid2()
function has been improved and
now rejects more strings that are invalid CUIDs (contribution by @stormshield-kg) - The
cuid2
binary now supports an optional--length|-l
argument, which
enables specifying the length of the generated CUID (contribution by @der-fruhling)
Removed
- Removed old benchmarks and
#[cfg(nightly)]
blocks. Criterion benchmarks
are the important ones, and those remain.
cuid2 v0.1.2
cuid2 v0.1.2
Changed
- Internal updates to match updated CUID construction logic in the reference
implementation,
specifically:- Simplified hashing function, no longer adding additional entropy in addition
to building a hash - Increased range of possible values for counter initialization
- Random numbers for entropy are now random numbers from [0, 36), rather than
a random choice from a static array of prime numbers
- Simplified hashing function, no longer adding additional entropy in addition
cuid2-v0.1.1
cuid 1.3.2, cuid2 0.1.1
Added
- cuid/cuid2: Moved common utility logic out into a
cuid-util
crate - cuid2: #10: New
is_cuid2
function andis_cuid
alias
Changed
- cuid: Replaced base conversion logic in
cuid
with the logic incuid-util
,
yielding a solid performance improvement for CUID generation (10-20%) - cuid2: Added
#[inline]
annotations for main cuid2 functions
Fixed
cuid-v1.3.2
cuid 1.3.2, cuid2 0.1.1
Added
- cuid/cuid2: Moved common utility logic out into a
cuid-util
crate - cuid2: #10: New
is_cuid2
function andis_cuid
alias
Changed
- cuid: Replaced base conversion logic in
cuid
with the logic incuid-util
,
yielding a solid performance improvement for CUID generation (10-20%) - cuid2: Added
#[inline]
annotations for main cuid2 functions
Fixed
cuid2 v0.1.0
Added
- Added the
cuid2
crate, providing library and binary for v2 of the CUID
standard
cuid v1.3.1
Changed
- Updated deprecation warnings to mention the
cuid2
crate
cuid v1.3.0
Deprecated
- The CUID v1 algorithm is now deprecated,
so all cuid v1 functions have been marked as such. Please use the newcuid2
crate or thecuid2()
function re-exported from thecuid
crate.
Added
- The CI suite now runs both
cargo clippy
andcargo audit
([edb22b5]) - Added nix files for dependency management ([8d2c180])
- Added
cuid2()
function in thecuid
crate
Changed
v1.2.0 - Performance Improvements and Binary Options
v1.1.0 - Improvements to is_slug() and is_cuid()
1.1.0 - 2021-08-03
Fixed
- 0-length strings now return
false
when being checked byis_cuid()
rather
than panicking (a4fca2f, reported by @DeppLearning)
Changed
v1.0.2 - Performance Improvements
- Significant performance improvements for multithreaded usage (~30-35%) due to
the counter now usingAtomicU32
again rather thanArc<Mutex<32>>
, enabled
thanks to the stabilization offetch_update
(3a5cc2e) - Generating CUIDs and slugs is now ~15-20% faster, thanks to reductions in the
number of allocated strings and improvements to how space is pre-allocated
during the generation of radix strings (a09bfad) - Updated non-v1 requirements to require minor version compatibility
- Updated
rand
requirement from~0.7
to~0.8.0
- Switched from Travis to GH Actions