{"id":31492,"date":"2023-01-18T02:34:22","date_gmt":"2023-01-18T02:34:22","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=31492"},"modified":"2024-04-01T17:52:24","modified_gmt":"2024-04-01T17:52:24","slug":"vcpkg-2023-01-09-release-registry-pattern-matching-documentation-changes-and-more","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/vcpkg-2023-01-09-release-registry-pattern-matching-documentation-changes-and-more\/","title":{"rendered":"vcpkg 2023.01.09 Release: Registry Pattern Matching, Documentation Changes, and More\u2026"},"content":{"rendered":"<p>The <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/releases\/tag\/2023.01.09\">2023.01.09 release of the vcpkg package manager is available<\/a>. This blog post summarizes changes from November 15<sup>th<\/sup>, 2022 to January 9<sup>th<\/sup>, 2023 for the <a href=\"https:\/\/github.com\/microsoft\/vcpkg\">Microsoft\/vcpkg<\/a> and <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/\">Microsoft\/vcpkg-tool<\/a> GitHub repos.<\/p>\n<p>Some stats for this period:<\/p>\n<ul>\n<li><strong>41 new ports<\/strong> were added to the open-source registry. If you are unfamiliar with the term \u2018port\u2019, they are packages that are built from source and are typically C\/C++ libraries.<\/li>\n<li><strong>511 updates<\/strong> 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.<\/li>\n<li>There are now <strong>2,110 total libraries<\/strong> available in the vcpkg public registry. There are a total of <strong>11,692<\/strong> port versions if each library version is counted uniquely.<\/li>\n<li>The <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/releases\/tag\/2023.01.09\">2023.01.09 release of the main vcpkg repo<\/a> includes <strong>65 commits<\/strong>.<\/li>\n<li><strong>131 contributors<\/strong> submitted PRs, issues, or participated in discussions in the repo.<\/li>\n<li>The main vcpkg repo has over <strong>5,000 forks<\/strong> and <strong>17,500 stars<\/strong> on GitHub.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>Notable Changes<\/h3>\n<p>Notable changes for this release are summarized below.<\/p>\n<p>&nbsp;<\/p>\n<h4>Registries now support pattern matching when declaring packages<\/h4>\n<p>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\u00a0*\u00a0character is a wildcard that matches any zero or more characters. We do not support suffixes or other types of wildcards.<\/p>\n<p>&nbsp;<\/p>\n<h5>Example: expose\u00a0&#8220;beicode&#8221;\u00a0and\u00a0&#8220;beison&#8221;\u00a0via patterns.<\/h5>\n<p><strong>vcpkg-configuration.json:<\/strong><\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">{\r\n    \"registries\": [\r\n    {\r\n        \"kind\": \"git\",\r\n        \"repository\": \"https:\/\/github.com\/northwindtraders\/vcpkg-registry\",\r\n        \"baseline\": \"dacf4de488094a384ca2c202b923ccc097956e0c\",\r\n        \"packages\": [ \"bei*\" ]\r\n    }]\r\n}<\/code><\/pre>\n<p>One benefit of this change is that it makes it possible to easily declare all packages from your company using something like CompanyName*.<\/p>\n<p>&nbsp;<\/p>\n<h5>Resolution priority<\/h5>\n<p>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:<\/p>\n<ol>\n<li>Exact match (no wildcard character was used)<\/li>\n<li>Pattern match (wildcard character was used)\n<ol>\n<li>Longer prefixes have higher priority (e.g. boost* wins over b* which wins over *).<\/li>\n<li>If there is a tie, we use the package from the registry that appears earliest in the packages array in the <em>vcpkg-configuration.json<\/em> file. A warning is also emitted to notify users that this is occurring.<\/li>\n<\/ol>\n<\/li>\n<li>Default registry (If no custom defined registries contain a package, we use the one in the default registry).<\/li>\n<\/ol>\n<p><a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/778\">PR: Microsoft\/vcpkg-tool#778: Allow pattern matching in packages declarations<\/a><\/p>\n<p>&nbsp;<\/p>\n<h4>Localization added for help text<\/h4>\n<p>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.<\/p>\n<p><a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/824\">PR: Microsoft\/vcpkg-tool#824: Help Text for Command Switches<\/a><\/p>\n<p>&nbsp;<\/p>\n<h4>vcpkg artifacts now respects asset caching feature if a SHA512 is provided<\/h4>\n<p>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\u2019s output to extract percentages, and more.<\/p>\n<p><a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/826\">PR: Microsoft\/vcpkg-tool#826: Replace node downloader with vcpkg x-download<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h4>Bug fixes<\/h4>\n<ul>\n<li>Fixed a rare vcpkg crash during CMake configuration (contributed by @Thomas1664 with help from @omartijn, thank you!).<\/li>\n<li>Fixed some build breaks discovered on Node 18.X.<\/li>\n<li>Fixed some localization bugs (text that wasn\u2019t displaying in the correct language).<\/li>\n<li>Added overlays to vcpkg-configuration schema (contributed by @gjasny, thank you!).<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>Documentation Changes<\/h3>\n<p>As a reminder, we <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/vcpkg-documentation-moves-to-microsoft-docs-platform\/\">announced last month<\/a> that our documentation is moving to <a href=\"https:\/\/learn.microsoft.com\/vcpkg\">https:\/\/learn.microsoft.com\/vcpkg<\/a>. 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.<\/p>\n<p>Below is a summary of recent documentation changes:<\/p>\n<ol>\n<li>The <a href=\"https:\/\/learn.microsoft.com\/en-us\/vcpkg\/users\/binarycaching\">documentation article on binary caching<\/a> 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.<\/li>\n<li>Re-wrote articles with substantial content changes for manifests and registries and added individual articles for vcpkg.json and vcpkg-configuration.json files:\n<ol>\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/vcpkg\/users\/manifests\">Manifest mode<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/vcpkg\/users\/registries\">Using Registries<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/vcpkg\/reference\/vcpkg-json\">vcpkg.json Reference<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/vcpkg\/reference\/vcpkg-configuration-json\">vcpkg-configuration.json Reference<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h3>Total Ports Available for Tested Triplets<\/h3>\n<table>\n<tbody>\n<tr>\n<td><strong>triplet<\/strong><\/td>\n<td><strong>ports available<\/strong><\/td>\n<\/tr>\n<tr>\n<td>x86-windows<\/td>\n<td>1,905<\/td>\n<\/tr>\n<tr>\n<td>x64-windows<\/td>\n<td>1,962<\/td>\n<\/tr>\n<tr>\n<td>x64-windows-static<\/td>\n<td>1,867<\/td>\n<\/tr>\n<tr>\n<td>x64-windows-static-md<\/td>\n<td>1,877<\/td>\n<\/tr>\n<tr>\n<td>x64-uwp<\/td>\n<td>1,003<\/td>\n<\/tr>\n<tr>\n<td>arm64-windows<\/td>\n<td>1,538<\/td>\n<\/tr>\n<tr>\n<td>arm-uwp<\/td>\n<td>952<\/td>\n<\/tr>\n<tr>\n<td>x64-osx<\/td>\n<td>1,838<\/td>\n<\/tr>\n<tr>\n<td>x64-linux<\/td>\n<td>1,914<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>While vcpkg supports a much larger variety of target platforms and architectures, the list above is validated exhaustively to ensure updated ports don\u2019t break other ports in the catalog.<\/p>\n<p>&nbsp;<\/p>\n<h3>Thank You to Our Contributors<\/h3>\n<p>vcpkg couldn\u2019t 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:<\/p>\n<ul>\n<li>autoantwort (50 commits)<\/li>\n<li>dg0yt (42 commits)<\/li>\n<li>Neumann-A (18 commits)<\/li>\n<li>Thomas1664 (10 commits)<\/li>\n<li>quyykk (8 commits)<\/li>\n<li>Sibras (8 commits)<\/li>\n<li>RT222 (7 commits)<\/li>\n<li>Pospelove (3 commits)<\/li>\n<li>myd7349 (2 commits)<\/li>\n<li>coryan (2 commits)<\/li>\n<li>ahmedyarub (2 commits)<\/li>\n<li>kobykahane (2 commits)<\/li>\n<li>AenBleidd (2 commits)<\/li>\n<li>longhuan2018 (1 commit)<\/li>\n<li>evpobr (1 commit)<\/li>\n<li>Hoikas (1 commit)<\/li>\n<li>m-kuhn (1 commit)<\/li>\n<li>jwillemsen (1 commit)<\/li>\n<li>gjasny (1 commit)<\/li>\n<li>Osyotr (1 commit)<\/li>\n<li>DragonJoker (1 commit)<\/li>\n<li>Tradias (1 commit)<\/li>\n<li>chausner (1 commit)<\/li>\n<li>SchaichAlonso (1 commit)<\/li>\n<li>wrobelda (1 commit)<\/li>\n<li>AtariDreams (1 commit)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>Learn More<\/h3>\n<p>You can find the <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/releases\/tag\/2023.01.09\">full 2023.01.09 release notes on GitHub<\/a> for the main repo. Recent updates to the vcpkg tool can be viewed on the <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/releases\">vcpkg-tool Releases page<\/a>. If you\u2019re new to vcpkg or curious about how a package manager can make your life easier as a C\/C++ developer, check out the <a href=\"https:\/\/vcpkg.io\/en\/index.html\">vcpkg website \u2013 vcpkg.io<\/a>.<\/p>\n<p>If you would like to contribute to vcpkg and its library catalog, or want to give us feedback on anything, check out our <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/releases\">GitHub repo<\/a>. Please report bugs or request updates to ports in our <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/issues\">issue tracker<\/a>, or join more general discussion in our <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/discussions\">discussion forum<\/a>. For an overview of our top priorities and backlog, take a look at our <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/wiki\/Roadmap\">roadmap page<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h3>Interested in vcpkg but not sure where to start?<\/h3>\n<p>Is your company experiencing challenges managing C\/C++ libraries? Perhaps you\u2019re curious if a package manager is the right choice for you? Please reach out to <a href=\"mailto:vcpkg@microsoft.com\">vcpkg@microsoft.com<\/a> and we\u2019d be happy to help!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 \u2018port\u2019, they are packages [&hellip;]<\/p>\n","protected":false},"author":1063,"featured_media":28096,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1,272],"tags":[273],"class_list":["post-31492","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus","category-vcpkg","tag-vcpkg"],"acf":[],"blog_post_summary":"<p>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 \u2018port\u2019, they are packages [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/31492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/1063"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=31492"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/31492\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/28096"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=31492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=31492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=31492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}