All notable changes to this project will be documented in this file.
Nothing unreleased.
6.0.0 - 2024-07-07
This version has breaking changes.
- Added
UuidBuilder
as a helper for generating custom UUIDs (UUIDv8); - Renamed
StringCodec
toStandardStringCodec
; - Renamed
BinaryCodec
toStandardBinaryCodec
; - Removed
GUID.v8()
(deprecated); - Removed
UuidCreator.getNameBasedMD5()
withUUID
as name parameter (deprecated); - Removed
UuidCreator.getNameBasedSHA1()
withUUID
as name parameter (deprecated); - Removed several code-smells in order improve code-quality and adhere to SOLID principles (by Jay Patel);
- Updated references to the IETF standard RFC 9562;
- Many refactorings and optimizations.
5.3.7 - 2023-12-22
Regular maintenance.
5.3.6 - 2023-12-21
Refactor UUID version 7 factory. #98
5.3.5 - 2023-09-24
Deprecates name-based methods with a UUID name parameter.
5.3.4 - 2023-09-23
GUID.v8()
has been deprecated due to recent sudden changes in the UUIDv8 discussions. It will be removed when the new RFC is finally published.
See the latest discussions about UUIDv8:
5.3.3 - 2023-09-03
Add a getTimeOrderedEpoch with instant parameter (by Nicola) #82
5.3.2 - 2023-05-01
Add a faster parser for GUID #81
5.3.1 - 2023-05-01
- Remove the GUID.get() method, synonymous with GUID.toUUID() #80
- Hide MSB and LSB methods used only for tests #79
5.3.0 - 2023-04-30
- Add an alternative to the JDK's built-in UUID #78
- Add a MIN and MAX methods #77
5.2.1 - 2023-04-29
Fix the initial state of TimeOrderedEpochFactory
. #76
5.2.0 - 2022-10-23
- Fix MAX UUID (it was wrong since v5.0.0). #75
- Add a fast method to generate random-based identifiers. #74
5.1.2 - 2022-09-11
Rewrite docs. #73
5.1.1 - 2022-08-21
Optimized UuidComparator
. #71
5.1.0 - 2022-07-09
Add support for RandomGenerator
in Java 17. #70
5.0.0 - 2022-07-02
Please go to v5.2.0 due to incorrect MAX UUID.
This version has breaking changes.
- Added Max UUID (wrong!, fixed in v5.2.0). #67
- Added implementations for UUID v7. #67
- Added minimum support for UUID v8. #67
- Added
UriCodec.isUuidUri()
. #66 - Added
UrnCodec
withUrnCodec.isUuidUrn()
. #66 - Changed
UuidCodec
implementations to explicitly and only throwInvalidUuidException
. #65 - Fixed out-of-order when trying to generate a huge batch of UUID v6 in a loop. #69
4.6.1 - 2022-03-19
Added time interval parameter for ShortPrefixCombFactory
and ShortSuffixCombFactory
constructors. #64
4.6.0 - 2022-03-12
Added UuidComparator
for comparing and sorting UUIDs. #62
Added CustomDivisor
to be used with BaseNCodec
. #63
4.5.0 - 2022-02-14
This version contains has a breaking change.
Remove the Base32CrfCodec
created 16 days ago to wait for the new base-32 format proposed in an IETF draft. #61
4.4.1 - 2022-02-05
Add Clock
parameter for COMB factories and time functions for tests. #60
4.4.0 - 2022-01-28
This version contains breaking changes.
Add credits file for contributors. #58
Remove excessive base-n codecs (breaking changes). #59
4.3.2 - 2022-01-26
Fixed an NPE that occurred since v4.1.4 when trying to get the hardware address on machines with OpenConnect virtual interfaces (by Andrey). #56
4.3.1 - 2021-12-12
Regular maintenance.
4.3.0 - 2021-12-09
Optimize default random function.
4.2.1 - 2021-11-28
Optimize windows time function.
4.2.0 - 2021-11-27
Time function for windows.
Optimize network util.
4.1.4 - 2021-11-27
Optimize default time function.
Optimize mac node id function.
4.1.3 - 2021-11-06
Change the counter's reset range from 256 to 10000.
4.1.2 - 2021-10-03
Regular maintenance.
4.1.1 - 2021-09-13
More optimization for all base-n codecs. #47
Added codecs for base-16, base-32 and base-36 in upper case.
Added more test cases for base-n codecs.
4.1.0 - 2021-09-04
Finish adding OSGi entries to Manifest.MF. #46
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.uuid
.
4.0.2 - 2021-08-29
Add another OSGi entry to Manifest.MF to require Java 8 #46
4.0.1 - 2021-08-29
Add OSGi entries to Manifest.MF #46
4.0.0 - 2021-08-14
The code was restructured. This version contains has breaking changes.
Most people will not be affected by the changes because they only use the static factories of the UuidCreator
facade.
List of changes:
- The strategy interfaces was replaced by JDK functional interfaces.
- The subclasses of
AbstractUuidCreator
was replaced by subclasses ofUuidFactory
. - The new time-based factories can be instantiated using the Builder pattern.
- The abstract time-based factory is ready to implement new proposed versions of UUIDs.
- The
README.md
was simplified. Most of it's contents was moved to Github Wiki.
- Added
ClockSeqFunction
- Added
NodeIdFunction
- Added
RandomFunction
- Added
TimeFunction
- Added
DefaultClockSeqFunction
- Added
DefaultTimeFunction
- Added
DefaultRandomFunction
- Added
DefaultNodeIdFunction
- Added
MacNodeIdFunction
- Added
HashNodeIdFunction
- Added
RandomNodeIdFunction
- Added
CHANGELOG.md
- Added benchmark code
- Modified
UuidCreator
- Modified
UuidTime
- Modified
UuidUtil
- Modified
README.md
- Renamed
AbstractUuidCreator
toUuidFactory
- Renamed
NoArgumentsUuidCreator
toNoArgsFactory
- Renamed
AbstractNameBasedUuidCreator
toAbstNameBasedFactory
- Renamed
AbstractRandomBasedUuidCreator
toAbstRandomBasedFactory
- Renamed
AbstractTimeBasedUuidCreator
toAbstTimeBasedFactory
- Renamed
NameBasedMd5UuidCreator
toNameBasedMd5Factory
- Renamed
NameBasedSha1UuidCreator
toNameBasedSha1Factory
- Renamed
RandomBasedUuidCreator
toRandomBasedFactory
- Renamed
TimeBasedUuidCreator
toTimeBasedFactory
- Renamed
TimeOrderedUuidCreator
toTimeOrderedFactory
- Renamed
DceSecurityUuidCreator
toDceSecurityFactory
- Renamed
PrefixCombCreator
toPrefixCombFactory
- Renamed
ShortPrefixCombCreator
toShortPrefixCombFactory
- Renamed
SuffixCombCreator
toSuffixCombFactory
- Renamed
ShortSuffixCombCreator
toShortSuffixCombFactory
- Removed
ClockSequenceStrategy
// replaced byClockSeqFunction
- Removed
DefaultClockSequenceStrategy
// replaced byDefaultClockSecFunction
- Removed
TimestampStrategy
// replaced byTimeFunction
- Removed
DefaultTimestampStrategy
// replaced byDefaultTimeFunction
- Removed
RandomStrategy
// replaced byRandomFunction
- Removed
DefaultRandomStrategy
// replaced byDefaultRandomFunction
- Removed
NodeIdentifierStrategy
// replaced byNodeIdFunction
- Removed
DefaultNodeIdentifierStrategy
// replaced byDefaultNodeIdFunction
- Removed
MacNodeIdentifierStrategy
// replaced byMacNodeIdFunction
- Removed
HashNodeIdentifierStrategy
// replaced byHashNodeIdFunction
- Removed
RandomNodeIdentifierStrategy
// replaced byRandomNodeIdFunction
- Removed
FixedTimestampStretegy
- Removed
FixedClockSequenceStrategy
- Removed
FixedNodeIdentifierStrategy
- Removed
ClockSequenceController
- Removed
OtherRandomStrategy
- Removed
UuidConverter
3.7.3 - 2021-07-04
Added a module name: com.github.f4b6a3.uuid
for Java 9+. #43
3.7.2 - 2021-06-05
The decoding speed was increased for base-36, base-58, and base-62. Added more tests for base-n codecs. #42
3.7.1 - 2021-05-30
More optimizations for all base-n codecs. #41
3.7.0 - 2021-05-20
Added new base-n codecs for base-36, base-58 and base-62 #39
Many optimizations for all UUID codecs. #38
3.6.0 - 2021-04-08
Added shared instances for UUID codecs. #36
Now the user can choose the algorithm used by SecureRandom by defining a system property or environment variable. #37
3.5.0 - 2021-01-18
Added method extractInstant()
to extract time from COMB #35
- Added
CombUtil.extractPrefix()
// unix time - Added
CombUtil.extractSuffix()
// unix time - Added
CombUtil.extractPrefixInstant()
// Instant - Added
CombUtil.extractSuffixInstant()
// Instant
3.4.2 - 2020-12-31
Regular maintenance.
3.4.1 - 2020-12-21
Finished codecs for base-n, slug, ncname, uri, etc (complement) #30
3.4.0 - 2020-12-20
Added codecs for base-16, base-32 and base-64. #30
Added codecs for UUID Slugs. #30
Added codecs for UUID Names. #31
Added codecs for UUID URIs #32
List of codecs:
BinaryCodec
: for byte arraysStringCodec
: for canonical stringsSlugCodec
: for slugs based on UUIDNcnameCodec
: for NCNames based on UUIDUriCodec
: for URNs wrapped with java.net.URIDotNetGuid1Codec
: for dotNet GuidsDotNetGuid4Codec
: for dotNet GuidsTimeOrderedCodec
: for time-ordered UUIDsBaseNCodec
: for base-16, base-32 and base-64UuidBase16Codec
: base-16UuidBase32Codec
: base-32UuidBase32CrockfordCodec
: base-32 crockfordUuidBase64Codec
: base-64UuidBase64UrlCodec
: base-64-url
3.3.0 - 2020-12-05
Annotate strategy interfaces as functional interfaces #29
3.2.3 - 2020-12-04
Added the option "random" to the system property "uuidcreator.node" and environment variable "UUIDCREATOR_NODE".
3.2.2 - 2020-12-02
Rename the timestamp counter to accumulator #28
3.2.1 - 2020-12-02
Rename the timestamp counter to accumulator #28
3.2.0 - 2020-11-29
Change the DefaultTimestampStrategy
#28
3.1.3 - 2020-11-16
Regular maintenance.
3.1.2 - 2020-11-07
Optimize UUID conversion to and from String.
Now the method UuidConverter#fromString(String) is 5x faster than UUID#fromString(String)
in JDK 8 and 11.
Now the method UuidConverter#toString(String) is 4x faster than UUID#toString()
in JDK 8.
3.1.1 - 2020-10-31
Change name-based generators to prevent thread contention #26
3.1.0 - 2020-10-24
- Added
MachineId
// hash-based machine-id (hash of hostname, MAC and IP) - Added
SharedRandom
// for classes that need a secure random generator
- Change
DefaultRandomStrategy
// don't use TlsSecureRandom (removed) - Change
MacNodeIdentifierStrategy
// don't use NetworkData (removed) - Change
HashNodeIdentifierStrategy
// dont't use Fingerprint (removed) - Update test case
- Update README.md
- Update javadoc
- Coverage: 85.8%
Remove TlsSecureRandom
// replaced by SharedRandom
Remove NetworkData
// too much properties
Remove Fingerprint
// too complex
3.0.0 - 2020-11-18
- Add test case to
NameBasedMd5UuidCreator
// threads in parallel - Add test case to
NameBasedSha1UuidCreator
// threads in parallel
- Change
AbstractNameBasedUuidCreator
// unecessary MessageDigest.reset() - Changed
DefaultTimestampStrategy
// wait next millisec if overrun occurs - Updated test cases
- Updated README.md
- Updated javadoc
- Test coverage: 87.4%
- Removed UuidCreatorException // used by overrun exception
- Removed IllegalUuidException // use IllegalArgumentException instead
- Removed UuidSettings.getNodeIdentifierDeprecated // remove deprecated
- Renamed UuidSettings to UuidCreatorSettings