github.com/jbowes/semver (go): Package semver provides semantic version and constraint parsing, comparison, and testing.  There are many semver packages. This one aims to be the fastest at parsing and comparing values, with low memory usage.  Versions can be compared with one another to determine which is newer. Constraints specify inclusions and exclusions of semver ranges that a given version must satisfy. Typically, constraints are used when expressing a dependency.  Parsing of semver values, and comparison of them, strictly follows the rules outlined in Semantic Versioning 2.0.0 (https://semver.org). Constraint parsing and testing follows the syntax and semantics of npm version specifiers (https://semver.npmjs.com/). This behaviour is only what exists now; feature requests or contributions are welcome to expand on it!  Internally during parsing, and when returning string representations, Constraints are normalized in their representation.  Rules for normalization:  Normalized constraints are not canonical. Two Constraints can have different normalized forms but still be equivalent.
Keywords: go|golang|hacktoberfest|parser|ragel|semver|semver-parser