aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/ramsey/uuid/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/ramsey/uuid/CHANGELOG.md')
-rw-r--r--vendor/ramsey/uuid/CHANGELOG.md607
1 files changed, 604 insertions, 3 deletions
diff --git a/vendor/ramsey/uuid/CHANGELOG.md b/vendor/ramsey/uuid/CHANGELOG.md
index 57b7f5ea7..e65960558 100644
--- a/vendor/ramsey/uuid/CHANGELOG.md
+++ b/vendor/ramsey/uuid/CHANGELOG.md
@@ -21,6 +21,597 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
### Security
+## [4.1.1] - 2020-08-18
+
+### Fixed
+
+* Allow use of brick/math version 0.9
+
+
+## [4.1.0] - 2020-07-28
+
+### Changed
+
+* Improve performance of `Uuid::fromString()`, `Uuid::fromBytes()`,
+ `UuidInterface#toString()`, and `UuidInterface#getBytes()`. See PR
+ [#324](https://github.com/ramsey/uuid/pull/324) for more information.
+
+
+## [4.0.1] - 2020-03-29
+
+### Fixed
+
+* Fix collection deserialization errors due to upstream `allowed_classes` being
+ set to `false`. For details, see [ramsey/uuid#303](https://github.com/ramsey/uuid/issues/303)
+ and [ramsey/collection#47](https://github.com/ramsey/collection/issues/47).
+
+
+## [4.0.0] - 2020-03-22
+
+### Added
+
+* Add support for version 6 UUIDs, as defined by <http://gh.peabody.io/uuidv6/>,
+ including the static method `Uuid::uuid6()`, which returns a
+ `Nonstandard\UuidV6` instance.
+* Add ability to generate version 2 (DCE Security) UUIDs, including the static
+ method `Uuid::uuid2()`, which returns an `Rfc4122\UuidV2` instance.
+* Add classes to represent each version of RFC 4122 UUID. When generating new
+ UUIDs or creating UUIDs from existing strings, bytes, or integers, if the UUID
+ is an RFC 4122 variant, one of these instances will be returned:
+ * `Rfc4122\UuidV1`
+ * `Rfc4122\UuidV2`
+ * `Rfc4122\UuidV3`
+ * `Rfc4122\UuidV4`
+ * `Rfc4122\UuidV5`
+ * `Rfc4122\NilUuid`
+* Add classes to represent version 6 UUIDs, GUIDs, and nonstandard
+ (non-RFC 4122 variant) UUIDs:
+ * `Nonstandard\UuidV6`
+ * `Guid\Guid`
+ * `Nonstandard\Uuid`
+* Add `Uuid::fromDateTime()` to create version 1 UUIDs from instances of
+ `\DateTimeInterface`.
+* The `\DateTimeInterface` instance returned by `UuidInterface::getDateTime()`
+ (and now `Rfc4122\UuidV1::getDateTime()`) now includes microseconds, as
+ specified by the version 1 UUID.
+* Add `Validator\ValidatorInterface` and `Validator\GenericValidator` to allow
+ flexibility in validating UUIDs/GUIDs.
+ * The default validator continues to validate UUID strings using the same
+ relaxed validation pattern found in the 3.x series of ramsey/uuid.
+ * Introduce `Rfc4122\Validator` that may be used for strict validation of
+ RFC 4122 UUID strings.
+ * Add ability to change the default validator used by `Uuid` through
+ `FeatureSet::setValidator()`.
+ * Add `getValidator()` and `setValidator()` to `UuidFactory`.
+* Add `Provider\Node\StaticNodeProvider` to assist in setting a custom static
+ node value with the multicast bit set for version 1 UUIDs.
+* Add the following new exceptions:
+ * `Exception\BuilderNotFoundException` -
+ Thrown to indicate that no suitable UUID builder could be found.
+ * `Exception\DateTimeException` -
+ Thrown to indicate that the PHP DateTime extension encountered an
+ exception/error.
+ * `Exception\DceSecurityException` -
+ Thrown to indicate an exception occurred while dealing with DCE Security
+ (version 2) UUIDs.
+ * `Exception\InvalidArgumentException` -
+ Thrown to indicate that the argument received is not valid. This extends the
+ built-in PHP `\InvalidArgumentException`, so there should be no BC breaks
+ with ramsey/uuid throwing this exception, if you are catching the PHP
+ exception.
+ * `Exception\InvalidBytesException` -
+ Thrown to indicate that the bytes being operated on are invalid in some way.
+ * `Exception\NameException` -
+ Thrown to indicate that an error occurred while attempting to hash a
+ namespace and name.
+ * `Exception\NodeException` -
+ Throw to indicate that attempting to fetch or create a node ID encountered
+ an error.
+ * `Exception\RandomSourceException` -
+ Thrown to indicate that the source of random data encountered an error.
+ * `Exception\TimeSourceException` -
+ Thrown to indicate that the source of time encountered an error.
+ * `Exception\UnableToBuildUuidException` -
+ Thrown to indicate a builder is unable to build a UUID.
+* Introduce a `Builder\FallbackBuilder`, used by `FeatureSet` to help decide
+ whether to return a `Uuid` or `Nonstandard\Uuid` when decoding a
+ UUID string or bytes.
+* Add `Rfc4122\UuidInterface` to specifically represent RFC 4122 variant UUIDs.
+* Add `Rfc4122\UuidBuilder` to build RFC 4122 variant UUIDs. This replaces the
+ existing `Builder\DefaultUuidBuilder`, which is now deprecated.
+* Introduce `Math\CalculatorInterface` for representing calculators to perform
+ arithmetic operations on integers.
+* Depend on [brick/math](https://github.com/brick/math) for the
+ `Math\BrickMathCalculator`, which is the default calculator used by this
+ library when math cannot be performed in native PHP due to integer size
+ limitations. The calculator is configurable and may be changed, if desired.
+* Add `Converter\Number\GenericNumberConverter` and
+ `Converter\Time\GenericTimeConverter` which will use the calculator provided
+ to convert numbers and time to values for UUIDs.
+* Introduce `Type\Hexadecimal`, `Type\Integer`, `Type\Decimal`, and `Type\Time`
+ for improved type-safety when dealing with arbitrary string values.
+* Add a `Type\TypeInterface` that each of the ramsey/uuid types implements.
+* Add `Fields\FieldsInterface` and `Rfc4122\FieldsInterface` to define
+ field layouts for UUID variants. The implementations `Rfc4122\Fields`,
+ `Guid\Fields`, and `Nonstandard\Fields` store the 16-byte,
+ binary string representation of the UUID internally, and these manage
+ conversion of the binary string into the hexadecimal field values.
+* Introduce `Builder\BuilderCollection` and `Provider\Node\NodeProviderCollection`.
+ These are typed collections for providing builders and node providers to
+ `Builder\FallbackBuilder` and `Provider\Node\FallbackNodeProvider`, respectively.
+* Add `Generator\NameGeneratorInterface` to support alternate methods of
+ generating bytes for version 3 and version 5 name-based UUID. By default,
+ ramsey/uuid uses the `Generator\DefaultNameGenerator`, which uses the standard
+ algorithm this library has used since the beginning. You may choose to use the
+ new `Generator\PeclUuidNameGenerator` to make use of the new
+ `uuid_generate_md5()` and `uuid_generate_sha1()` functions in
+ [ext-uuid version 1.1.0](https://pecl.php.net/package/uuid).
+
+### Changed
+
+* Set minimum required PHP version to 7.2.
+* This library now works on 32-bit and 64-bit systems, with no degradation in
+ functionality.
+* By default, the following static methods will now return specific instance
+ types. This should not cause any BC breaks if typehints target `UuidInterface`:
+ * `Uuid::uuid1` returns `Rfc4122\UuidV1`
+ * `Uuid::uuid3` returns `Rfc4122\UuidV3`
+ * `Uuid::uuid4` returns `Rfc4122\UuidV4`
+ * `Uuid::uuid5` returns `Rfc4122\UuidV5`
+* Accept `Type\Hexadecimal` for the `$node` parameter for
+ `UuidFactoryInterface::uuid1()`. This is in addition to the `int|string` types
+ already accepted, so there are no BC breaks. `Type\Hexadecimal` is now the
+ recommended type to pass for `$node`.
+* Out of the box, `Uuid::fromString()`, `Uuid::fromBytes()`, and
+ `Uuid::fromInteger()` will now return either an `Rfc4122\UuidInterface`
+ instance or an instance of `Nonstandard\Uuid`, depending on whether the input
+ contains an RFC 4122 variant UUID with a valid version identifier. Both
+ implement `UuidInterface`, so BC breaks should not occur if typehints use the
+ interface.
+* Change `Uuid::getFields()` to return an instance of `Fields\FieldsInterface`.
+ Previously, it returned an array of integer values (on 64-bit systems only).
+* `Uuid::getDateTime()` now returns an instance of `\DateTimeImmutable` instead
+ of `\DateTime`.
+* Make the following changes to `UuidInterface`:
+ * `getHex()` now returns a `Type\Hexadecimal` instance.
+ * `getInteger()` now returns a `Type\Integer` instance. The `Type\Integer`
+ instance holds a string representation of a 128-bit integer. You may then
+ use a math library of your choice (bcmath, gmp, etc.) to operate on the
+ string integer.
+ * `getDateTime()` now returns `\DateTimeInterface` instead of `\DateTime`.
+ * Add `__toString()` method.
+ * Add `getFields()` method. It returns an instance of `Fields\FieldsInterface`.
+* Add the following new methods to `UuidFactoryInterface`:
+ * `uuid2()`
+ * `uuid6()`
+ * `fromDateTime()`
+ * `fromInteger()`
+ * `getValidator()`
+* This library no longer throws generic exceptions. However, this should not
+ result in BC breaks, since the new exceptions extend from built-in PHP
+ exceptions that this library previously threw.
+ * `Exception\UnsupportedOperationException` is now descended from
+ `\LogicException`. Previously, it descended from `\RuntimeException`.
+* Change required constructor parameters for `Uuid`:
+ * Change the first required constructor parameter for `Uuid` from
+ `array $fields` to `Rfc4122\FieldsInterface $fields`.
+ * Add `Converter\TimeConverterInterface $timeConverter` as the fourth
+ required constructor parameter for `Uuid`.
+* Change the second required parameter of `Builder\UuidBuilderInterface::build()`
+ from `array $fields` to `string $bytes`. Rather than accepting an array of
+ hexadecimal strings as UUID fields, the `build()` method now expects a byte
+ string.
+* Add `Converter\TimeConverterInterface $timeConverter` as the second required
+ constructor parameter for `Rfc4122\UuidBuilder`. This also affects the
+ now-deprecated `Builder\DefaultUuidBuilder`, since this class now inherits
+ from `Rfc4122\UuidBuilder`.
+* Add `convertTime()` method to `Converter\TimeConverterInterface`.
+* Add `getTime()` method to `Provider\TimeProviderInterface`. It replaces the
+ `currentTime()` method.
+* `Provider\Node\FallbackNodeProvider` now accepts only a
+ `Provider\Node\NodeProviderCollection` as its constructor parameter.
+* `Provider\Time\FixedTimeProvider` no longer accepts an array but accepts only
+ `Type\Time` instances.
+* `Provider\NodeProviderInterface::getNode()` now returns `Type\Hexadecimal`
+ instead of `string|false|null`.
+* `Converter/TimeConverterInterface::calculateTime()` now returns
+ `Type\Hexadecimal` instead of `array`. The value is the full UUID timestamp
+ value (count of 100-nanosecond intervals since the Gregorian calendar epoch)
+ in hexadecimal format.
+* Change methods in `NumberConverterInterface` to accept and return string values
+ instead of `mixed`; this simplifies the interface and makes it consistent.
+* `Generator\DefaultTimeGenerator` no longer adds the variant and version bits
+ to the bytes it returns. These must be applied to the bytes afterwards.
+* When encoding to bytes or decoding from bytes, `OrderedTimeCodec` now checks
+ whether the UUID is an RFC 4122 variant, version 1 UUID. If not, it will throw
+ an exception—`InvalidArgumentException` when using
+ `OrderedTimeCodec::encodeBinary()` and `UnsupportedOperationException` when
+ using `OrderedTimeCodec::decodeBytes()`.
+
+### Deprecated
+
+The following functionality is deprecated and will be removed in ramsey/uuid
+5.0.0.
+
+* The following methods from `UuidInterface` and `Uuid` are deprecated. Use their
+ counterparts on the `Rfc4122\FieldsInterface` returned by `Uuid::getFields()`.
+ * `getClockSeqHiAndReservedHex()`
+ * `getClockSeqLowHex()`
+ * `getClockSequenceHex()`
+ * `getFieldsHex()`
+ * `getNodeHex()`
+ * `getTimeHiAndVersionHex()`
+ * `getTimeLowHex()`
+ * `getTimeMidHex()`
+ * `getTimestampHex()`
+ * `getVariant()`
+ * `getVersion()`
+* The following methods from `Uuid` are deprecated. Use the `Rfc4122\FieldsInterface`
+ instance returned by `Uuid::getFields()` to get the `Type\Hexadecimal` value
+ for these fields. You may use the new `Math\CalculatorInterface::toIntegerValue()`
+ method to convert the `Type\Hexadecimal` instances to instances of
+ `Type\Integer`. This library provides `Math\BrickMathCalculator`, which may be
+ used for this purpose, or you may use the arbitrary-precision arithemetic
+ library of your choice.
+ * `getClockSeqHiAndReserved()`
+ * `getClockSeqLow()`
+ * `getClockSequence()`
+ * `getNode()`
+ * `getTimeHiAndVersion()`
+ * `getTimeLow()`
+ * `getTimeMid()`
+ * `getTimestamp()`
+* `getDateTime()` on `UuidInterface` and `Uuid` is deprecated. Use this method
+ only on instances of `Rfc4122\UuidV1` or `Nonstandard\UuidV6`.
+* `getUrn()` on `UuidInterface` and `Uuid` is deprecated. It is available on
+ `Rfc4122\UuidInterface` and classes that implement it.
+* The following methods are deprecated and have no direct replacements. However,
+ you may obtain the same information by calling `UuidInterface::getHex()` and
+ splitting the return value in half.
+ * `UuidInterface::getLeastSignificantBitsHex()`
+ * `UuidInterface::getMostSignificantBitsHex()`
+ * `Uuid::getLeastSignificantBitsHex()`
+ * `Uuid::getMostSignificantBitsHex()`
+ * `Uuid::getLeastSignificantBits()`
+ * `Uuid::getMostSignificantBits()`
+* `UuidInterface::getNumberConverter()` and `Uuid::getNumberConverter()` are
+ deprecated. There is no alternative recommendation, so plan accordingly.
+* `Builder\DefaultUuidBuilder` is deprecated; transition to `Rfc4122\UuidBuilder`.
+* `Converter\Number\BigNumberConverter` is deprecated; transition to
+ `Converter\Number\GenericNumberConverter`.
+* `Converter\Time\BigNumberTimeConverter` is deprecated; transition to
+ `Converter\Time\GenericTimeConverter`.
+* The classes for representing and generating *degraded* UUIDs are deprecated.
+ These are no longer necessary; this library now behaves the same on 32-bit and
+ 64-bit systems.
+ * `Builder\DegradedUuidBuilder`
+ * `Converter\Number\DegradedNumberConverter`
+ * `Converter\Time\DegradedTimeConverter`
+ * `DegradedUuid`
+* The `Uuid::UUID_TYPE_IDENTIFIER` constant is deprecated. Use
+ `Uuid::UUID_TYPE_DCE_SECURITY` instead.
+* The `Uuid::VALID_PATTERN` constant is deprecated. Use
+ `Validator\GenericValidator::getPattern()` or `Rfc4122\Validator::getPattern()`
+ instead.
+
+### Removed
+
+* Remove the following bytes generators and recommend
+ `Generator\RandomBytesGenerator` as a suitable replacement:
+ * `Generator\MtRandGenerator`
+ * `Generator\OpenSslGenerator`
+ * `Generator\SodiumRandomGenerator`
+* Remove `Exception\UnsatisfiedDependencyException`. This library no longer
+ throws this exception.
+* Remove the method `Provider\TimeProviderInterface::currentTime()`. Use
+ `Provider\TimeProviderInterface::getTime()` instead.
+
+
+## [4.0.0-beta2] - 2020-03-01
+
+## Added
+
+* Add missing convenience methods for `Rfc4122\UuidV2`.
+* Add `Provider\Node\StaticNodeProvider` to assist in setting a custom static
+ node value with the multicast bit set for version 1 UUIDs.
+
+## Changed
+
+* `Provider\NodeProviderInterface::getNode()` now returns `Type\Hexadecimal`
+ instead of `string|false|null`.
+
+
+## [4.0.0-beta1] - 2020-02-27
+
+### Added
+
+* Add `ValidatorInterface::getPattern()` to return the regular expression
+ pattern used by the validator.
+* Add `v6()` helper function for version 6 UUIDs.
+
+### Changed
+
+* Set the pattern constants on validators as `private`. Use the `getPattern()`
+ method instead.
+* Change the `$node` parameter for `UuidFactoryInterface::uuid6()` to accept
+ `null` or `Type\Hexadecimal`.
+* Accept `Type\Hexadecimal` for the `$node` parameter for
+ `UuidFactoryInterface::uuid1()`. This is in addition to the `int|string` types
+ already accepted, so there are no BC breaks. `Type\Hexadecimal` is now the
+ recommended type to pass for `$node`.
+
+### Removed
+
+* Remove `currentTime()` method from `Provider\Time\FixedTimeProvider` and
+ `Provider\Time\SystemTimeProvider`; it had previously been removed from
+ `Provider\TimeProviderInterface`.
+
+
+## [4.0.0-alpha5] - 2020-02-23
+
+### Added
+
+* Introduce `Builder\BuilderCollection` and `Provider\Node\NodeProviderCollection`.
+
+### Changed
+
+* `Builder\FallbackBuilder` now accepts only a `Builder\BuilderCollection` as
+ its constructor parameter.
+* `Provider\Node\FallbackNodeProvider` now accepts only a `Provider\Node\NodeProviderCollection`
+ as its constructor parameter.
+* `Provider\Time\FixedTimeProvider` no longer accepts an array but accepts only
+ `Type\Time` instances.
+
+
+## [4.0.0-alpha4] - 2020-02-23
+
+### Added
+
+* Add a `Type\TypeInterface` that each of the ramsey/uuid types implements.
+* Support version 6 UUIDs; see <http://gh.peabody.io/uuidv6/>.
+
+### Changed
+
+* Rename `Type\IntegerValue` to `Type\Integer`. It was originally named
+ `IntegerValue` because static analysis sees `Integer` in docblock annotations
+ and treats it as the native `int` type. `Integer` is not a reserved word in
+ PHP, so it should be named `Integer` for consistency with other types in this
+ library. When using it, a class alias prevents static analysis from
+ complaining.
+* Mark `Guid\Guid` and `Nonstandard\Uuid` classes as `final`.
+* Add `uuid6()` method to `UuidFactoryInterface`.
+
+### Deprecated
+
+* `Uuid::UUID_TYPE_IDENTIFIER` is deprecated. Use `Uuid::UUID_TYPE_DCE_SECURITY`
+ instead.
+* `Uuid::VALID_PATTERN` is deprecated. Use `Validator\GenericValidator::VALID_PATTERN`
+ instead.
+
+
+## [4.0.0-alpha3] - 2020-02-21
+
+### Fixed
+
+* Fix microsecond rounding error on 32-bit systems.
+
+
+## [4.0.0-alpha2] - 2020-02-21
+
+### Added
+
+* Add `Uuid::fromDateTime()` to create version 1 UUIDs from instances of
+ `\DateTimeInterface`.
+* Add `Generator\NameGeneratorInterface` to support alternate methods of
+ generating bytes for version 3 and version 5 name-based UUID. By default,
+ ramsey/uuid uses the `Generator\DefaultNameGenerator`, which uses the standard
+ algorithm this library has used since the beginning. You may choose to use the
+ new `Generator\PeclUuidNameGenerator` to make use of the new
+ `uuid_generate_md5()` and `uuid_generate_sha1()` functions in ext-uuid version
+ 1.1.0.
+
+### Changed
+
+* Add `fromDateTime()` method to `UuidFactoryInterface`.
+* Change `UuidInterface::getHex()` to return a `Ramsey\Uuid\Type\Hexadecimal` instance.
+* Change `UuidInterface::getInteger()` to return a `Ramsey\Uuid\Type\IntegerValue` instance.
+
+### Fixed
+
+* Round microseconds to six digits when getting DateTime from v1 UUIDs. This
+ circumvents a needless exception for an otherwise valid time-based UUID.
+
+
+## [4.0.0-alpha1] - 2020-01-22
+
+### Added
+
+* Add `Validator\ValidatorInterface` and `Validator\GenericValidator` to allow
+ flexibility in validating UUIDs/GUIDs.
+ * Add ability to change the default validator used by `Uuid` through
+ `FeatureSet::setValidator()`.
+ * Add `getValidator()` and `setValidator()` to `UuidFactory`.
+* Add an internal `InvalidArgumentException` that descends from the built-in
+ PHP `\InvalidArgumentException`. All places that used to throw
+ `\InvalidArgumentException` now throw `Ramsey\Uuid\Exception\InvalidArgumentException`.
+ This should not cause any BC breaks, however.
+* Add an internal `DateTimeException` that descends from the built-in PHP
+ `\RuntimeException`. `Uuid::getDateTime()` may throw this exception if
+ `\DateTimeImmutable` throws an error or exception.
+* Add `RandomSourceException` that descends from the built-in PHP
+ `\RuntimeException`. `DefaultTimeGenerator`, `RandomBytesGenerator`, and
+ `RandomNodeProvider` may throw this exception if `random_bytes()` or
+ `random_int()` throw an error or exception.
+* Add `Fields\FieldsInterface` and `Rfc4122\FieldsInterface` to define
+ field layouts for UUID variants. The implementations `Rfc4122\Fields`,
+ `Guid\Fields`, and `Nonstandard\Fields` store the 16-byte,
+ binary string representation of the UUID internally, and these manage
+ conversion of the binary string into the hexadecimal field values.
+* Add `Rfc4122\UuidInterface` to specifically represent RFC 4122 variant UUIDs.
+* Add classes to represent each version of RFC 4122 UUID. When generating new
+ UUIDs or creating UUIDs from existing strings, bytes, or integers, if the UUID
+ is an RFC 4122 variant, one of these instances will be returned:
+ * `Rfc4122\UuidV1`
+ * `Rfc4122\UuidV2`
+ * `Rfc4122\UuidV3`
+ * `Rfc4122\UuidV4`
+ * `Rfc4122\UuidV5`
+ * `Rfc4122\NilUuid`
+* Add `Rfc4122\UuidBuilder` to build RFC 4122 variant UUIDs. This replaces the
+ existing `Builder\DefaultUuidBuilder`, which is now deprecated.
+* Add ability to generate version 2 (DCE Security) UUIDs, including the static
+ method `Uuid::uuid2()`, which returns an `Rfc4122\UuidV2` instance.
+* Add classes to represent GUIDs and nonstandard (non-RFC 4122 variant) UUIDs:
+ * `Guid\Guid`
+ * `Nonstandard\Uuid`.
+* Introduce a `Builder\FallbackBuilder`, used by `FeatureSet` to help decide
+ whether to return a `Uuid` or `Nonstandard\Uuid` when decoding a
+ UUID string or bytes.
+* Introduce `Type\Hexadecimal`, `Type\IntegerValue`, and `Type\Time` for
+ improved type-safety when dealing with arbitrary string values.
+* Introduce `Math\CalculatorInterface` for representing calculators to perform
+ arithmetic operations on integers.
+* Depend on [brick/math](https://github.com/brick/math) for the
+ `Math\BrickMathCalculator`, which is the default calculator used by this
+ library when math cannot be performed in native PHP due to integer size
+ limitations. The calculator is configurable and may be changed, if desired.
+* Add `Converter\Number\GenericNumberConverter` and
+ `Converter\Time\GenericTimeConverter` which will use the calculator provided
+ to convert numbers and time to values for UUIDs.
+* The `\DateTimeInterface` instance returned by `UuidInterface::getDateTime()`
+ (and now `Rfc4122\UuidV1::getDateTime()`) now includes microseconds, as
+ specified by the version 1 UUID.
+
+### Changed
+
+* Set minimum required PHP version to 7.2.
+* Add `__toString()` method to `UuidInterface`.
+* The `UuidInterface::getDateTime()` method now specifies `\DateTimeInterface`
+ as the return value, rather than `\DateTime`; `Uuid::getDateTime()` now
+ returns an instance of `\DateTimeImmutable` instead of `\DateTime`.
+* Add `getFields()` method to `UuidInterface`.
+* Add `getValidator()` method to `UuidFactoryInterface`.
+* Add `uuid2()` method to `UuidFactoryInterface`.
+* Add `convertTime()` method to `Converter\TimeConverterInterface`.
+* Add `getTime()` method to `Provider\TimeProviderInterface`.
+* Change `Uuid::getFields()` to return an instance of `Fields\FieldsInterface`.
+ Previously, it returned an array of integer values (on 64-bit systems only).
+* Change the first required constructor parameter for `Uuid` from
+ `array $fields` to `Rfc4122\FieldsInterface $fields`.
+* Introduce `Converter\TimeConverterInterface $timeConverter` as fourth required
+ constructor parameter for `Uuid` and second required constructor parameter for
+ `Builder\DefaultUuidBuilder`.
+* Change `UuidInterface::getInteger()` to always return a `string` value instead
+ of `mixed`. This is a string representation of a 128-bit integer. You may then
+ use a math library of your choice (bcmath, gmp, etc.) to operate on the
+ string integer.
+* Change the second required parameter of `Builder\UuidBuilderInterface::build()`
+ from `array $fields` to `string $bytes`. Rather than accepting an array of
+ hexadecimal strings as UUID fields, the `build()` method now expects a byte
+ string.
+* `Generator\DefaultTimeGenerator` no longer adds the variant and version bits
+ to the bytes it returns. These must be applied to the bytes afterwards.
+* `Converter/TimeConverterInterface::calculateTime()` now returns
+ `Type\Hexadecimal` instead of `array`. The value is the full UUID timestamp
+ value (count of 100-nanosecond intervals since the Gregorian calendar epoch)
+ in hexadecimal format.
+* Change methods in converter interfaces to accept and return string values
+ instead of `mixed`; this simplifies the interface and makes it consistent:
+ * `NumberConverterInterface::fromHex(string $hex): string`
+ * `NumberConverterInterface::toHex(string $number): string`
+ * `TimeConverterInterface::calculateTime(string $seconds, string $microseconds): array`
+* `UnsupportedOperationException` is now descended from `\LogicException`.
+ Previously, it descended from `\RuntimeException`.
+* When encoding to bytes or decoding from bytes, `OrderedTimeCodec` now checks
+ whether the UUID is an RFC 4122 variant, version 1 UUID. If not, it will throw
+ an exception—`InvalidArgumentException` when using
+ `OrderedTimeCodec::encodeBinary()` and `UnsupportedOperationException` when
+ using `OrderedTimeCodec::decodeBytes()`.
+* Out of the box, `Uuid::fromString()`, `Uuid::fromBytes()`, and
+ `Uuid::fromInteger()` will now return either an `Rfc4122\UuidInterface`
+ instance or an instance of `Nonstandard\Uuid`, depending on whether the input
+ contains an RFC 4122 variant UUID with a valid version identifier. Both
+ implement `UuidInterface`, so BC breaks should not occur if typehints use the
+ interface.
+* By default, the following static methods will now return the specific instance
+ types. This should not cause any BC breaks if typehints target `UuidInterface`:
+ * `Uuid::uuid1` returns `Rfc4122\UuidV1`
+ * `Uuid::uuid3` returns `Rfc4122\UuidV3`
+ * `Uuid::uuid4` returns `Rfc4122\UuidV4`
+ * `Uuid::uuid5` returns `Rfc4122\UuidV5`
+
+### Deprecated
+
+The following functionality is deprecated and will be removed in ramsey/uuid
+5.0.0.
+
+* The following methods from `UuidInterface` and `Uuid` are deprecated. Use their
+ counterparts on the `Rfc4122\FieldsInterface` returned by `Uuid::getFields()`.
+ * `getClockSeqHiAndReservedHex()`
+ * `getClockSeqLowHex()`
+ * `getClockSequenceHex()`
+ * `getFieldsHex()`
+ * `getNodeHex()`
+ * `getTimeHiAndVersionHex()`
+ * `getTimeLowHex()`
+ * `getTimeMidHex()`
+ * `getTimestampHex()`
+ * `getVariant()`
+ * `getVersion()`
+* The following methods from `Uuid` are deprecated. Use the `Rfc4122\FieldsInterface`
+ instance returned by `Uuid::getFields()` to get the `Type\Hexadecimal` value
+ for these fields, and then use the arbitrary-precision arithmetic library of
+ your choice to convert them to string integers.
+ * `getClockSeqHiAndReserved()`
+ * `getClockSeqLow()`
+ * `getClockSequence()`
+ * `getNode()`
+ * `getTimeHiAndVersion()`
+ * `getTimeLow()`
+ * `getTimeMid()`
+ * `getTimestamp()`
+* `getDateTime()` on `UuidInterface` and `Uuid` is deprecated. Use this method
+ only on instances of `Rfc4122\UuidV1`.
+* `getUrn()` on `UuidInterface` and `Uuid` is deprecated. It is available on
+ `Rfc4122\UuidInterface` and classes that implement it.
+* The following methods are deprecated and have no direct replacements. However,
+ you may obtain the same information by calling `UuidInterface::getHex()` and
+ splitting the return value in half.
+ * `UuidInterface::getLeastSignificantBitsHex()`
+ * `UuidInterface::getMostSignificantBitsHex()`
+ * `Uuid::getLeastSignificantBitsHex()`
+ * `Uuid::getMostSignificantBitsHex()`
+ * `Uuid::getLeastSignificantBits()`
+ * `Uuid::getMostSignificantBits()`
+* `UuidInterface::getNumberConverter()` and `Uuid::getNumberConverter()` are
+ deprecated. There is no alternative recommendation, so plan accordingly.
+* `Builder\DefaultUuidBuilder` is deprecated; transition to
+ `Rfc4122\UuidBuilder`.
+* `Converter\Number\BigNumberConverter` is deprecated; transition to
+ `Converter\Number\GenericNumberConverter`.
+* `Converter\Time\BigNumberTimeConverter` is deprecated; transition to
+ `Converter\Time\GenericTimeConverter`.
+* `Provider\TimeProviderInterface::currentTime()` is deprecated; transition to
+ the `getTimestamp()` method on the same interface.
+* The classes for representing and generating *degraded* UUIDs are deprecated.
+ These are no longer necessary; this library now behaves the same on 32-bit and
+ 64-bit PHP.
+ * `Builder\DegradedUuidBuilder`
+ * `Converter\Number\DegradedNumberConverter`
+ * `Converter\Time\DegradedTimeConverter`
+ * `DegradedUuid`
+
+### Removed
+
+* Remove the following bytes generators and recommend
+ `Generator\RandomBytesGenerator` as a suitable replacement:
+ * `Generator\MtRandGenerator`
+ * `Generator\OpenSslGenerator`
+ * `Generator\SodiumRandomGenerator`
+* Remove `Exception\UnsatisfiedDependencyException`. This library no longer
+ throws this exception.
+
+
## [3.9.3] - 2020-02-20
### Fixed
@@ -441,8 +1032,7 @@ versions leading up to this release.*
### Fixed
-* Improve Doctrine conversion to Uuid or string for the ramsey/uuid [Doctrine
- field type]
+* Improve Doctrine conversion to Uuid or string for the ramsey/uuid [Doctrine field type]
## [2.7.4] - 2014-10-29
@@ -608,7 +1198,18 @@ versions leading up to this release.*
[ramsey/uuid-doctrine]: https://github.com/ramsey/uuid-doctrine
[ramsey/uuid-console]: https://github.com/ramsey/uuid-console
-[unreleased]: https://github.com/ramsey/uuid/compare/3.9.3...HEAD
+[unreleased]: https://github.com/ramsey/uuid/compare/4.1.1...HEAD
+[4.1.1]: https://github.com/ramsey/uuid/compare/4.1.0...4.1.1
+[4.1.0]: https://github.com/ramsey/uuid/compare/4.0.1...4.1.0
+[4.0.1]: https://github.com/ramsey/uuid/compare/4.0.0...4.0.1
+[4.0.0]: https://github.com/ramsey/uuid/compare/4.0.0-beta2...4.0.0
+[4.0.0-beta2]: https://github.com/ramsey/uuid/compare/4.0.0-beta1...4.0.0-beta2
+[4.0.0-beta1]: https://github.com/ramsey/uuid/compare/4.0.0-alpha5...4.0.0-beta1
+[4.0.0-alpha5]: https://github.com/ramsey/uuid/compare/4.0.0-alpha4...4.0.0-alpha5
+[4.0.0-alpha4]: https://github.com/ramsey/uuid/compare/4.0.0-alpha3...4.0.0-alpha4
+[4.0.0-alpha3]: https://github.com/ramsey/uuid/compare/4.0.0-alpha2...4.0.0-alpha3
+[4.0.0-alpha2]: https://github.com/ramsey/uuid/compare/4.0.0-alpha1...4.0.0-alpha2
+[4.0.0-alpha1]: https://github.com/ramsey/uuid/compare/3.9.3...4.0.0-alpha1
[3.9.3]: https://github.com/ramsey/uuid/compare/3.9.2...3.9.3
[3.9.2]: https://github.com/ramsey/uuid/compare/3.9.1...3.9.2
[3.9.1]: https://github.com/ramsey/uuid/compare/3.9.0...3.9.1