composer/semver
A standalone PHP library for parsing, validating, and comparing semantic version numbers and constraints, extracted from Composer. It normalizes versions, handles stability flags and branches, and powers dependency version checks. Requires PHP 5.3.2+.
Intervals::isSubsetOf() returning false for < 0.0.0, which now correctly matches nothing and so is a subset of any constraint (#192)Full Changelog: https://github.com/composer/semver/compare/3.5.0...3.5.1
VersionParser::isValid() to check whether a version string can be normalized (#168)Intervals::compactConstraint() turning constraints that match no dev versions, like > 1.0.0 != 2.0.0 || < 1.9.0, into != 2.0.0 which matches all dev-* versions (#189)>= and < constraints on RC versions, like >=1.0-RC1, getting an extra -dev suffix which beta and alpha constraints did not get (#187)CompilingMatcher performance by avoiding building concatenated cache keys on every call (#186)Full Changelog: https://github.com/composer/semver/compare/3.4.4...3.5.0
list return types by @gharlan in https://github.com/composer/semver/pull/171Full Changelog: https://github.com/composer/semver/compare/3.4.3...3.4.4
Full Changelog: https://github.com/composer/semver/compare/3.4.2...3.4.3
Full Changelog: https://github.com/composer/semver/compare/3.4.1...3.4.2
Full Changelog: https://github.com/composer/semver/compare/3.4.0...3.4.1
Full Changelog: https://github.com/composer/semver/compare/3.3.2...3.4.0
Full Changelog: https://github.com/composer/semver/compare/3.2.8...3.2.9
Full Changelog: https://github.com/composer/semver/compare/3.2.7...3.2.8
^2.x-dev and ~2.x-dev, not very useful but seen in the wild and failed to validate with 3.0.1
x || [@dev](https://github.com/dev), not very useful but seen in the wild and failed to validate with 1.5.2/1.6.0
foobar-dev being equal to dev-foobar, dev-foobar is the official way to write it but we need to support the other for BC and conveniencex || [@dev](https://github.com/dev), not very useful but seen in the wild and failed to validate with 1.5.2/1.6.0
foobar-dev being equal to dev-foobar, dev-foobar is the official way to write it but we need to support the other for BC and convenience^2.x-dev and ~2.x-dev, not very useful but seen in the wild and failed to validate with 1.5.2
EmptyConstraint, replace it with MatchAllConstraint
*.* and such variants will not match all dev-* versions anymore, only * doesIntervals class to check if a constraint is a subsets of another one, and allow compacting complex MultiConstraints into simpler onesCompilingMatcher class to speed up constraint matching against simple Constraint instancesMatchAllConstraint and MatchNoneConstraint which match everything and nothingdev-master, dev-trunk and dev-default now normalize to dev-master, dev-trunk and dev-default instead of 9999999-dev in 1.x
AbstractConstraintgetUpperBound and getLowerBound to ConstraintInterface. They return Composer\Semver\Constraint\Bound instancesMultiConstraint::create to create the most-optimal form of ConstraintInterface from an array of constraint strings~ operator~ operator was inconsistentHow can I help you explore Laravel packages today?