
janver is a Janet library for comparing version numbers. It provides
separate modules for Debian versions, Semantic Versioning 2.0.0 versions,
Maven ComparableVersion versions, RubyGems Gem::Version versions, and
Python PEP 440 versions.
Each module exposes a version parser and a vercmp comparator.
Use janver when a Janet program needs to sort, validate, or compare version
strings according to an established ecosystem’s rules. Maven comparison follows
Apache Maven’s ComparableVersion implementation,
including its qualifier aliases and nested separator behavior. RubyGems
comparison follows Gem::Version,
including its prerelease normalization and trailing-zero equivalence. PEP 440
comparison follows Python’s packaging version specification,
including epochs, normalized pre/dev/post releases, legacy c release
candidates, permitted separator variants, and local versions. The library is
small and dependency-light: the comparison functions operate on strings and
return an ordinary numeric ordering result.
janver does not provide a command-line program, package manager integration,
or version constraint solver. Import janver/debian, janver/semver2,
janver/maven, janver/ruby, or janver/pep440 and call its version or vercmp functions.
It compares complete version strings; callers remain responsible for selecting
a format and handling invalid input.
The name is a convenient coincidence: it sounds like “JANet VERsioning,” but
janver is actually named for Johannes Vermeer, the painter. The logo is
inspired by a painting by Vermeer.