Commit 8d6317e
committed
2026.9.6.1:
`SourceKind::Device` documents itself as a GRAPH ROLE -- "not scanned, no BMI,
compiled by a device compiler mcpp does not drive" -- explicitly so the table
does not grow a row per vendor. Until now every extension in it was also a
dialect an ordinary C++ compiler would refuse, so the distinction had never
been tested. `.sycl` tests it: its content is ordinary C++ and nothing in the
file would tell a reader otherwise. What makes it a device unit is that it goes
to a second compiler with a device back end -- icpx, or a clang built with the
SYCL front end -- which mcpp does not drive and which does not accept C++20
modules.
One row, and nothing else in the engine changes.
THE ALTERNATIVE, AND WHY IT WAS REJECTED. A constrained glob could have carried
`.cpp`. Then one extension would mean two things depending on which glob
matched first, and the seam a device build is written around -- device code
reaches the program only through an `extern "C"` header -- is legible precisely
because the file name says which side of it a unit is on.
THE ADDITION IS INERT ON EXISTING BUILDS, and the two conditions hold jointly:
device extensions are absent from `default_source_globs`, so no glob widens;
and a file with one of these extensions named in `sources` was a hard error
before the row existed, so nothing silently switches role.
e2e 613 is five sections and two of them are the ones that make the other three
a measurement:
* section three is the control -- the SAME CONTENT named `.cpp` must still be
compiled as C++ and must NOT reach the build program. A test naming only
`.sycl` would pass on a table that had started classifying by content.
* section five asserts the WHOLE default glob list rather than the absence of
one name, so a future addition cannot pass this file while changing what a
default build compiles.
Section four is the variant switch applied to the new row: `--no-accel` takes
the constrained glob out, which is what makes the CPU half of a seam reachable
without editing the manifest. Its first draft asserted that a `.sycl` in an
UNCONSTRAINED glob is refused; that was wrong and the run said so -- an
extension the table names is accepted wherever it is globbed, and the
compatibility guarantee is section five, not a refusal.
Chapter 20 gains the table of lanes -- which rule drives which compiler, which
payloads it needs, and what `[build] accel` says -- in both languages, and its
"Not implemented" section is corrected: the whole-target shape is no longer
among the missing, because a SYCL toolchain is now reached THROUGH the island
rather than beside it.
The rules themselves ship in `mcpp:plugins` 0.2.0: `mcpp.rules.sycl` drives the
`xim:dpcpp` payload, `mcpp.rules.hip` treats HIP on the NVIDIA platform as the
header layer over the CUDA runtime that it is, and `mcpp.rules.spirv` gains the
glslc route now that `xim:shaderc` publishes one.
Unit 105/105 (the new case verified to run by name, not by the suite being
green); e2e 606, 609, 610 and 613 pass against this binary..sycl is a device source, and the criterion is the compiler (#573)1 parent 090c016 commit 8d6317e
9 files changed
Lines changed: 405 additions & 23 deletions
File tree
- .agents/docs
- docs
- zh
- modules
- source-kind/src
- versioning/src
- tests
- e2e
- unit
Lines changed: 107 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
390 | 390 | | |
391 | 391 | | |
392 | 392 | | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
8 | 32 | | |
9 | 33 | | |
10 | 34 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
22 | 29 | | |
23 | 30 | | |
24 | 31 | | |
| |||
27 | 34 | | |
28 | 35 | | |
29 | 36 | | |
30 | | - | |
31 | | - | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
32 | 43 | | |
33 | 44 | | |
34 | 45 | | |
35 | 46 | | |
| 47 | + | |
36 | 48 | | |
37 | 49 | | |
38 | 50 | | |
| |||
269 | 281 | | |
270 | 282 | | |
271 | 283 | | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
272 | 318 | | |
273 | 319 | | |
274 | | - | |
275 | | - | |
276 | | - | |
277 | | - | |
278 | | - | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
0 commit comments