Skip to content

Commit 4db5c36

Browse files
committed
mcpp:plugins 0.2.5 —— 这个集合不再是一个 Linux 集合
三处变化,没有一处是新成员。 **每个平台各带对的那个着色器编译器。** `xim:glslang` 只为 Linux 发布,于是 `rules-spirv` 只到得了一个平台 —— 而索引里 Vulkan 与 OpenGL 的库三平台齐全。 缺口正好落在中间那一层:Windows 上的开发者能链接 Vulkan、开窗、画三角形,只要 他自己准备着色器编译器,而那恰恰是构建系统该管的那一件事。macOS 与 Windows 改 用 `xim:shaderc`,并且由规则去**选** —— 跨平台的一致由规则的选择能力提供,不是 靠把一个编译器发布三遍。 **CUDA 与 SYCL 上 Windows。** 两家厂商都为这些组件发布 Windows 资产,所以这是配方 工作不是打包工作:xim-pkgindex 里五个包补上 windows 段,规则补上与之配套的、按宿主 分岔的那几处 —— `.exe` 后缀、`lib/x64`,以及「Windows 上 CUDA 规则一律走 clang 路线」这个判断(nvcc 路线要 MSVC 的 cl.exe,而找到它要问机器的 Visual Studio 安装)。 **每条规则现在都为每个平台编译过。** 那个仓库里每个 consumer 都端到端驱动一条规则、 因而需要那条规则的载荷,而载荷只为一到三个平台发布 —— 于是一条规则里为某个宿主写的 那半段,恰好是那个宿主从不编译的那半段。一个不点名任何 accelerator 的夹具现在在 Linux、macOS 与 Windows 上编译全部六个模块。它第一次跑就抓到三处缺陷,每个宿主差异 一处,没有一处是 Linux 构建看得见的。 两端镜像下载回来逐字节比对,一个 sha256 同时命名两端。
1 parent 8e18fe2 commit 4db5c36

1 file changed

Lines changed: 68 additions & 5 deletions

File tree

‎pkgs/m/mcpp.plugins.lua‎

Lines changed: 68 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
-- each member selected by a feature.
33
--
44
-- [dependencies.mcpp]
5-
-- plugins = { version = "0.2.4", features = ["rules-spirv"], host-module = true }
5+
-- plugins = { version = "0.2.5", features = ["rules-spirv"], host-module = true }
66
--
77
-- // build.mcpp
88
-- import mcpp;
99
-- import mcpp.rules.spirv;
1010
--
11-
-- Members of 0.2.4, with the mcpp release each relies on:
11+
-- Members of 0.2.5, with the mcpp release each relies on:
1212
--
1313
-- mcpp.rules.cuda `rules-cuda` >= 2026.9.5.2
1414
-- mcpp.rules.spirv `rules-spirv` >= 2026.9.5.3; since 0.2.0 it drives glslc
@@ -39,6 +39,48 @@
3939
-- the runtime binding's choice and differs
4040
-- between a developer machine and a runner
4141
--
42+
-- 0.2.5 is the release in which the collection stopped being a Linux
43+
-- collection. Three things changed and none of them is a new member.
44+
--
45+
-- ONE SHADER COMPILER PER PLATFORM. `xim:glslang` is published for Linux
46+
-- alone, so `rules-spirv` reached one platform even though the Vulkan and
47+
-- OpenGL libraries in the index reach three -- the gap sat in the middle
48+
-- layer, where a developer on Windows could link Vulkan, open a window and
49+
-- draw a triangle provided they brought their own shader compiler, which is
50+
-- the one thing a build system is for. macOS and Windows now take
51+
-- `xim:shaderc`, and the rule CHOOSES between the two, so cross-platform
52+
-- parity is provided by the rule's ability to choose rather than by
53+
-- publishing one compiler three times.
54+
--
55+
-- CUDA AND SYCL ON WINDOWS. NVIDIA and Intel both publish Windows assets for
56+
-- the components these rules drive, so this was recipe work rather than
57+
-- packaging work: `xim:cuda-nvcc`, `xim:cuda-cudart`, `xim:cuda-cccl`,
58+
-- `xim:libcurand` and `xim:dpcpp` gained Windows sections in xim-pkgindex,
59+
-- and the rules gained the host-dependent halves that go with them -- the
60+
-- `.exe` suffix, `lib/x64`, and the decision that on Windows the CUDA rule
61+
-- takes its clang route whatever the project's compiler is, because the nvcc
62+
-- route needs MSVC's cl.exe located by asking the machine about its Visual
63+
-- Studio installation.
64+
--
65+
-- AND EVERY RULE IS NOW COMPILED FOR EVERY PLATFORM. Each consumer in that
66+
-- repository drives one rule end to end and therefore needs that rule's
67+
-- payload, and payloads are published for one, two or three platforms -- so
68+
-- the half of a rule written for a host was exactly the half that host never
69+
-- compiled. A fixture that names no accelerator (every rule returns
70+
-- immediately, nothing is downloaded) now compiles all six modules on Linux,
71+
-- macOS and Windows. It found three defects on its first run, one per host
72+
-- difference, none of them visible to a Linux build.
73+
--
74+
-- ONE DECLARATION IN THIS RELEASE IS AN EXACT VERSION WHERE THE SHAPE
75+
-- WOULD BE A FLOOR. `xim:shaderc` is pinned rather than floored on macOS and
76+
-- Windows because mcpp 2026.9.6.6 cannot pass a `>` through a Windows command
77+
-- line: the JSON provisioning argument is escaped for the child's argv parser
78+
-- and cmd.exe reads the `>` in `>=2026.3` as a redirection, answering `The
79+
-- filename, directory name, or volume label syntax is incorrect.` An exact
80+
-- version is a legitimate declaration -- mcpp reads it as a CHOICE, so a
81+
-- project pinning a different one still wins -- and it reverts to a floor once
82+
-- a released engine escapes that argument.
83+
--
4284
-- 0.2.4 moves every member's floor to the same release, 2026.9.6.6, and the
4385
-- reason is one change in the engine rather than five in the rules: a payload
4486
-- a DEPENDENCY declared is now both installed and ANSWERABLE. Before it,
@@ -140,6 +182,13 @@ package = {
140182

141183
xpm = {
142184
linux = {
185+
["0.2.5"] = {
186+
url = {
187+
GLOBAL = "https://github.com/mcpp-community/mcpp-plugins/archive/refs/tags/v0.2.5.tar.gz",
188+
CN = "https://gitcode.com/mcpp-res/mcpp-plugins/releases/download/0.2.5/mcpp-plugins-0.2.5.tar.gz",
189+
},
190+
sha256 = "e720350af4bc9ae05e43da8f55651ae1f9e87de88749070546a86441ae459df8",
191+
},
143192
["0.2.4"] = {
144193
url = {
145194
GLOBAL = "https://github.com/mcpp-community/mcpp-plugins/archive/refs/tags/v0.2.4.tar.gz",
@@ -189,9 +238,16 @@ package = {
189238
},
190239
sha256 = "adf1f9d6691a5d05a8a4a94e83c733ea39caee1510ce2c9af4cb23bebabea9f5",
191240
},
192-
["latest"] = { ref = "0.2.4" },
241+
["latest"] = { ref = "0.2.5" },
193242
},
194243
macosx = {
244+
["0.2.5"] = {
245+
url = {
246+
GLOBAL = "https://github.com/mcpp-community/mcpp-plugins/archive/refs/tags/v0.2.5.tar.gz",
247+
CN = "https://gitcode.com/mcpp-res/mcpp-plugins/releases/download/0.2.5/mcpp-plugins-0.2.5.tar.gz",
248+
},
249+
sha256 = "e720350af4bc9ae05e43da8f55651ae1f9e87de88749070546a86441ae459df8",
250+
},
195251
["0.2.4"] = {
196252
url = {
197253
GLOBAL = "https://github.com/mcpp-community/mcpp-plugins/archive/refs/tags/v0.2.4.tar.gz",
@@ -241,9 +297,16 @@ package = {
241297
},
242298
sha256 = "adf1f9d6691a5d05a8a4a94e83c733ea39caee1510ce2c9af4cb23bebabea9f5",
243299
},
244-
["latest"] = { ref = "0.2.4" },
300+
["latest"] = { ref = "0.2.5" },
245301
},
246302
windows = {
303+
["0.2.5"] = {
304+
url = {
305+
GLOBAL = "https://github.com/mcpp-community/mcpp-plugins/archive/refs/tags/v0.2.5.tar.gz",
306+
CN = "https://gitcode.com/mcpp-res/mcpp-plugins/releases/download/0.2.5/mcpp-plugins-0.2.5.tar.gz",
307+
},
308+
sha256 = "e720350af4bc9ae05e43da8f55651ae1f9e87de88749070546a86441ae459df8",
309+
},
247310
["0.2.4"] = {
248311
url = {
249312
GLOBAL = "https://github.com/mcpp-community/mcpp-plugins/archive/refs/tags/v0.2.4.tar.gz",
@@ -293,7 +356,7 @@ package = {
293356
},
294357
sha256 = "adf1f9d6691a5d05a8a4a94e83c733ea39caee1510ce2c9af4cb23bebabea9f5",
295358
},
296-
["latest"] = { ref = "0.2.4" },
359+
["latest"] = { ref = "0.2.5" },
297360
},
298361
},
299362

0 commit comments

Comments
 (0)