You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+14-5Lines changed: 14 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ imports each one from `build.mcpp` under the module name the member declares.
6
6
7
7
```toml
8
8
[build-dependencies.mcpp]
9
-
plugins = { version = "0.7.0", features = ["rules-spirv"], host-module = true }
9
+
plugins = { version = "0.8.0", features = ["rules-spirv"], host-module = true }
10
10
```
11
11
12
12
`[build-dependencies]`, not `[dependencies]`. The two keys answer separate
@@ -66,7 +66,7 @@ engine's own module family and is not used here.
66
66
|`rules-ascendc`|`mcpp.rules.ascendc`| 2026.9.6.6 |`[build] accel = "ascend8.5+{dav-c220}"`, a constrained glob for `*.asc`. Compiles with BiSheng in MIXED mode, so the object carries the device binary and a host-callable launcher and joins the ordinary link -- no registration file and no device-link step. Its own engine needs are `.asc` in the device-source table and `mcpp::link_flag` for the `-rpath-link` the toolkit's shared libraries require, both 2026.9.6.5 |
67
67
|`rules-cuda`|`mcpp.rules.cuda`| 2026.9.6.6 |`[build] accel = "cuda…"`, a constrained glob for `*.cu`; the clang route with an LLVM toolchain, the nvcc route with a GCC one |
68
68
|`rules-hip`|`mcpp.rules.hip`| 2026.9.6.6 |`[build] accel = "hip, cuda12.9+{sm_89}"`, a constrained glob for `*.hip`. On the NVIDIA platform HIP is a header layer over the CUDA runtime, so the compiler is the project's own clang and there is no ROCm on the machine |
69
-
|`rules-slang`|`mcpp.rules.slang`| 2026.9.7.1 |`[build] accel = "vulkan1.2"`, a constrained glob for `*.slang`. Slang is a different language from GLSL rather than a second driver for it -- its own module system, generics, and targets beyond SPIR-V -- so it is a rule of its own. `.slang` is **not** in the engine's device-source table: this feature declares `device_extensions = [".slang"]` and `rule_module = "mcpp.rules.slang"`, and the engine routes it from there. That is the criterion for the whole arrangement -- a new device language costs no engine release |
69
+
|`rules-slang`|`mcpp.rules.slang`| 2026.9.7.1 |`[build] accel = "vulkan1.2"`, a constrained glob for `*.slang`. Slang is a different language from GLSL rather than a second driver for it -- its own module system, generics, and targets beyond SPIR-V -- so it is a rule of its own. `.slang` is **not** in the engine's device-source table: this feature declares `device_extensions = [".slang"]` and `rule_module = "mcpp.rules.slang"`, and the engine routes it from there. That is the criterion for the whole arrangement -- a new device language costs no engine release. Since 0.7.0 it has the same `options::storage` axis as `rules-spirv` (header / object / sidecar), `options::extra_args` for the arguments the rule has no field for, and `options::per_file` for what one shader gets that the others do not -- a project with a `-fvk-use-gl-layout` and one shader needing `-emit-spirv-via-glsl` writes both without leaving one `compile()` call|
70
70
|`rules-spirv`|`mcpp.rules.spirv`| 2026.9.6.6 |`[build] accel = "vulkan1.2"`, a constrained glob for the shader stages; compiles each shader through a `role = "source"` action and states which of the two compilers produced it |
71
71
|`rules-sycl`|`mcpp.rules.sycl`| 2026.9.6.6 |`[build] accel = "sycl"` or `"sycl, cuda12.9+{sm_89}"`, a constrained glob for `*.sycl`, and `compat:sycl-runtime` so the artifact can reach `libsycl.so.9` at run time. Its own engine need is `.sycl` in the device-source table, 2026.9.6.1 |
72
72
|`tools-embed`|`mcpp.tools.embed`| 2026.9.5.4 | nothing beyond mcpp: it reads a file and writes a header while the build program runs. The floor is the release whose fast path compares a declared file input, without which an edit to the data does not reach the binary |
@@ -83,7 +83,7 @@ A project names the rule and nothing else:
83
83
84
84
```toml
85
85
[build-dependencies.mcpp]
86
-
plugins = { version = "0.7.0", features = ["rules-cuda"], host-module = true }
86
+
plugins = { version = "0.8.0", features = ["rules-cuda"], host-module = true }
87
87
```
88
88
89
89
The payloads each rule drives are declared **here**, under the feature that
@@ -167,6 +167,15 @@ looks harmless.
167
167
0.5.0, 0.5.1 and 0.5.2 do not move it. Naming an island's entry points is a
168
168
change to what this package generates, not to what it asks the engine for.
169
169
170
+
0.7.1 does not move it either, and records a compiler rather than an engine:
171
+
under MSVC 14.52 (36629 and 36725, measured on xrgui's CI) a module that has
172
+
instantiated `std::filesystem::path`'s iterator poisons every importer that
173
+
touches `path` again -- `filesystem(1572): error C2801: '_Path_iterator<...>::operator =='
174
+
must be a non-static member`. Nothing in this package instantiates that
175
+
iterator now: the lib root reads paths apart as strings
176
+
(`mcpp::plugins::names::components`), and the members' relative-path
177
+
arithmetic is `mcpp::plugins::names::relative_to`.
178
+
170
179
The previous shared floor was 2026.9.7.1, the release that reads
171
180
`device_extensions` and `rule_module`, reports `[language] modules` and the
172
181
package's own name to a build program, writes the build program a declared rule
@@ -324,8 +333,8 @@ consumer compiled either way is the same source.
324
333
relative to the working directory, so the program finds its payloads when run
325
334
from the package root and does not when run from elsewhere -- which is why it is
326
335
not the default, and why `mcpp pack` of such a program has something further to
327
-
collect. `tests/spirv-sidecar` asserts both halves: found from the root, and
328
-
reported missing from `/tmp`.
336
+
collect. `tests/spirv-sidecar` and `tests/slang-sidecar` assert both halves: found
337
+
from the root, and reported missing from `/tmp`.
329
338
330
339
**The default follows the project.** `[language] modules = true` gives the
331
340
module surface, `false` gives a header with the same declarations. mcpp reports
Copy file name to clipboardExpand all lines: mcpp.toml
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
[package]
2
2
name = "plugins"
3
3
namespace = "mcpp"
4
-
version = "0.7.0"
4
+
version = "0.8.0"
5
5
description = "Official mcpp build plugins: rule packages under mcpp.rules.*, build-time utilities under mcpp.tools.*, each member selected by a feature"
0 commit comments