This blog post summarizes changes to the vcpkg package manager as part of the 2025.02.14 registry release, 2025-02-11, 2025-01-29, 2025-01-24, and 2025-01-20 tool releases, as well as changes to vcpkg documentation throughout February. This release includes significant performance improvements when installing packages, a new tested triplet (x64-windows-release), an overhaul of how vcpkg handles some downloads and console output, and bug fixes. In terms of documentation, there are improvements to our maintainer guide, registries articles, and versioning articles, among others.
Some stats for this period:
- There are now 2,558 total ports available in the vcpkg curated registry. A port is a versioned recipe for building a package from source, such as a C or C++ library.
- 38 new ports were added to the curated registry.
- 314 updates were made to existing ports. As always, we validate each change to a port by building all other ports that depend on or are depended by the library that is being updated for our 13 main triplets.
- 100 community contributors made commits.
- The main vcpkg repo has over 6,600 forks and 24,000 stars on GitHub.
vcpkg changelog (2025.02.14 release)
The following notable changes were made in February:
- Our community contributor, autoantwort, worked on a PR to improve package installation performance by optimizing some binary caching actions. The table below displays the change in our CI run times when building all ports for all tested triplets as a result of this improvement (PR: Microsoft/vcpkg-tool#908, thanks @autoantwort!).
Triplet | Old Time (mins) | New Time (mins) | Time Saved (%) |
x86-windows |
1661 |
1530 | 8% |
x64-windows | 2009 | 1900 | 5% |
x64-windows-static | 1948 | 1550 | 20% |
x64-windows-static-md | 1878 | 1622 | 14% |
x64-uwp | 369 | 333 | 10% |
arm64-windows | 1145 | 1138 | 1% |
arm64-windows-static-md | 1197 | 1055 | 12% |
arm64-uwp | 355 | 333 | 6% |
x64-osx | 2522 | 2109 | 16% |
arm64-osx | 961 | 837 | 13% |
x64-linux | 1278 | 1003 | 22% |
arm-neon-android | 309 | 262 | 15% |
x64-android | 342 | 285 | 17% |
arm64-android | 346 | 290 | 16% |
- The x64-windows-release community triplet has been promoted to a tested triplet, which means it is now subject to our regular continuous integration runs to verify ongoing package compatibility. An entry has been added to the Total ports available for tested triplets section below and will continue to be included in future release blog posts (PR: Microsoft/vcpkg#43555).
- Overhauled downloads handling and console output to fix many longstanding bugs and reduce confusion (PR: Microsoft/vcpkg-tool#1565). More specifically:
- No longer print an error when an asset cache misses but the authoritative download succeeds.
- Now always and consistently print output from x-script at the time that actually happens.
- No longer output a message claiming that proxy settings might fix a hash mismatch problem.
- Now output a message that proxy settings might fix a download from asset cache problem.
- Now always output the full command line that was attempted when invoking an x-script that failed.
- Fixed a crash that occurred when an x-script doesn’t create the file vcpkg expects or creates a file with the wrong hash.
- Now always print what vcpkg is doing before touching the network, so if vcpkg hangs, the user will know which server is being problematic. This includes storing back to asset caches.
- Removed misleading debug output about asset cache configuration.
- A new file,
manifest-info.json
now gets generated in thevcpkg_installed
folder for projects using a manifest (vcpkg.json). This file contains the absolute path to the manifest file that was used to generate thevcpkg_installed
tree. Can be used for debugging purposes (PR: Microsoft/vcpkg-tool#1568). - The experimental
--x-use-aria2
option has been removed as it has not worked for several releases and download support in the rest of the product has matured substantially (PR: Microsoft/vcpkg-tool#1582). - Removed a misleading warning message that appeared when building ARM64EC packages with x64 upstream dependencies. ARM64EC also supports x64 binaries (PR: Microsoft/vcpkg-tool#1581).
- Added a missing error message when attempting to install ports with multiple overrides set for the same port (PR: Microsoft/vcpkg-tool#1573).
- Fixed a bug with the GitHub Actions binary cache (PR: Microsoft/vcpkg-tool#1572, thanks @j-mie!).
- Other minor bug fixes.
Documentation changes
- Added definition for “Registry” in the Glossary (PR: Microsoft/vcpkg-docs#444).
- Fixed errors in examples of
VCPKG_USE_HOST_TOOLS
andCMakeUserPresets.json
(PR: Microsoft/vcpkg-docs#444). - Added entry for PowerShell version in the ABI hash keys (PR: Microsoft/vcpkg-docs#444).
- Versioning reference article:
- Added clarification that only one override for a given package name is allowed (PR: Microsoft/vcpkg-docs#438).
- Reworded the definition of a baseline for improved clarity (PR: Microsoft/vcpkg-docs#427, thanks @Filoppi!).
- Maintainer function vcpkg_check_linkage,
- Added clarifications for
ONLY_DYNAMIC_LIBRARY
failures and supports expressions (PR: Microsoft/vcpkg-docs#432). - Fixed typo for
staticcrt
in a supports expression (PR: Microsoft/vcpkg-docs#446, thanks @dg0yt!).
- Added clarifications for
- Registries concepts, registries reference, and vcpkg-configuration.json reference:
- In registries concepts, added sections for directory structure, versions database, built-in registry, obtaining a git-tree SHA, and best practices.
- In registries reference, removed conceptual sections and added JSON schema documentation for baseline.json and version files.
- Various wording improvements across the three articles.
- PRs: Microsoft/vcpkg-docs#429, Microsoft/vcpkg-docs#442, Microsoft/vcpkg-docs#448, thanks @bansan85!
- In the maintainer guide:
- Expanded on the rule about splitting out and separately packaging dependencies rather than vendoring them, for improved clarity (PR: Microsoft/vcpkg-docs#433).
- Added rules for using lowercase hexadecimal digits strings in certain scenarios (PR: Microsoft/vcpkg-docs#443).
- In the remote authentication article, added references to
vcpkg_from_gitlab()
where appropriate (PR: Microsoft/vcpkg-docs#436, thanks @malaterre!). - Removed documentation for experimental option
--x-use-aria2
, which is no longer supported (PR: Microsoft/vcpkg-docs#441).
If you have any suggestions for our documentation, please submit an issue in our GitHub repo or see the box at the bottom of a particular article.
Total ports available for tested triplets
triplet | ports available |
x64-windows | 2,457 |
x86-windows | 2,344 |
x64-windows-release | 2,458 |
x64-windows-static | 2,323 |
x64-windows-static-md | 2,374 |
arm64-windows | 2,058 |
arm64-windows-static-md | 2,037 |
x64-uwp | 1,372 |
arm64-uwp | 1,337 |
x64-linux | 2,435 |
x64-osx | 2,308 |
arm64-osx | 2,231 |
arm-neon-android | 1,719 |
x64-android | 1,791 |
arm64-android | 1,761 |
While vcpkg supports a much larger variety of target platforms and architectures (as community triplets), the list above is validated exhaustively to ensure updated ports don’t break other ports in the catalog.
Thank you to our contributors
vcpkg couldn’t be where it is today without contributions from our open-source community. Thank you for your continued support! The following people contributed to the vcpkg, vcpkg-tool, or vcpkg-docs repos in this release (listed alphabetically by GitHub username):
aabellagm | AenBleidd | Agorath |
ajtribick | alfredh | amoeba |
ArashPartow | autoantwort | azure-sdk |
bansan85 | BewareMyPower | BrandenXia |
buck-yeh | Bushidosan | bwrsandman |
bzindovic | c8ef | carlo-bramini |
cenit | ChristianPanov | culhatsker |
dalle | daniele77 | daschuer |
dbolduc | deshanxiao | dg0yt |
dpogue | Dynamitos | eao197 |
EfesX | ethanmusser | faserg1 |
farindk | Filoppi | fran6co |
greg7mdp | helynranta | Honeybunch |
IldarKhayrutdinov | ilya-lavrenov | j-mie |
jackjansen | jgillis | Jhuighuy |
jmcnamara | JoergAtGithub | jreichel-nvidia |
Kblaschke | kduske | kimidaisuki22 |
lukasberbuer | luncliff | m-kuhn |
malaterre | michaelmigliore | mingxwa |
miyanyan | mkhon | moritz-h |
mstorsjo | mtmk | Neumann-A |
nickdademo | noahknegt | ohhmm |
oleg-derevenetz | Olli1080 | Osyotr |
paperchalice | PavelKisliak | Podsvirov |
pozemka | redboltz | reinder |
rremilian | RT2Code | rtzoeller |
sargunv | scotthart | shybovycha |
SunBlack | sweemer | T3RR7 |
talregev | tarcila | tartanpaint |
Thomas1664 | ThomsonTan | toge |
tomconder | trueqbit | tueda |
valgur | walbourn | waruto210 |
waywardmonkeys | wikiw91 | ytnuf |
zhcn000000 |
Learn more
You can find the main release notes on GitHub. Recent updates to the vcpkg tool can be viewed on the vcpkg-tool Releases page. To contribute to vcpkg documentation, visit the vcpkg-docs repo. If you’re new to vcpkg or curious about how a package manager can make your life easier as a C/C++ developer, check out the vcpkg website – vcpkg.io.
If you would like to contribute to vcpkg and its library catalog, or want to give us feedback on anything, check out our GitHub repo. Please report bugs or request updates to ports in our issue tracker or join more general discussion in our discussion forum.
0 comments
Be the first to start the discussion.