A UUID package originally forked from github.com/satori/go.uuid
Note: This release is identical to v3.3.0 and was created by mistake. It is safe to use either.
UUID
type now satisfied fmt.Formatter; see the .Format()
method
docs for more info. Contributed by Dylan Bourque (@dylan-bourque) in #72.UUID
type now satisfied fmt.Formatter; see the .Format()
method
docs for more info. Contributed by Dylan Bourque (@dylan-bourque) in #72.dep
and modules, amongst other concerns.Please see #61, #66, and #67 for more info.
This release improves the interoperability of package uuid with ORMs such as gorm, per PR #58. Thanks to Jun Jie Nan (@nanjj) for the contribution.
Added go.mod
file.
This release includes new functionality (PR #31) to help consumers extract a time.Time value out of a Version 1 UUID.
UUIDs have their own internal timestamp, which is a counter of 100ns increments
since the start of the Gregorian Calendar (00:00:00 UTC on 15 Oct, 1582). To
represent that a new Timestamp
type was added, with a Time()
method used to
convert the timestamp value to a time.Time
value.
To extract the timestamp from a Version 1 UUID, a new package
function (TimestampFromV1
) was added to extract a Timestamp
out of a UUID.
If it's not a V1 UUID it returns an error.
Big thanks to Ron Kuris (@rkuris) for this contribution!
v3.0.0 denotes the first major change by The Gofrs, and encompasses feature requests / PRs that had been opened against the original project. This version includes the following breaking changes:
sql.NullUUID
type to support both the json.Marshaler
and
json.Unmarshaler
interfaces, which I'll provide more details on later. (#38)Equal
function from the package, as the UUID type is an array
type and so you can use ==
directly for comparisons. (#36 #39)This version also exposes the internal UUID generator, with constructors, so that consumers can provide their own HWAddrFunc to get the hardware address of the node. This can be used by consumers who want to randomize the MAC address in a V1 UUID. (#42)
In regards to the JSON change, the sql.NullUUID
type is one that's used with
the database/sql
package to support columns that can contain UUIDs or a NULL
value. This means it's a struct with a UUID
and Valid
field, so previously a
sql.NullUUID
would marshal to JSON like so:
{
"uuid": {
"uuid": "3bdef553-9b6a-4620-8a5f-b94bf22a2520",
"valid": true
}
}
By implementing the right interfaces from the JSON package, it'll now marshal like so:
{
"uuid": "3bdef553-9b6a-4620-8a5f-b94bf22a2520"
}
Version 2.1.0 is functionally equivalent to 2.0.1. It introduces a documentation
change to indicate that the package's Equal
function is deprecated in favor of
just comparing two UUID values to one another using ==
. This change was made
in #36.
We plan on removing this function in v3.0.0.
This change includes two small fixes to the Equal
package function both done
within #34:
bytes.Equal
This is first release of this package as github.com/gofrs/uuid
, after having
been forked from github.com/satori/go.uuid
at 36e9d2ebbde5e3f13ab2e25625fd453271d6522e.
The reason behind the decision to fork was due to lack of engagement from the original author, when there were fatal bugs present. The intent is to keep up the support of this package by not having the burden rest on one individual.
This is a major version bump as the forked project introduced breaking changes (0ef6afb2f6cd) after v1.2.0 that were never captured in a release. These changes were the addition of error return values of some of the UUID generation methods.
A major bug was fixed (#7) that would have resulted in UUIDs that weren't so unique. The original bug report is here: https://github.com/satori/go.uuid/issues/73
In addition to that, some small API enhancements/fixes were made:
DefaultGenerator
(#9)While they have no impact on the functional usage of this package, the following improvements were also made in areas ranging from docs to testing:
gocheck
and are stdlib only (#17)This release wouldn't be anywhere near as polished if it weren't for the help of a few people in the Go community. Alphabetized by their GitHub handles:
There are also a few people who provided input in the #gofrs Slack channel or on issues / PRs: