{"id":31930,"date":"2023-03-06T22:35:10","date_gmt":"2023-03-06T22:35:10","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=31930"},"modified":"2024-04-01T17:52:07","modified_gmt":"2024-04-01T17:52:07","slug":"vcpkg-2023-02-24-release-default-triplet-changes-risc-v-support-bug-fixes-and-more","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/vcpkg-2023-02-24-release-default-triplet-changes-risc-v-support-bug-fixes-and-more\/","title":{"rendered":"vcpkg 2023.02.24 Release: Default Triplet Changes, RISC-V support, Bug Fixes, and More\u2026"},"content":{"rendered":"<p>The <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/releases\/tag\/2023.02.24\">2023.02.24 release of the vcpkg package manager is available<\/a>. This blog post summarizes changes from January 10<sup>th<\/sup>, 2023 to February 24<sup>th<\/sup>, 2023 for the <a href=\"https:\/\/github.com\/microsoft\/vcpkg\">Microsoft\/vcpkg<\/a>, <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/\">Microsoft\/vcpkg-tool<\/a>, and <a href=\"https:\/\/github.com\/microsoft\/vcpkg-docs\">Microsoft\/vcpkg-docs<\/a> GitHub repos.<\/p>\n<p>Some stats for this period:<\/p>\n<ul>\n<li><strong>47 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>607 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,153 total libraries<\/strong> available in the vcpkg public registry.<\/li>\n<li><strong>141 contributors<\/strong> submitted PRs, issues, or participated in discussions in the repo.<\/li>\n<li>The main vcpkg repo has over <strong>5,200 forks<\/strong> and <strong>18,000 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>Upcoming Default Triplet Changes<\/h4>\n<p>Starting with the <strong>September 2023 vcpkg tool release<\/strong>, the default triplet for vcpkg libraries for Windows users will change from <em>x86-windows<\/em> to a detected host triplet. The detected host triplet will be inferred from your CPU architecture and operating system name. For example, if your machine uses an x64 architecture, this will be x64-windows. Arm architecture devices will also use an arm or arm64 default host triplet. This mirrors the behavior we already have for macOS and Linux users.<\/p>\n<h5>Why is this change being made?<\/h5>\n<p>Over 75% of our users are not building their libraries for x86-windows and we have received user feedback that the current default is unreasonable. Switching to host triplets is a more reasonable default since users are likely to want their libraries to build and run on their machine. It also makes the behavior consistent across all host operating systems.<\/p>\n<h5>Who is impacted?<\/h5>\n<p>The following vcpkg commands require some triplet information and assume the default triplet if none is provided. Windows users who run these commands and do not specify triplet information are impacted (using the zlib port as an example):<\/p>\n<ul>\n<li><code>vcpkg install zlib<\/code> (classic mode)<\/li>\n<li><code>vcpkg install<\/code> (manifest mode)<\/li>\n<li><code>vcpkg remove zlib<\/code><\/li>\n<li><code>vcpkg build zlib<\/code><\/li>\n<li><code>vcpkg export zlib --zip<\/code><\/li>\n<li><code>vcpkg depend-info zlib<\/code><\/li>\n<li><code>vcpkg upgrade zlib<\/code><\/li>\n<li><code>vcpkg build-external zlib .\\ports\\zlib<\/code> (builds a library from specified path)<\/li>\n<li><code>vcpkg x-check-support<\/code> (checks supports field for specified triplet)<\/li>\n<li><code>vcpkg x-set-installed zlib<\/code><\/li>\n<li><code>vcpkg ci<\/code><\/li>\n<\/ul>\n<p>For now, vcpkg will emit the following warning when one of the above commands is run without a specified triplet:<\/p>\n<p><code>warning: Starting with the September 2023 release, the default triplet for vcpkg libraries will change from x86-windows to the detected host triplet [TRIPLET]. To resolve this message, add --triplet x86-windows to keep the same behavior.<\/code><\/p>\n<p>Users of vcpkg manifests and MSBuild or CMake won\u2019t be affected by this change if they use the built-in integration vcpkg has with these build systems. This is because vcpkg already infers what triplet to use based on the active build configuration, and thus wouldn\u2019t use a generalized default.<\/p>\n<h5>What does this mean for me?<\/h5>\n<p>If you are a Windows user currently running vcpkg builds (whether manually or via a build script) without specifying a triplet, vcpkg will not assume x86-windows anymore unless that is your host architecture. You should update your build scripts to specify the x86-windows triplet if you wish to maintain the current experience. Please review our <a href=\"https:\/\/learn.microsoft.com\/vcpkg\/users\/triplets\">Triplet files documentation<\/a> for more details on how to use triplets to control how your dependencies are built.<\/p>\n<p><a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/881\">PR: Microsoft\/vcpkg-tool#881: Add warning message for change in default triplet to host triplet<\/a><\/p>\n<p>&nbsp;<\/p>\n<h4>Initial support for RISC-V<\/h4>\n<p>A community PR enables vcpkg to build on machines with RISC-V instruction set architecture.<\/p>\n<p><a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/894\">PR: Microsoft\/vcpkg-tool#894: Add initial risc-v support<\/a> (thanks @dtcxzyw!)<\/p>\n<p>&nbsp;<\/p>\n<h4>Bug Fixes \/ Performance Improvements<\/h4>\n<ul>\n<li>Removed markdown parser used for vcpkg artifacts commands to significantly improve performance when these commands are run; test with \u201cvcpkg find artifact gcc\u201d ran 1.8x faster after the change. (<a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/870\">Microsoft\/vcpkg-tool#870<\/a>)<\/li>\n<li>Removed use of DUMPBIN from post-build checks. Post-build checks that relied on it should run faster, and users no longer need to provide a DUMPBIN if they are using, for example, MinGW as their compiler. (<a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/834\">Microsoft\/vcpkg-tool#834<\/a>, <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/905\">Microsoft\/vcpkg-tool#905<\/a>)<\/li>\n<li>Warning messages when installing ports for unsupported triplets will no longer print multiple times in a row. (<a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/899\">Microsoft\/vcpkg-tool#899<\/a>, thanks @autoantwort!)<\/li>\n<li>Changed a post-build check for ports so vcpkg no longer requires pkg-config (.pc) files that don\u2019t have a \u201cLib:\u201d line to be placed in <em>share\/pkgconfig<\/em>. The locations <em>lib\/pkgconfig\/<\/em> and <em>debug\/lib\/pkgconfig <\/em>are now accepted as well. (<a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/906\">Microsoft\/vcpkg-tool#906<\/a>, thanks @autoantwort!)<\/li>\n<li>Error message when a user tries to add a port with an invalid version field in vcpkg.json now provides modern examples of acceptable version fields (<a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/880\">Microsoft\/vcpkg-tool#880<\/a>, thanks @Pospelove!).<\/li>\n<li>Several improvements made to the vcpkg CI system to improve integrity of the curated registry:\n<ul>\n<li><a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/898\">Microsoft\/vcpkg-tool#898<\/a>, thanks @autoantwort!<\/li>\n<li><a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/877\">Microsoft\/vcpkg-tool#877<\/a>, thanks @cnSchwarzer!<\/li>\n<li><a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/865\">Microsoft\/vcpkg-tool#865<\/a>, thanks @autoantwort!<\/li>\n<li><a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/856\">Microsoft\/vcpkg-tool#856<\/a>, thanks @autoantwort!<\/li>\n<\/ul>\n<\/li>\n<li>Improved several diagnostic messages:\n<ul>\n<li>Clarify what it means to be &#8220;unsupported&#8221; by a supports expression. <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/879\">Microsoft\/vcpkg-tool#879<\/a><\/li>\n<li>Improve &#8216;expected a versioning field&#8217; error message. <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/880\">Microsoft\/vcpkg-tool#880<\/a>, thanks @Pospelove!<\/li>\n<li>Print unsupported warnings only once. <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/899\">Microsoft\/vcpkg-tool#899<\/a>, thanks autoantwort!<\/li>\n<li>Unsupported platform added for env. <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/891\">Microsoft\/vcpkg-tool#891<\/a>, thanks soroshsabz!<\/li>\n<\/ul>\n<\/li>\n<li>Fixed vcpkg upgrade command failing if a feature was removed for a port that is being upgraded. <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/873\">Microsoft\/vcpkg-tool#873<\/a>, thanks autoantwort!<\/li>\n<\/ul>\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>x64-windows<\/td>\n<td>2,002<\/td>\n<\/tr>\n<tr>\n<td>x86-windows<\/td>\n<td>1,943<\/td>\n<\/tr>\n<tr>\n<td>x64-windows-static<\/td>\n<td>1,905<\/td>\n<\/tr>\n<tr>\n<td>x64-windows-static-md<\/td>\n<td>1,916<\/td>\n<\/tr>\n<tr>\n<td>arm64-windows<\/td>\n<td>1,579<\/td>\n<\/tr>\n<tr>\n<td>x64-linux<\/td>\n<td>1,949<\/td>\n<\/tr>\n<tr>\n<td>x64-osx<\/td>\n<td>1,877<\/td>\n<\/tr>\n<tr>\n<td>x64-uwp<\/td>\n<td>1,020<\/td>\n<\/tr>\n<tr>\n<td>arm-uwp<\/td>\n<td>1,042<\/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, vcpkg-tool, or vcpkg-docs repos in this release:<\/p>\n<ul>\n<li>dg0yt (31 commits)<\/li>\n<li>chausner (30 commits)<\/li>\n<li>autoantwort (29 commits)<\/li>\n<li>Neumann-A (21 commits)<\/li>\n<li>xiaozhuai (16 commits)<\/li>\n<li>Pospelove (12 commits)<\/li>\n<li>Sibras (6 commits)<\/li>\n<li>RT222 (4 commits)<\/li>\n<li>AenBleidd (4 commits)<\/li>\n<li>talregev (3 commits)<\/li>\n<li>quyykk (3 commits)<\/li>\n<li>ahmedyarub (3 commits)<\/li>\n<li>myd7349 (3 commits)<\/li>\n<li>m-kuhn (2 commits)<\/li>\n<li>coryan (2 commits)<\/li>\n<li>horenmar (1 commit)<\/li>\n<li>longhuan2018 (1 commit)<\/li>\n<li>DragonJoker (1 commit)<\/li>\n<li>daschuer (1 commit)<\/li>\n<li>ZeeWanderer (1 commit)<\/li>\n<li>mathisloge (1 commit)<\/li>\n<li>Tradias (1 commit)<\/li>\n<li>luncliff (1 commit)<\/li>\n<li>SchaichAlonso (1 commit)<\/li>\n<li>past-due (1 commit)<\/li>\n<li>gjasny (1 commit)<\/li>\n<li>Osyotr (1 commit)<\/li>\n<li>kobykahane (1 commit)<\/li>\n<li>JackBoosY (1 commit)<\/li>\n<li>Thomas1664 (1 commit)<\/li>\n<li>soroshsabz (1 commit)<\/li>\n<li>cnSchwarzer (1 commit)<\/li>\n<li>WimLefrere (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.02.24\">full 2023.02.24 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","protected":false},"excerpt":{"rendered":"<p>The 2023.02.24 release of the vcpkg package manager is available. This blog post summarizes changes from January 10th, 2023 to February 24th, 2023 for the Microsoft\/vcpkg, Microsoft\/vcpkg-tool, and Microsoft\/vcpkg-docs GitHub repos. Some stats for this period: 47 new ports were added to the open-source registry. If you are unfamiliar with the term \u2018port\u2019, they are [&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-31930","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus","category-vcpkg","tag-vcpkg"],"acf":[],"blog_post_summary":"<p>The 2023.02.24 release of the vcpkg package manager is available. This blog post summarizes changes from January 10th, 2023 to February 24th, 2023 for the Microsoft\/vcpkg, Microsoft\/vcpkg-tool, and Microsoft\/vcpkg-docs GitHub repos. Some stats for this period: 47 new ports were added to the open-source registry. If you are unfamiliar with the term \u2018port\u2019, they are [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/31930","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=31930"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/31930\/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=31930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=31930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=31930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}