From 7f6684fc41e0d33f859dc67e335aebee0a71b250 Mon Sep 17 00:00:00 2001 From: speak-agent <248744407+speak-agent@users.noreply.github.com> Date: Thu, 10 Sep 2026 19:14:30 +0800 Subject: [PATCH 1/2] fix(examples): follow the farms to 2026.09.11 `compat:vulkan-runtime` and `compat:opencl-runtime` no longer carry `libnvidia-pkcs11*` -- a PKCS#11 token module the vendor name pattern swept in and that no GPU driver's dispatch reaches -- and the chain that delivers them took new versions so an installed copy stops recording the old pin. Measured on this host with the driver, both examples rebuilt from an empty target directory: sycl members 49, walked 49, findings none vulkan members 56, walked 56, findings none and both compute `12 24 36 48` on an RTX 4080. Follows mcpplibs/mcpp-index#383. --- examples/09-heterogeneous/multi-backend/mcpp.toml | 2 +- examples/09-heterogeneous/sycl/app/mcpp.toml | 2 +- examples/09-heterogeneous/vulkan/app/mcpp.toml | 2 +- examples/10-graphics/offscreen/mcpp.toml | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/09-heterogeneous/multi-backend/mcpp.toml b/examples/09-heterogeneous/multi-backend/mcpp.toml index 12fadb91..b5cdccd9 100644 --- a/examples/09-heterogeneous/multi-backend/mcpp.toml +++ b/examples/09-heterogeneous/multi-backend/mcpp.toml @@ -104,7 +104,7 @@ cuda-driver = "2026.09.05" # is a payload and the hardware ones are the host's. [target.'cfg(accelerator = "vulkan")'.dependencies.compat] vulkan = "1.4.357.0" -vulkan-runtime = "2026.09.10" +vulkan-runtime = "2026.09.11" [build] # The device sources carry the accel they are for. A CONSTRAINED glob gates diff --git a/examples/09-heterogeneous/sycl/app/mcpp.toml b/examples/09-heterogeneous/sycl/app/mcpp.toml index 97ac1963..325fe272 100644 --- a/examples/09-heterogeneous/sycl/app/mcpp.toml +++ b/examples/09-heterogeneous/sycl/app/mcpp.toml @@ -37,7 +37,7 @@ plugins = { version = "0.5.2", features = ["rules-sycl", "tools-island"], host-m # message (#596). The farm now mirrors what the driver sentinel publishes # rather than naming a file. [dependencies.compat] -sycl-runtime = "2026.09.10" +sycl-runtime = "2026.09.11" # NO [xlings.workspace]. `mcpp.rules.sycl` declares all five payloads this lane # needs, each closing one hole the host would otherwise fill: `dpcpp` (the diff --git a/examples/09-heterogeneous/vulkan/app/mcpp.toml b/examples/09-heterogeneous/vulkan/app/mcpp.toml index 6e314cdf..627ce12c 100644 --- a/examples/09-heterogeneous/vulkan/app/mcpp.toml +++ b/examples/09-heterogeneous/vulkan/app/mcpp.toml @@ -22,7 +22,7 @@ plugins = { version = "0.5.2", features = ["rules-spirv"], host-module = true } # below is a payload and the hardware ones are the host's. [dependencies.compat] vulkan = "1.4.357.0" -vulkan-runtime = "2026.09.10" +vulkan-runtime = "2026.09.11" # ONE payload here, and the shader compiler is not it: `mcpp.rules.spirv` # declares `xim:glslang` for itself. What stays is a DEVICE, and the boundary is diff --git a/examples/10-graphics/offscreen/mcpp.toml b/examples/10-graphics/offscreen/mcpp.toml index febc6e54..0e35a690 100644 --- a/examples/10-graphics/offscreen/mcpp.toml +++ b/examples/10-graphics/offscreen/mcpp.toml @@ -28,14 +28,14 @@ plugins = { version = "0.5.2", features = ["rules-spirv"], host-module = true } # seam work: the CPU leg below is selected by the accelerator, and only the # packages are unconditional. [dependencies.compat] -vulkan = "1.4.357.1" +vulkan = "1.4.357.2" # The adapter that makes the host's own ICDs reachable from a binary running # under mcpp's private loader. An OS predicate, which IS allowed, and a Linux # concern by construction: macOS resolves through dyld and Windows through the # PE loader, and neither has a private loader to work around. [target.'cfg(linux)'.dependencies.compat] -vulkan-runtime = "2026.09.10" +vulkan-runtime = "2026.09.11" # A Vulkan device that needs no GPU, so this example runs on a machine that has # none. It is a DEVICE and therefore a payload; the drivers a real GPU needs are From dec15008a3708dfab898536659fdb2d0410f869a Mon Sep 17 00:00:00 2001 From: speak-agent <248744407+speak-agent@users.noreply.github.com> Date: Thu, 10 Sep 2026 19:50:17 +0800 Subject: [PATCH 2/2] fix(examples): offscreen stops naming a dependency its dependency already declares `compat.vulkan` declares `compat.vulkan-runtime` itself on Linux. Naming it here too pinned one version in two places, in two repositories, with nothing enforcing that they agree -- and they drifted three times in one day: the farm moved its key, this file moved its own, and a runner holding an installed `compat.vulkan` still recorded the previous one. Each time the build stopped with `irreconcilable versions` and each time the repair was to edit the other place. Measured after removing it: the example still receives the farm -- `library_dirs` names `compat-x-vulkan-runtime/2026.09.11`, and the record reads members 56, walked 56, no findings -- because the package that needs the adapter is the package that says so. The comment that explained why the adapter exists stays, and now explains why this file does not name it. --- examples/10-graphics/offscreen/mcpp.toml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/examples/10-graphics/offscreen/mcpp.toml b/examples/10-graphics/offscreen/mcpp.toml index 0e35a690..46468dc1 100644 --- a/examples/10-graphics/offscreen/mcpp.toml +++ b/examples/10-graphics/offscreen/mcpp.toml @@ -30,12 +30,21 @@ plugins = { version = "0.5.2", features = ["rules-spirv"], host-module = true } [dependencies.compat] vulkan = "1.4.357.2" -# The adapter that makes the host's own ICDs reachable from a binary running -# under mcpp's private loader. An OS predicate, which IS allowed, and a Linux -# concern by construction: macOS resolves through dyld and Windows through the -# PE loader, and neither has a private loader to work around. -[target.'cfg(linux)'.dependencies.compat] -vulkan-runtime = "2026.09.11" +# THE ADAPTER IS NOT NAMED HERE, AND THAT IS THE POINT. +# +# `compat.vulkan` declares `compat.vulkan-runtime` itself on Linux -- the +# adapter that makes the host's own ICDs reachable from a binary running under +# mcpp's private loader, which macOS and Windows do not need because dyld and +# the PE loader have no private-loader problem to work around. +# +# Naming it here as well pinned one version in two places, in two repositories, +# with nothing enforcing that they agree. They drifted three times in one day: +# the loader package moved its pin, this file moved its own, and an installed +# copy of `compat.vulkan` still recorded the previous one -- each time the build +# stopped with `irreconcilable versions`, and each time the fix was to edit the +# other place. A dependency that another dependency already declares is a +# second copy of a decision; the version it needs is the one that package says +# it needs. # A Vulkan device that needs no GPU, so this example runs on a machine that has # none. It is a DEVICE and therefore a payload; the drivers a real GPU needs are