Semantic Versioning for the Ada language
Implements the 2.0 specification found at http://semver.org/
Three types are provided:
-
Semantic_Versioning.Version
, which stores a single semantic version (e.g.,"1.0.2-beta+build0bdf3"
). -
Semantic_Versioning.Basic.Version_Set
, which stores a single version restriction over the whole set of versions (e.g.,"~1.2"
), or a list of AND (&
) restrictions (e.g.,"^1.0 & /=1.1"
). -
Semantic_Versioning.Extended.Version_Set
, which stores a general subset expressed with combinations of AND (&
) and OR (|
) logical operators. As in Ada, both cannot be mixed at the same level but can be combined with parentheses, e.g.,"(≥7 & ≤9) | ≥2018"
.
-
Wildcard version sets (
1.*
) are not yet supported, but for a single*
which means "any version". -
The special interpretation of caret and tilde for pre-1 versions that exists in some implementations is not applied, so they retain their usual meaning (compatibility within major/minor numbers). According to the Semver 2.0 spec, pre-1 releases do not offer any compatibility guarantees.
By default, relational operators are accepted as plain ASCII sequences (<=, >=, /=
) and as
Unicode-encoded characters (≤, ≥, ≠
). Unicode alternatives can be disabled in calls that
accept textual input or produce corresponding output.
The public specifications are relatively small and intuitive.
Check semantic_versioning-demo.adb
for examples of use.