Scala implementation of ULID spec (https://github.com/ulid/spec)
Scala version 2.11, 2.12 as well as 2.13 are supported.
- fast
- has several implementations
- weak. based in java.util.Random
- secure. based in java.security.SecureRandom
- uuid. based in java.util.UUIDwhich is on it's on based onjava.security.SecureRandom
- fastWeakSeed. relies on java.util.Randomfor source of pseudo unique node id and a seed for sequential counter. Also mixes in nano time.
- fastSecureSeed. relies on java.security.SecureRandomfor source of pseudo unique node id and a seed for sequential counter. Also mixes in nano time.
 
- weak. based in 
- type-safe. ULID as a newtype (thanks to https://github.com/estatico/scala-newtype for the inspiration)
- configurable default Rndimplementation aka-Dulid.rnd=secure. Apart from that it can be overridden at implicit scope level.
Computer
Model Name:              MacBook Pro
Model Identifier:        MacBookPro14,2
Processor Name:          Intel Core i5
Processor Speed:         3.1 GHz
Number of Processors:    1
Total Number of Cores:   2
L2 Cache (per Core):     256 KB
L3 Cache:                4 MB
Memory:                  16 GB
Results
[info] Benchmark                     Mode  Cnt        Score        Error  Units
[info] TheBenchmark.fastWeakSeed    thrpt    3  2875568.257 ±  58957.624  ops/s
[info] TheBenchmark.fastSecureSeed  thrpt    3  2878916.344 ± 125614.809  ops/s
[info] TheBenchmark.weak            thrpt    3  2794375.364 ±  27769.778  ops/s
[info] TheBenchmark.secure          thrpt    3   760376.000 ±  84277.655  ops/s
[info] TheBenchmark.uuid            thrpt    3   923135.293 ± 104787.680  ops/s
scala> import ulid._
import ulid._
scala> val id = ULID() // default Rnd was used
id: ulid.ULID = QQZ0ZXDD106C2WZZZZQGA4T700
scala> implicit val rnd: Rnd = Rnd.fastWeakSeed
rnd: ulid.Rnd = ulid.Rnd$$anon$1@5d508d22
scala> val id1 = ULID() // fastWeakSeed Rnd was used implicitly
id1: ulid.ULID = 08J3ZXDD107C2WZZZZ4Z2GD700
scala> val id2 = ULID()(Rnd.secure) // secure Rnd was used explicitly
id2: ulid.ULID = EZ75ZXDD10BP5WQX4RTJK2W8NPlibraryDependencies += "com.github.andyglow"  %% "ulid"  % $latestVersion