{"id":34124,"date":"2024-05-08T17:58:53","date_gmt":"2024-05-08T17:58:53","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=34124"},"modified":"2024-05-08T17:58:53","modified_gmt":"2024-05-08T17:58:53","slug":"whats-new-in-vcpkg-april-2024","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/whats-new-in-vcpkg-april-2024\/","title":{"rendered":"What\u2019s New in vcpkg (April 2024)"},"content":{"rendered":"<p>What\u2019s New in vcpkg (April 2024)<\/p>\n<p>This blog post summarizes changes to the <a href=\"https:\/\/vcpkg.io\/\">vcpkg package manager<\/a> as part of the <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/releases\/tag\/2024.04.26\">2024.04.26<\/a> release as well as changes to <a href=\"https:\/\/learn.microsoft.com\/vcpkg\/\">vcpkg documentation<\/a> throughout April. This month\u2019s vcpkg release includes improvements for visually generated dependency graphs, a new triplet variable for tweaking what files are considered by the ABI hashing algorithm, several changes to our documentation, and some performance and bug fixes.<\/p>\n<p>Some stats for this period:<\/p>\n<ul>\n<li>There are now <strong>2,426 total ports <\/strong>available in the vcpkg public registry. A <a href=\"https:\/\/learn.microsoft.com\/en-us\/vcpkg\/concepts\/ports\">port is a versioned recipe<\/a> for building a package from source, such as a C or C++ library.<\/li>\n<li><strong>12 new ports<\/strong> were added to the open-source registry.<\/li>\n<li><strong>279 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 13 main <a href=\"https:\/\/learn.microsoft.com\/en-us\/vcpkg\/concepts\/triplets\">triplets<\/a>.<\/li>\n<li><strong>16 contributors<\/strong> submitted PRs, issues, or participated in discussions in the main repo.<\/li>\n<li>The main vcpkg repo has over <strong>6,000 forks<\/strong> and <strong>21,700 stars<\/strong> on GitHub.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>An overview of vcpkg in 10 minutes<\/h3>\n<p>For the <a href=\"https:\/\/developer.microsoft.com\/en-us\/reactor\/events\/22077\/\">Pure Virtual C++ conference<\/a> this year, I gave an overview of vcpkg in just under 10 minutes. You can check out the video below:\n<iframe title=\"YouTube video player\" src=\"https:\/\/www.youtube.com\/embed\/ulftqyA3A8o?si=l_TcVO_D7mhzQQ8L\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<h3>vcpkg changelog (2024.04.26 release)<\/h3>\n<p>The following changes were made in the April release:<\/p>\n<p>&nbsp;<\/p>\n<h4>vcpkg depend-info improvements<\/h4>\n<p>The <a href=\"https:\/\/learn.microsoft.com\/vcpkg\/commands\/depend-info\">vcpkg depend-info command<\/a> displays dependencies for a set of port packages in one of multiple possible visual forms. Several improvements were made to this feature by our community contributor <a href=\"https:\/\/github.com\/dg0yt\">@dg0yt<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h4>Multi-package, triplet, and features support<\/h4>\n<p>Added support for displaying multiple packages, including triplets and optional features (<a href=\"https:\/\/learn.microsoft.com\/vcpkg\/commands\/depend-info#multiple-triplets-and-packages\">documentation<\/a>). Examples:<\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">$ vcpkg depend-info zlib\r\nvcpkg-cmake:\r\nzlib: vcpkg-cmake\r\n$ vcpkg depend-info zlib:arm64-linux\r\nvcpkg-cmake:\r\nzlib:arm64-linux: vcpkg-cmake\r\n$ vcpkg depend-info zlib:arm64-linux zlib --triplet x64-linux --host-triplet x64-linux-dynamic\r\nvcpkg-cmake:host:\r\nzlib:arm64-linux: vcpkg-cmake:host\r\nzlib: vcpkg-cmake:host<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h4>Improved readability for depend-info &#8211;dot<\/h4>\n<p>Improved readability for depend-info &#8211;dot output with added line breaks and a change to the \u201cSans\u201d font. Example:<\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">$ vcpkg depend-info --dot ableton-link\r\ndigraph G{ rankdir=LR; node [fontname=Sans]; edge [minlen=3]; overlap=false;\r\n\"ableton\";\r\n\"ableton\" -&gt; \"ableton-link\";\r\n\"ableton-link\";\r\n\"ableton-link\" -&gt; \"asio\";\r\n\"ableton-link\" -&gt; \"vcpkg-cmake\";\r\n\"ableton-link\" -&gt; \"vcpkg-cmake-config\";\r\n\"asio\";\r\n\"asio\" -&gt; \"vcpkg-cmake\";\r\n\"asio\" -&gt; \"vcpkg-cmake-config\";\r\n\"vcpkg-cmake\";\r\n\"vcpkg-cmake-config\";\r\n\"2 singletons...\";\r\n}<\/code><\/pre>\n<p><img decoding=\"async\" width=\"894\" height=\"154\" class=\"wp-image-34125\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-diagram-of-a-diagram-description-automatically.png\" alt=\"A diagram of a diagram Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-diagram-of-a-diagram-description-automatically.png 894w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-diagram-of-a-diagram-description-automatically-300x52.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-diagram-of-a-diagram-description-automatically-768x132.png 768w\" sizes=\"(max-width: 894px) 100vw, 894px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h3>Colorization by triplet type<\/h3>\n<p>Multi-triplet graphs generated with the \u201cdot\u201d format are now colorized based on whether they are a default triplet, custom triplet, or host triplet. Example:<\/p>\n<p>$ vcpkg depend-info proj:arm64-linux proj tiff[core] &#8211;triplet x64-linux-dynamic &#8211;dot | dot -Tpng -oimg.png &amp;&amp; xdg-open img.png<\/p>\n<p><img decoding=\"async\" width=\"898\" height=\"746\" class=\"wp-image-34126\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-diagram-of-a-diagram-description-automatically-1.png\" alt=\"A diagram of a diagram Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-diagram-of-a-diagram-description-automatically-1.png 898w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-diagram-of-a-diagram-description-automatically-1-300x249.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/a-diagram-of-a-diagram-description-automatically-1-768x638.png 768w\" sizes=\"(max-width: 898px) 100vw, 898px\" \/><\/p>\n<p>PRs: <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/1369\" target=\"_blank\" rel=\"noopener\">Microsoft\/vcpkg-tool#1369<\/a>, <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/1370\" target=\"_blank\" rel=\"noopener\">Microsoft\/vcpkg-tool#1370<\/a>, <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/1371\" target=\"_blank\" rel=\"noopener\">Microsoft\/vcpkg-tool#1371<\/a>, thanks @dg0yt!<\/p>\n<p>&nbsp;<\/p>\n<h4>New triplet variable: VCPKG_HASH_ADDITIONAL_FILES<\/h4>\n<p>Added variable <code>VCPKG_HASH_ADDITIONAL_FILES<\/code> for use in triplet files (<a href=\"https:\/\/learn.microsoft.com\/vcpkg\/users\/triplets#vcpkg_hash_additional_files\">documentation<\/a>). This allows you to provide a list of files to include in the calculation of <a href=\"https:\/\/learn.microsoft.com\/vcpkg\/users\/binarycaching#abi-hash\">package ABI hashes<\/a>, giving you more fine-tuned control over the binary caching experience (PR: <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/797\">Microsoft\/vcpkg-tool#797<\/a>, thanks @Neumann-A!).<\/p>\n<p>&nbsp;<\/p>\n<h4>Bug fixes and performance improvements<\/h4>\n<ul>\n<li>Fixed a performance regression where library information was being read twice and removed an unnecessary architecture check (PR: <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/1384\">Microsoft\/vcpkg-tool#1352<\/a>, thanks @Thomas1664!).<\/li>\n<li>Fixed a bug with default features sometimes getting applied when they were explicitly disabled in the top-level manifest (Originally reported issue: <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/issues\/35694\">Microsoft\/vcpkg\/issues#35694<\/a>. PR with fix: <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/1331\">Microsoft\/vcpkg-tool#1331<\/a>, thanks @dg0yt!).<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>Documentation changes<\/h3>\n<ul>\n<li>Moved <a href=\"https:\/\/learn.microsoft.com\/vcpkg\/concepts\/glossary\">Glossary<\/a> to a top-level node in the table of contents and added several new terms. The Glossary defines vcpkg-specific terms.<\/li>\n<li>Added an example helper port in the <a href=\"https:\/\/learn.microsoft.com\/vcpkg\/maintainers\/authoring-script-ports\">Authoring script ports article<\/a> to help clarify how it works.<\/li>\n<li>Added a warning in multiple places in the documentation that when environment variables are set via a command, they will only apply to the current terminal session, not future sessions.<\/li>\n<li>Added a CMake FetchContent section to the <a href=\"https:\/\/learn.microsoft.com\/vcpkg\/troubleshoot\/build-failures#fetchcontent-dependency-is-not-found-during-build-process\">build failures troubleshooting guide<\/a>. This addresses issues where FetchContent dependencies aren\u2019t found during a build.<\/li>\n<li>Added clarification about how toolset versions are matched to the <a href=\"https:\/\/learn.microsoft.com\/vcpkg\/users\/triplets\">triplets reference article<\/a> (thanks @tsondergaard!).<\/li>\n<li>Fixed some broken URLs.<\/li>\n<li>Fixed various typos (thanks @xPaw, @alex-held, @fedorbirjukov!).<\/li>\n<\/ul>\n<p>If you have any suggestions for our documentation, please <a href=\"https:\/\/github.com\/microsoft\/vcpkg-docs\/issues\">submit an issue in our GitHub repo<\/a> or see the box at the bottom of a particular article.<\/p>\n<p><img decoding=\"async\" class=\"wp-image-34127\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/word-image-34124-3.png\" width=\"741\" height=\"218\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/word-image-34124-3.png 1508w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/word-image-34124-3-300x88.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/word-image-34124-3-1024x301.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2024\/05\/word-image-34124-3-768x226.png 768w\" sizes=\"(max-width: 741px) 100vw, 741px\" \/><\/p>\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,281<\/td>\n<\/tr>\n<tr>\n<td>x86-windows<\/td>\n<td>2,195<\/td>\n<\/tr>\n<tr>\n<td>x64-windows-static<\/td>\n<td>2,176<\/td>\n<\/tr>\n<tr>\n<td>x64-windows-static-md<\/td>\n<td>2,203<\/td>\n<\/tr>\n<tr>\n<td>arm64-windows<\/td>\n<td>1,862<\/td>\n<\/tr>\n<tr>\n<td>x64-uwp<\/td>\n<td>1,270<\/td>\n<\/tr>\n<tr>\n<td>arm64-uwp<\/td>\n<td>1,235<\/td>\n<\/tr>\n<tr>\n<td>x64-linux<\/td>\n<td>2,249<\/td>\n<\/tr>\n<tr>\n<td>x64-osx<\/td>\n<td>2,138<\/td>\n<\/tr>\n<tr>\n<td>arm64-osx<\/td>\n<td>2,061<\/td>\n<\/tr>\n<tr>\n<td>arm-neon-android<\/td>\n<td>1,566<\/td>\n<\/tr>\n<tr>\n<td>x64-android<\/td>\n<td>1,618<\/td>\n<\/tr>\n<tr>\n<td>arm64-android<\/td>\n<td>1,592<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>While vcpkg supports a much larger variety of target platforms and architectures (as <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/tree\/master\/triplets\/community\">community triplets<\/a>), 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 <a href=\"https:\/\/github.com\/microsoft\/vcpkg\">vcpkg<\/a>, <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\">vcpkg-tool<\/a>, or <a href=\"https:\/\/github.com\/microsoft\/vcpkg-docs\">vcpkg-docs<\/a> repos in this release:<\/p>\n<ul>\n<li>dg0yt (27 commits)<\/li>\n<li>jiayuehua (16 commits)<\/li>\n<li>Neumann-A (8 commits)<\/li>\n<li>miyanyan (5 commits)<\/li>\n<li>talregev (5 commits)<\/li>\n<li>waywardmonkeys (3 commits)<\/li>\n<li>RT2Code (3 commits)<\/li>\n<li>Thomas1664 (3 commits)<\/li>\n<li>autoantwort (3 commits)<\/li>\n<li>AenBleidd (2 commits)<\/li>\n<li>xPaw (2 commits)<\/li>\n<li>HappySeaFox (1 commit)<\/li>\n<li>Honeybunch (1 commit)<\/li>\n<li>alagoutte (1 commit)<\/li>\n<li>Tradias (1 commit)<\/li>\n<li>Pospelove (1 commit)<\/li>\n<li>traversaro (1 commit)<\/li>\n<li>luncliff (1 commit)<\/li>\n<li>cenit (1 commit)<\/li>\n<li>TrueBrain (1 commit)<\/li>\n<li>fwcd (1 commit)<\/li>\n<li>SchaichAlonso (1 commit)<\/li>\n<li>JackBoosY (1 commit)<\/li>\n<li>alex-held (1 commit)<\/li>\n<li>fedorbirjukov (1 commit)<\/li>\n<li>tsondergaard (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\/2024.04.26\">full 2024.04.26 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>. To contribute to vcpkg documentation, visit the <a href=\"https:\/\/github.com\/microsoft\/vcpkg-docs\">vcpkg-docs repo<\/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\">GitHub repo<\/a>. Please report bugs or request updates to ports in our <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/issues\">issue tracker<\/a>\u00a0or join more general discussion in our <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/discussions\">discussion forum<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What\u2019s New in vcpkg (April 2024) This blog post summarizes changes to the vcpkg package manager as part of the 2024.04.26 release as well as changes to vcpkg documentation throughout April. This month\u2019s vcpkg release includes improvements for visually generated dependency graphs, a new triplet variable for tweaking what files are considered by the ABI [&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":[272],"tags":[273],"class_list":["post-34124","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vcpkg","tag-vcpkg"],"acf":[],"blog_post_summary":"<p>What\u2019s New in vcpkg (April 2024) This blog post summarizes changes to the vcpkg package manager as part of the 2024.04.26 release as well as changes to vcpkg documentation throughout April. This month\u2019s vcpkg release includes improvements for visually generated dependency graphs, a new triplet variable for tweaking what files are considered by the ABI [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/34124","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=34124"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/34124\/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=34124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=34124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=34124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}