NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #3116 most downloaded on crates.io
A library for parsing and comparing software version numbers.
Last release 24 days ago
14 Sep 2026
Release timing varies
gaps range from 8 days to 1.5 years
Nearly every release is documented
notes for 23 of 23 stable releases
1 version withdrawn
withdrawn after publishing
6 years old
24 releases · first in 2020
One column per quarter.
Semver -> Mess conversion was dropping +foo metadata sections.
+foo metadata sections.+foo metadata sections.Version now last an explicit last: Last field to improve comparison behaviour for versions like 1.2.3rc2 and 7.3b .
Last type.Version now last an explicit last: Last field to improve comparison1.2.3rc2 and 7.3b.7.3.b compare correctly again.Version::nth_lenient: Just use Version::nth while being aware of Last.Support for Rust 2024 and other dependency bumps, nom in particular.
nom in particular.Nothing published for this version
An edge-case in Version/Mess comparisons. [#25][i25]
Parsing of Mess on a single digit will correctly yield MChunk::Digits .
Mess on a single digit will correctly yield MChunk::Digits.Versions whose main chunks lead with a letter, e.g. r23.Relaxed argument to new functions to accept S: AsRef<str> .
new functions to accept S: AsRef<str>.Requirement::serialize for pretty-encoding of version "requirements strings".
Requirement::serialize for pretty-encoding of version "requirements strings".The Requirement type for testing version constraints.
Requirement type for testing version constraints.Versioning::parse for usage with nom.Versioning::deserialize_pretty for deserializing directly from raw version strings.While technically a breaking change, most users should not notice.
While technically a breaking change, most users should not notice.
Err / Error associated types for automatic conversion of strings into proper version types have been changed from () to a proper Error enum.Changed Bumped itertools dependency.
itertools dependency.This introduces a very small, technically breaking change to the API involving a single type. If you're just doing basic parsing and comparisons and n…
This introduces a very small, technically breaking change to the API involving a single type. If you're just doing basic parsing and comparisons and not actually inspecting the types themselves, you shouldn't notice a difference.
~ in their metadata will now parse as a Mess. Example: 12.0.0-3ubuntu1~20.04.5FromStr and TryFrom instances for each type.
FromStr and TryFrom instances for each type.SemVer and Version have had their prerel field changed to Release .
Release type.SemVer and Version have had their prerel field changed to Release.Chunk type has changed from a struct to an enum.Unit type.SemVer prereleases.Display instance for Version.#### Changed - Upgraded to nom-7.0.
nom-7.0.The Hash instance of SemVer is now hand-written to uphold the Law that:
Hash instance of SemVer is now hand-written to uphold the Law that:k1 == k2 -> hash(k1) == hash(k2)
Certain parsers are now faster and use less memory.
To accomodate this and other small spec updates, the SemVer and Version types have received breaking changes here.
This release brings versions in line with version 2.0.0 of the SemVer spec.
The main addition to the spec is the allowance of hyphens in both the prerelease
and metadata sections. As such, certain versions like 1.2.3+1-1 which
previously would not parse as SemVer now do.
To accomodate this and other small spec updates, the SemVer and Version
types have received breaking changes here.
Serde support through the optional serde feature.Versioning::nth to pick out certain fields of a generically parsed version.Default is now derived on Versioning, SemVer, Version, Mess and
Chunks so that it's possible to initialize as a struct's field.SemVer::meta and Version::meta no longer parse as Chunks
but as vanilla Strings.Versions now expect metadata to come
after any prerelease, just as with SemVer. Version is now thus fairly
similar to SemVer, except that is allows letters in more permissive
positions.SemVer/Version comparisons.SemVer::parse, Version::parse, and Mess::parse have been made pub so that these parsers can be integrated into other general nom parsers.
SemVer::parse, Version::parse, and Mess::parse have been made pub so
that these parsers can be integrated into other general nom parsers.#### Changed - Updated to itertools-0.10.
itertools-0.10.Utilize new type linking in docstrings, thanks to the latest stable Rust.
nom-6.0.Breaking: Mess::chunk renamed to Mess::chunks to match Version.
Mess::chunk renamed to Mess::chunks to match Version.Mess now stores smarter Vec<MChunk> instead of Strings.SemVer::to_version is no longer a lossy conversion, due to the new field in Version (see below).Display instances are more efficient.meta: Option<Chunks> field for Version.MChunk type which allows Mess to do smarter comparisons.Performance and readability improvements.
This is the initial release of the library.
This is the initial release of the library.
Your coding agent can read these notes before it upgrades. Set up the MCP server →