vcpkg 2023.01.09 Release: Registry Pattern Matching, Documentation Changes, and More…

Augustin Popa

The 2023.01.09 release of the vcpkg package manager is available. This blog post summarizes changes from November 15th, 2022 to January 9th, 2023 for the Microsoft/vcpkg and Microsoft/vcpkg-tool GitHub repos.

Some stats for this period:

  • 41 new ports were added to the open-source registry. If you are unfamiliar with the term ‘port’, they are packages that are built from source and are typically C/C++ libraries.
  • 511 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 nine main triplets.
  • There are now 2,110 total libraries available in the vcpkg public registry. There are a total of 11,692 port versions if each library version is counted uniquely.
  • The 2023.01.09 release of the main vcpkg repo includes 65 commits.
  • 131 contributors submitted PRs, issues, or participated in discussions in the repo.
  • The main vcpkg repo has over 5,000 forks and 17,500 stars on GitHub.

 

Notable Changes

Notable changes for this release are summarized below.

 

Registries now support pattern matching when declaring packages

Based on user feedback, we have added a feature that enables limited pattern matching for packages declared in registries. We now allow prefixes followed by a * character. The * character is a wildcard that matches any zero or more characters. We do not support suffixes or other types of wildcards.

 

Example: expose “beicode” and “beison” via patterns.

vcpkg-configuration.json:

{
    "registries": [
    {
        "kind": "git",
        "repository": "https://github.com/northwindtraders/vcpkg-registry",
        "baseline": "dacf4de488094a384ca2c202b923ccc097956e0c",
        "packages": [ "bei*" ]
    }]
}

One benefit of this change is that it makes it possible to easily declare all packages from your company using something like CompanyName*.

 

Resolution priority

In the event that we find more than one package (whether resolved by the wildcard or not) in multiple registries, we resolve them in this priority order:

  1. Exact match (no wildcard character was used)
  2. Pattern match (wildcard character was used)
    1. Longer prefixes have higher priority (e.g. boost* wins over b* which wins over *).
    2. If there is a tie, we use the package from the registry that appears earliest in the packages array in the vcpkg-configuration.json file. A warning is also emitted to notify users that this is occurring.
  3. Default registry (If no custom defined registries contain a package, we use the one in the default registry).

PR: Microsoft/vcpkg-tool#778: Allow pattern matching in packages declarations

 

Localization added for help text

The help text for the following commands and associated options is now localized: add-version, ci, civerifyversions, contact, depend-info, edit, env, fetch, find, generate-message-map, info, list, new, regenerate, search, set-installed, update-baseline, upgrade, x-download, install, export, remove.

PR: Microsoft/vcpkg-tool#824: Help Text for Command Switches

 

vcpkg artifacts now respects asset caching feature if a SHA512 is provided

For the artifacts feature, we no longer attempt to download components from within Node and instead call the vcpkg x-download command. This brings artifacts in line with our experience for ports, respecting the same proxy settings (system settings on Windows, HTTP_PROXY environment variables), and asset caching settings if a SHA512 is provided. Downloader messages have also been localized, a console parser was added for curl’s output to extract percentages, and more.

PR: Microsoft/vcpkg-tool#826: Replace node downloader with vcpkg x-download.

 

Bug fixes

  • Fixed a rare vcpkg crash during CMake configuration (contributed by @Thomas1664 with help from @omartijn, thank you!).
  • Fixed some build breaks discovered on Node 18.X.
  • Fixed some localization bugs (text that wasn’t displaying in the correct language).
  • Added overlays to vcpkg-configuration schema (contributed by @gjasny, thank you!).

 

Documentation Changes

As a reminder, we announced last month that our documentation is moving to https://learn.microsoft.com/vcpkg. Please give us feedback on our documentation there as we continue to make improvements, in particular using the Feedback button near the top of a page or the Feedback box at the bottom.

Below is a summary of recent documentation changes:

  1. The documentation article on binary caching has been re-written and improved based on user feedback, including more details on ways to use it with different hosting providers. Thank you to @samwarring who contributed some of these changes.
  2. Re-wrote articles with substantial content changes for manifests and registries and added individual articles for vcpkg.json and vcpkg-configuration.json files:
    1. Manifest mode
    2. Using Registries
    3. vcpkg.json Reference
    4. vcpkg-configuration.json Reference

 

Total Ports Available for Tested Triplets

triplet ports available
x86-windows 1,905
x64-windows 1,962
x64-windows-static 1,867
x64-windows-static-md 1,877
x64-uwp 1,003
arm64-windows 1,538
arm-uwp 952
x64-osx 1,838
x64-linux 1,914

While vcpkg supports a much larger variety of target platforms and architectures, 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 and vcpkg-tool repos in this release:

  • autoantwort (50 commits)
  • dg0yt (42 commits)
  • Neumann-A (18 commits)
  • Thomas1664 (10 commits)
  • quyykk (8 commits)
  • Sibras (8 commits)
  • RT222 (7 commits)
  • Pospelove (3 commits)
  • myd7349 (2 commits)
  • coryan (2 commits)
  • ahmedyarub (2 commits)
  • kobykahane (2 commits)
  • AenBleidd (2 commits)
  • longhuan2018 (1 commit)
  • evpobr (1 commit)
  • Hoikas (1 commit)
  • m-kuhn (1 commit)
  • jwillemsen (1 commit)
  • gjasny (1 commit)
  • Osyotr (1 commit)
  • DragonJoker (1 commit)
  • Tradias (1 commit)
  • chausner (1 commit)
  • SchaichAlonso (1 commit)
  • wrobelda (1 commit)
  • AtariDreams (1 commit)

 

Learn More

You can find the full 2023.01.09 release notes on GitHub for the main repo. Recent updates to the vcpkg tool can be viewed on the vcpkg-tool Releases page. 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. For an overview of our top priorities and backlog, take a look at our roadmap page.

 

Interested in vcpkg but not sure where to start?

Is your company experiencing challenges managing C/C++ libraries? Perhaps you’re curious if a package manager is the right choice for you? Please reach out to vcpkg@microsoft.com and we’d be happy to help!

 

0 comments

Discussion is closed.

Feedback usabilla icon