Version Format¶
Mod Version Specification¶
In OML SemVer is enforced, requiring a Major.Minor.Patch format, additional labels for pre-release and build metadata are valid but will be ignored by OML
1.0.0 1.0.0-pre.0+build.0
Dependency Version Specification¶
Specifying dependency ranges is very simple in OML.
The external DSL can be seen below.
Static Version - (Major.Minor.Patch) - 1.0.0 allows only 1.0.0 Bracket Ranges (>=|>|<|<=) - >=1.0.0 & <2.0.0 allows any version from 1.x.x Wildcard Ranges (*|X|x) - 1.* which is equivalent to >=1.0.0 & <2.0.0 Tilde Ranges (~) - ~1.5 which is equivalent to >=1.5.0 & <1.6.0 Hyphen Ranges (-) - 1.0-2.0 which is equivalent to >=1.0.0 & <=2.0.0 Caret Ranges (^) - ^0.2.3 which is equivalent to >=0.2.3 & <0.3.0 Partial Version Ranges - 1 which is equivalent to 1.x or >=1.0.0 & <2.0.0 Negation operator - !(1.x) which is equivalent to <1.0.0 & >=2.0.0 Parenthesized expressions - ~1.3 | (1.4.* & !=1.4.5) | ~2
<semver-expr> ::= "(" <semver-expr> ")" | "!" "(" <semver-expr> ")" | <semver-expr> <more-expr> | <range> <more-expr> ::= <boolean-op> <semver-expr> | epsilon <boolean-op> ::= "&" | "|" <range> ::= <comparison-range> | <wildcard-range> | <tilde-range> | <caret-range> | <hyphen-range> | <partial-version-range> <comparison-range> ::= <comparison-op> <version> | <version> <wildcard-range> ::= <wildcard> | <major> "." <wildcard> | <major> "." <minor> "." <wildcard> <tilde-range> ::= "~" <version> <caret-range> ::= "^" <version> <hyphen-range> ::= <version> "-" <version> <partial-version-range> ::= <major> | <major> "." <minor> <version> ::= <major> | <major> "." <minor> | <major> "." <minor> "." <patch> <comparison-op> ::= "=" | "!=" | ">" | ">=" | "<" | "<=" <major> ::= <numeric-identifier> <minor> ::= <numeric-identifier> <patch> ::= <numeric-identifier> <numeric-identifier> ::= "0" | <positive-digit> | <positive-digit> <numeric-identifier> <positive-digit> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" <wildcard> ::= "*" | "x" | "X"