2021-02-13 23:15:03 +00:00
# Changelog
All notable changes to this project will be documented in this file.
## [Unreleased]
2024-01-02 21:55:03 +00:00
## [5.2.3] - 2024-01-02
2023-12-17 19:33:41 +00:00
2024-01-02 21:55:03 +00:00
- Fix `ArrayIndexOutOfBoundsException` on input with multiple bytes for a character. #32
- Replace `synchronized` keyword with `ReentrantLock` .
- Remove factory methods that accept an optional `Clock` (for tests).
2023-12-17 19:33:41 +00:00
2023-09-03 08:29:54 +00:00
## [5.2.2] - 2023-09-03
Initialize the monotonic factory with the minimum timestamp.
2023-07-27 23:00:03 +00:00
## [5.2.1] - 2023-07-27
- Add factory methods that accept a `LongSuplier` that returns the current time in milliseconds. (by Michele Sollecito) #27
2023-04-26 02:30:07 +00:00
2023-04-30 05:34:28 +00:00
## [5.2.0] - 2023-04-30
2023-04-26 02:30:07 +00:00
2023-04-30 05:34:28 +00:00
Add Hash ULID generator methods. #25
2023-04-30 06:39:38 +00:00
2023-04-30 05:34:28 +00:00
Add a MIN and MAX constants and methods. #26
2021-07-25 20:55:29 +00:00
2022-10-22 18:01:18 +00:00
## [5.1.0] - 2022-10-22
Add a fast method to generate identifiers. #22
2022-09-17 12:45:57 +00:00
## [5.0.2] - 2022-09-17
Rewrite docs. #21
2022-08-21 10:43:11 +00:00
## [5.0.1] - 2022-08-21
2022-09-17 12:45:57 +00:00
Optimize comparison and hash. #20
2022-08-21 10:43:11 +00:00
2022-07-09 17:43:36 +00:00
## [5.0.0] - 2022-07-09
Add support for RandomGenerator in Java 17. #19
2022-04-22 00:34:33 +00:00
## [4.2.1] - 2022-04-21
Handle clock drift. #18
2022-04-21 17:53:06 +00:00
## [4.2.0] - 2022-04-21
Handle clock drift. #18
## [4.1.2] - 2021-11-06
2021-11-06 13:06:14 +00:00
Compare internal fields as unsigned integers.
2021-10-02 12:31:56 +00:00
## [4.1.1] - 2021-10-03
Regular maintenance.
2021-09-04 04:49:53 +00:00
## [4.1.0] - 2021-09-04
Add OSGi entries to Manifest.MF #16
Module and bundle names are the same as the root package name.
The OSGi symbolic name is the same as the JPMS module name: `com.github.f4b6a3.ulid` .
2021-08-08 04:26:04 +00:00
## [4.0.0] - 2021-08-08
Now you call `UlidFactory.newInstance()` and it's variants to get a new `UlidFactory` .
### Added
2021-10-02 12:31:19 +00:00
- Added `UlidFactory.newInstance()`
- Added `UlidFactory.newInstance(Random)`
- Added `UlidFactory.newInstance(Supplier<byte[]>)`
- Added `UlidFactory.newMonotonicInstance()`
- Added `UlidFactory.newMonotonicInstance(Random)`
- Added `UlidFactory.newMonotonicInstance(Supplier<byte[]>)`
- Added benchmark code to compare ULID with UUID
2021-08-08 04:26:04 +00:00
### Removed
2021-10-02 12:31:19 +00:00
- Removed `DefaultFactory`
- Removed `MonotonicFactory`
- Removed `Ulid.toUpperCase()`
- Removed `RandomGenerator`
2021-07-25 20:55:29 +00:00
2021-07-18 04:21:41 +00:00
## [3.2.0] - 2021-07-17
2021-02-14 05:28:49 +00:00
2021-07-18 04:21:41 +00:00
Simplified the use of `UlidFactory` with other random generators.
### Added
2021-10-02 12:31:19 +00:00
- Added constructors in `UlidFactory` for random generators.
2021-02-13 23:15:03 +00:00
2021-07-17 17:02:34 +00:00
## [3.1.1] - 2021-07-17
2021-07-18 04:21:41 +00:00
Creates a module name be used in Java 9+.
2021-07-17 17:02:34 +00:00
### Added
2021-10-02 12:31:19 +00:00
- Added module name for Java 9+
2021-02-13 23:15:03 +00:00
## [3.1.0] - 2021-02-13
Adds static methods for extracting information from ULIDs.
### Added
2021-10-02 12:31:19 +00:00
- Added `CHANGELOG.md`
- Added static method `Ulid.getInstant(String)`
- Added static method `Ulid.getTime(String)`
- Added static method `Ulid.getRandom(String)`
2021-02-13 23:15:03 +00:00
### Changed
2021-10-02 12:31:19 +00:00
- Updated `README.md`
- Updated test cases
2021-02-13 23:15:03 +00:00
## [3.0.1] - 2021-01-30
### Changed
2021-10-02 12:31:19 +00:00
- Renamed subpackage `creator` to `factory`
2021-02-13 23:15:03 +00:00
## [3.0.0] - 2021-01-30
This version breaks compatibility. It is a rewrite from scratch.
2021-07-17 17:02:34 +00:00
Now the `ulid-creator` can generate two types of ULID: default (non-monotonic) and monotonic. Until version 2.3.3 this library only generated monotonic ULIDs.
2021-02-13 23:15:03 +00:00
### Added
2021-10-02 12:31:19 +00:00
- Added class `Ulid`
- Added abstract class `UlidFactory`
- Added class `DefaultUlidFactory`
- Added class `MonotonicUlidFactory`
- Added functional interface `RandomGenerator`
- Added class `DefaultRandomGenerator`
- Added static method `UlidCreator.getUlid(): Ulid`
- Added static method `UlidCreator.getUlid(long): Ulid`
- Added static method `UlidCreator.getMonotonicUlid(): Ulid`
- Added static method `UlidCreator.getMonotonicUlid(long): Ulid`
- Added static method `UlidCreator.getDefaultFactory(): UlidFactory`
- Added static method `UlidCreator.getMonotonicFactory(): UlidFactory`
2021-02-13 23:15:03 +00:00
### Changed
2021-10-02 12:31:19 +00:00
- Rewrote `UlidCreator`
- Rewrote all `README.md`
- Rewrote all test cases
2021-02-13 23:15:03 +00:00
### Removed
2021-10-02 12:31:19 +00:00
- Removed class `UlidStruct` , replaced by `Ulid`
- Removed class `UlidUtil` , use`Ulid` instead
- Removed class `UlidConverter` , use `Ulid` instead
- Removed class `UlidValidator` , use`Ulid` instead
- Removed class `UlidSpecCreator` , replaced by `UlidFactory`
- Removed class `InvalidUlidException` , replaced by `IllegalArgumentException`
- Removed interface `RandomStrategy` , replaced by `RandomGenerator`
- Removed class `DefaultRandomStrategy` , replaced by `DefaultRandomGenerator`
- Removed class `OtherRandomStrategy`
- Removed interface `TimestampStrategy`
- Removed class `DefaultTimestampStrategy`
- Removed class `FixedTimestampStrategy`
- Removed static method `UlidCreator.fromString(String): UUID`
- Removed static method `UlidCreator.toString(UUID): String`
- Removed static method `UlidCreator.getUlid(): UUID`
- Removed static method `UlidCreator.getUlid4(): UUID`
- Removed static method `UlidCreator.getUlidString(): String`
- Removed static method `UlidCreator.getUlidString4(): String`
- Removed static method `UlidCreator.getUlidSpecCreator(): UlidSpecCreator`
2021-02-13 23:15:03 +00:00
## [2.3.3] - 2020-11-16
Optimization and housekeeping.
### Added
2021-10-02 12:31:19 +00:00
- Added test cases
2021-02-13 23:15:03 +00:00
### Changed
2021-10-02 12:31:19 +00:00
- Optimized `UlidSpecCreator`
- Updated `README.md`
2021-02-13 23:15:03 +00:00
### Removed
2021-10-02 12:31:19 +00:00
- Removed unused code
2021-02-13 23:15:03 +00:00
## [2.3.2] - 2020-11-09
Only Optimization.
### Changed
2021-10-02 12:31:19 +00:00
- Optimized `UlidValidator`
2021-02-13 23:15:03 +00:00
## [2.3.1] - 2020-11-08
Added static methods for extracting Unix time.
### Added
2021-10-02 12:31:19 +00:00
- Added static method `UlidUtil.extractUnixMilliseconds(UUID)`
- Added static method `UlidUtil.extractUnixMilliseconds(String)`
2021-02-13 23:15:03 +00:00
### Changed
2021-10-02 12:31:19 +00:00
- Moved UUID v4 generation to `UlidStruct`
- Updated test cases
2021-02-13 23:15:03 +00:00
## [2.3.0] - 2020-11-08
Now it can generate UUIDs and ULIDs compatible with RFC-4122 UUID v4.
### Added
2021-10-02 12:31:19 +00:00
- Added static method `UlidCreator.getUlid4()`
- Added static method `UlidCreator.getUlidString4()`
- Added method `UlidSpecCreator.create4()`
- Added method `UlidSpecCreator.createString4()`
2021-02-13 23:15:03 +00:00
### Changed
2021-10-02 12:31:19 +00:00
- Updated `README.md`
- Updated test cases
2021-02-13 23:15:03 +00:00
## [2.2.0] - 2020-11-08
Now the generation of ULID in canonical string format is 2.5x faster than before.
### Added
2021-10-02 12:31:19 +00:00
- Added `UlidStruct` for internal use
- Added test cases
2021-02-13 23:15:03 +00:00
### Changed
2021-10-02 12:31:19 +00:00
- Optimized `UlidSpecCreator` by using `UlidStruct`
- Optimized `UlidConverter` by using `UlidStruct`
- Optimized `UlidValidator`
- Updated `README.md`
- Updated javadoc
2021-02-13 23:15:03 +00:00
## [2.1.0] - 2020-10-17
Removed the overrun exception because it is extremely unlikely to occur
### Changed
2021-10-02 12:31:19 +00:00
- Updated `README.md`
- Updated test cases
- Updated javadoc
2021-02-13 23:15:03 +00:00
### Removed
2021-10-02 12:31:19 +00:00
- Removed `UlidCreatorException` , used in overruns
2021-02-13 23:15:03 +00:00
## [2.0.0] - 2020-07-04
This version breaks compatibility.
### Added
2021-10-02 12:31:19 +00:00
- Added `RandomStrategy`
- Added `DefaultRandomStrategy`
- Added `OtherRandomStrategy`
- Added test cases
2021-02-13 23:15:03 +00:00
### Changed
2021-10-02 12:31:19 +00:00
- Changed `UlidCreator`
- Renamed `UlidBasedGuidCreator` to `UlidSpecCreator`
- Changed JDK version from 11 to 8 for compatibility with Java 8
- Optimized `UlidConverter.fromString(String)`
- Optimized `UlidConverter.toString(UUID)`
- Optimized `UlidValidator.isValid(String)`
- Updated `README.md`
- Updated `pom.xml`
- Updated test cases
- Updated javadoc
2021-02-13 23:15:03 +00:00
## [1.1.0] - 2020-04-18
### Changed
2021-10-02 12:31:19 +00:00
- Renamed `GuidCreator` to `UlidBasedGuidCreator`
- Changed the overrun exception to be thrown when 2^80 requests occurs within the same msec
- Updated `README.md`
- Updated `pom.xml`
- Updated test cases
2021-02-13 23:15:03 +00:00
### Removed
2021-10-02 12:31:19 +00:00
- Removed unused code
2021-02-13 23:15:03 +00:00
## [1.0.0] - 2020-02-23
Project created as an alternative Java implementation of [ULID spec ](https://github.com/ulid/spec ).
### Added
2021-10-02 12:31:19 +00:00
- Added `UlidCreator`
- Added `GuidCreator`
- Added `TimestampStrategy`
- Added `DefaultTimestampStrategy`
- Added `FixedTimestampStrategy`
- Added `XorshiftRandom`
- Added `Xorshift128PlusRandom`
- Added `Base32Util`
- Added `ByteUtil`
- Added `FingerprintUtil`
- Added `NetworkData`
- Added `UlidUtil`
- Added `UlidCreatorException`
- Added `README.md`
- Added `pom.xml`
- Added `LICENSE`
- Added test cases
2021-02-13 23:15:03 +00:00
2023-12-17 19:33:41 +00:00
[unreleased]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-5.2.3...HEAD
[5.2.3]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-5.2.2...ulid-creator-5.2.3
2023-09-03 08:29:54 +00:00
[5.2.2]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-5.2.1...ulid-creator-5.2.2
2023-07-27 23:00:03 +00:00
[5.2.1]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-5.2.0...ulid-creator-5.2.1
2023-04-26 02:30:07 +00:00
[5.2.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-5.1.0...ulid-creator-5.2.0
2022-10-22 18:05:16 +00:00
[5.1.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-5.0.2...ulid-creator-5.1.0
2022-10-22 18:01:18 +00:00
[5.0.2]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-5.0.1...ulid-creator-5.0.2
2022-08-21 10:43:11 +00:00
[5.0.1]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-5.0.0...ulid-creator-5.0.1
2022-07-09 17:43:36 +00:00
[5.0.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-4.2.1...ulid-creator-5.0.0
2022-04-22 00:34:33 +00:00
[4.2.1]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-4.2.0...ulid-creator-4.2.1
2022-04-21 17:53:06 +00:00
[4.2.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-4.1.2...ulid-creator-4.2.0
2021-11-06 13:06:14 +00:00
[4.1.2]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-4.1.1...ulid-creator-4.1.2
2021-10-02 12:31:56 +00:00
[4.1.1]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-4.1.0...ulid-creator-4.1.1
2021-09-04 04:49:53 +00:00
[4.1.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-4.0.0...ulid-creator-4.1.0
2021-08-08 04:26:04 +00:00
[4.0.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-3.2.0...ulid-creator-4.0.0
2021-07-18 04:57:23 +00:00
[3.2.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-3.1.1...ulid-creator-3.2.0
[3.1.1]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-3.1.0...ulid-creator-3.1.1
2021-02-13 23:15:03 +00:00
[3.1.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-3.0.1...ulid-creator-3.1.0
[3.0.1]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-3.0.0...ulid-creator-3.0.1
[3.0.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-2.3.3...ulid-creator-3.0.0
[2.3.3]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-2.3.2...ulid-creator-2.3.3
[2.3.2]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-2.3.1...ulid-creator-2.3.2
[2.3.1]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-2.3.0...ulid-creator-2.3.1
[2.3.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-2.2.0...ulid-creator-2.3.0
[2.2.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-2.1.0...ulid-creator-2.2.0
[2.1.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-2.0.0...ulid-creator-2.1.0
[1.1.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-1.1.0...ulid-creator-2.0.0
[2.0.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-1.1.0...ulid-creator-2.0.0
[1.1.0]: https://github.com/f4b6a3/ulid-creator/compare/ulid-creator-1.0.0...ulid-creator-1.1.0
[1.0.0]: https://github.com/f4b6a3/ulid-creator/releases/tag/ulid-creator-1.0.0