What’s New in vcpkg (March 2024)

Augustin Popa

This blog post summarizes changes to the vcpkg package manager as part of the 2024.03.19 and 2024.03.25 releases as well as changes to vcpkg documentation throughout March. This month’s vcpkg release includes an arm64ec platform expression, more flexibility when mixing static and dynamic libraries, diagnostics improvements, a change in the binary caching ABI calculation, and bug fixes.

Some stats for this period:

  • There are now 2,415 total libraries available in the vcpkg public registry.
  • 21 new ports were added to the open-source registry. A port is a versioned recipe for building a package from source, such as a C or C++ library.
  • 405 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.
  • 32 contributors submitted PRs, issues, or participated in discussions in the main repo.
  • The main vcpkg repo has over 5,900 forks and 21,200 stars on GitHub.

 

vcpkg changelog (2024.03.19 + 2024.03.25 releases)

Several improvements to diagnostics output. For example:

# Before
.\vcpkg.exe install zlib:x64-windows[core]
<unknown>:1:17: error: expected eof on expression: zlib:x64-windows[core]
                                                                   ^
vcpkg install <port name> <port name>...
vcpkg install zlib zlib:x64-windows curl boost

# After
.\vcpkg.exe install zlib:x64-windows[core]
error: expected the end of input parsing a package spec; did you mean zlib[core]:x64-windows instead?
on expression: zlib:x64-windows[core]
                               ^
  • Added an arm64ec platform expression to assist with creating triplets targeting arm64ec (PR: Microsoft/vcpkg-tool#1352, thanks @autoantwort!).
  • Removed the warning about the default triplet change that was implemented in a previous release (PR: Microsoft/vcpkg-tool#1351).
  • DLLs can now be used in static triplets if BuildPolicy::DLLS_IN_STATIC_LIBRARY is turned on. Those DLLs should still have CRT and architecture checked. Static libraries can also now be in dynamic triplets if their CRT linkage matches (PR: Microsoft/vcpkg-tool#1358).
  • New behavior: vcpkg will output a message with the path to the compiler it is using in certain cases where there is ambiguity about the compiler version (PR: Microsoft/vcpkg-tool#1328).
  • Installing ports with –only-downloads will no longer affect the ABI calculation used by the binary caching feature (PR: Microsoft/vcpkg-tool#1363).

Bug fixes:

  • Fixed a bug that could cause a vcpkg command to exit prematurely if a ‘)’ character was present in certain path assignments (PR: Microsoft/vcpkg-tool#1354, thanks @jcbrill!).
  • Fixed a bug preventing certain versioning schemes from working with the versioning overrides feature (PR: Microsoft/vcpkg-tool#1329).
  • Fixed a regression that broke binary caching for the Meson tool port (PR: Microsoft/vcpkg#37585).
  • Fixed a crash that could occur when running vcpkg install against a manifest with a non-existent port and version override. (PR: Microsoft/vcpkg#36994, thanks @dforsten!).
  • Various other minor bugfixes.

 

Documentation changes

  • New articles:
  • Added Default Features section to versioning troubleshooting guide.
  • Unified some manifest mode articles and fixed links.
  • Changed CMakePresets.json sample files to use schema version 1.
  • Various minor improvements throughout the docs.

If you have any suggestions for our documentation, please submit an issue in our GitHub repo or use the button “This page” at the bottom of a particular article.

A screenshot of a website Description automatically generated

 

Total ports available for tested triplets

triplet ports available
x64-windows 2,273
x86-windows 2,189
x64-windows-static 2,162
x64-windows-static-md 2,190
arm64-windows 1,851
x64-uwp 1,259
arm64-uwp 1,225
x64-linux 2,231
x64-osx 2,079
arm64-osx 2,045
arm-neon-android 1,553
x64-android 1,611
arm64-android 1,582

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:

  • jiayuehua (84 commits)
  • dg0yt (32 commits)
  • Neumann-A (13 commits)
  • waywardmonkeys (8 commits)
  • Thomas1664 (8 commits)
  • miyanyan (7 commits)
  • SchaichAlonso (4 commits)
  • Be-ing (3 commits)
  • Osyotr (3 commits)
  • AenBleidd (3 commits)
  • RT2Code (3 commits)
  • autoantwort (3 commits)
  • moritz-h (2 commits)
  • omarhogni (2 commits)
  • xiaozhuai (2 commits)
  • coryan (2 commits)
  • Honeybunch (1 commit)
  • DragonJoker (1 commit)
  • horenmar (1 commit)
  • Tradias (1 commit)
  • fran6co (1 commit)
  • yurybura (1 commit)
  • eao197 (1 commit)
  • chausner (1 commit)
  • VelocityRa (1 commit)
  • dforsten (1 commit)
  • jcbrill (1 commit)

 

Is your company looking for a better C/C++ dependency management experience?

We are partnering with companies to help them get started with vcpkg and overcome any initial hurdles. We have also been making product and documentation changes based on feedback we receive from these partnerships. If you are interested in trying out vcpkg or just have some thoughts to share with us, feel free to reach out at vcpkg@microsoft.com.

 

Learn more

You can find the full 2024.03.19 release notes on GitHub for the main repo. Recent updates to the vcpkg tool can be viewed on the vcpkg-tool Releases page. To contribute to 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

Leave a comment

Feedback usabilla icon