I've recently published a small Semantic Versioning library which helps
for validating, sorting, and comparing version strings which somewhat
adhere to Semver.org (2.0.0).
The code in semver.l actually contains two full implementations
(semver-compare) and (semver-compare-slow), which uses Perl's <=>
As usual, it includes full unit tests and is liberally licensed (MIT).
I plan to add a (satisfies) function to check if a version is within a
given range (ex: >= 1.2.0, < 2.0.0), but anyone is free to give it a try.