Commit graph semver/CHANGELOG.md
Author SHA1 Message Date
ae2163188f fix: avoid infinite recursion when formatting ranges as short npm
TryFormat for the "ns" format returned false for any set that can
not be expressed as a caret/tilde range. The public ToString
routes through DefaultInterpolatedStringHandler, whose buffer-full
fallback re-enters ToString, causing an infinite loop / stack overflow.

For "ns", fall back to the full comparator ("n") form when the
compact form cannot represent the set, so the call always succeeds
for a representable range. A genuine buffer overflow still returns
false as before.

Add failing-then-passing tests.
2026-07-11 23:01:59 +02:00
2ea7866e3b fix: range exact/non-equal matches ignore build metadata
Build metadata does not affect precedence (SemVer 2.0.0 §10), so
the Eq and Neq constraints now use SemanticVersionComparer.Priority
instead of the structural == operator. This makes [1.2.3] match
1.2.3+build, consistent with precedence semantics.

Add a failing-then-passing test.
2026-07-11 23:01:48 +02:00
b4ca01580a fix: reject invalid SemVer identifiers when parsing
Per SemVer 2.0.0 the core version numbers and numeric prerelease
identifiers must not include leading zeroes, and prerelease/build-metadata
identifiers must be composed only of ASCII alphanumerics and hyphens.

Add IsValidIdentifiers using a vectorized SearchValues lookup for the
allowed character set and ulong.TryParse to detect numeric identifiers
for the leading-zero check. Add failing-then-passing tests for both
invalid and still-valid inputs.
2026-07-11 23:01:23 +02:00
ed1e31314d
feat: add initial project setup
All checks were successful
default / dotnet-default-workflow (push) Successful in 1m2s
release / dotnet-release-workflow (push) Successful in 1m6s
2026-05-21 21:45:36 +02:00