vcpkg Versioning¶
Identifier¶
vcpkg
References¶
Ranges/Constraints¶
❌ No range support.
Description¶
Renovate vcpkg versioning targets the per-port version schemes used by the vcpkg package manager.
A vcpkg port declares one of four version fields, each with its own comparison rules:
versionis a relaxed dotted-number scheme that allows extra components, like3.1.4or1.2.3.4version-semveris strict Semantic Versioning, like3.1.4-rc.1version-dateis an ISO calendar date inYYYY-MM-DDform, optionally followed by dot-separated disambiguation identifiers like2024-01-15.1.2version-stringis opaque text without a defined ordering, likebla-bla-2024-08-fixed-typo
Renovate detects which scheme applies by inspecting the input, then delegates to the matching underlying versioning module (semver, loose, or a direct date comparison).
vcpkg itself takes the scheme from the field a version is published under, not from its text, so the two can disagree.
A port that publishes dotted text under version-string, like 2.3.1, is treated as a version here and ordered against the port's other dotted versions, which vcpkg would refuse to compare.
A vcpkg port can also carry a port-version integer for changes that affect packaging without changing the upstream source.
The canonical text form combines the base version and port-version with a # separator, like 1.2.3#1, and the port-version is omitted when zero.
Renovate treats the port-version as a tie-breaker after the base versions compare equal, so 1.2.3#1 is greater than 1.2.3#0, while 1.2.4 is still greater than 1.2.3#1 because the base version wins.
vcpkg has no range expression syntax.
Manifest dependencies carry a single version>= lower bound, and overrides carry an exact pin.
In both cases the value is a bare version, with no operator, so Renovate compares values for equality like other versioning modules without ranges.