uuid
ulid
uuid | ulid | |
---|---|---|
6 | 4 | |
943 | 644 | |
3.2% | - | |
8.3 | 0.0 | |
29 days ago | about 1 year ago | |
Rust | Python | |
GNU General Public License v3.0 or later | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
uuid
-
Python uuid-utils in Rust
Digging deeper now I found these links, so basically it uses `ThreadRng` from the `rand` crate. It mentions that the `ThreadRng` also seeds data from `OsRng` so I guess it's not much different, but I'm no expert in this area so I will post the links so if you find anything useful, please share:https://github.com/uuid-rs/uuid/issues/529https://github.com/uuid-rs/uuid/pull/545https://docs.rs/rand/latest/rand/rngs/struct.ThreadRng.html
- cargo install uuid should give me a uuid tool
-
What's new in SeaORM 0.9.0
Upgrade uuid to 1.0
-
New UUID Formats from IETF
Those aren’t bytes — they’re integers of various sizes. (Hint: do not use integer types in C code for portable data structures. ntohl, etc are a mess. Just use arrays of bytes.)
I don’t know the whole history, but MS somehow took this structure at face value and caused problems like this:
https://github.com/uuid-rs/uuid/issues/277
So, if you want to do anything (e.g. sorting) that depends on the representation of a UUID (or even depends on converting between string and binary representations), be aware that UUIDs coming from Windows may be little-endian. In my book, this is a Windows bug, but opinions may differ here.
-
Announcing uuid-simd, hex-simd and base64-simd!
A: For uuid, the maintainer perfers to wait for stdsimd instead of maintaining different implementations. https://github.com/uuid-rs/uuid/issues/561.
- Getting ready for uuid 1.0
ulid
-
Plan B for UUIDs: double AES-128
I really like ULID for this problem (e.g: https://github.com/ahawker/ulid)
- same number of bytes as UUID
- start with a date, so has great locality. Plus you get extra information in the uid that you can extract.
- can be created from an existing date or uuid, and exported to a uuid, so there is a migration path
-
New UUID Formats from IETF
As the author of a popular ULID implementation in python[1], the spec has no stewardship anymore. The specification repo[2] has plenty of open issues and no real guidance or communication beyond language implementation authors discussing corner cases. The monotonic functionality is ambiguous (at best) and is implemented differently per-languages [3].
Functionality, UUIDv7 might be the _same_ but the hope would be for a more rigid specification for interoperability.
[1]: https://github.com/ahawker/ulid
[2]: https://github.com/ulid/spec
[3]: https://github.com/ulid/spec/issues/11
-
Sortable Collision-Free UUIDs
Looks similar to ULID[0] (I am the author of a popular python implementation[1]).
It appears to have a similar constraint that two ID's generated within the same timestamp (ms, ns) have no strong guarantee of ordering. That might not be a deal breaker depending on your use case but something to consider.
* https://github.com/ulid/spec
* https://github.com/ahawker/ulid
- Usando ULIDs para criar ordem em dados não ordenados
What are some alternatives?
fastuuid - FastUUID is a library which provides CPython bindings to Rust's UUID library
ksuid - K-Sortable Globally Unique IDs
rust-base64 - base64, in rust
python-ulid - ULID implementation for Python
ulid-lite - Generate unique, yet sortable identifiers
uuid - Generate RFC-compliant UUIDs in JavaScript
Hashids.java - Hashids algorithm v1.0.0 implementation in Java
UUID - :snowflake: A PHP library for generating universally unique identifiers (UUIDs).
dart-uuid - Generate RFC4122(v1,v4,v5,v6,v7,v8) UUIDs
EXREX - Irregular methods on regular expressions
time - The most used Rust library for date and time handling.
xeger - Library to generate random strings from regular expressions.