Comparing main...feat/mcpp-plugins-0.2.2 · mcpplibs/mcpp-index · GitHub
Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: mcpplibs/mcpp-index
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: mcpplibs/mcpp-index
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: feat/mcpp-plugins-0.2.2
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 1 commit
  • 1 file changed
  • 1 contributor

Commits on Sep 6, 2026

  1. feat(mcpp.plugins): 0.2.2 — each rule takes the extensions it claims

    Every rule changes and no floor moves.
    
    A rule used to take the whole of `mcpp::device_sources()`, which is the
    PACKAGE's device set and not one rule's share of it. That is right for exactly
    as long as a build has one rule in it, and the premise was never written down.
    Measured with two rules in one build program:
    
        cuda:scale  clang -x cuda shaders/scale.comp -o scale.cu.o
        mcpp.rules.spirv: src/kernels/saxpy.cu has no shader stage.
    
    Two failures, and the quieter one is worse: the CUDA rule did not refuse the
    shader, it compiled it and produced an object.
    
    Each rule now selects by extension -- `.cu`, `.hip`, `.sycl`, the shader stages
    -- and a rule whose backend the build does not name returns without complaint,
    which is what lets a build program call every rule it imports unconditionally
    and `--no-accel` compile nothing.
    
    No floor moves: none of that needs a newer engine. mcpp 2026.9.6.5 adds the
    engine's half -- a device source that reached no action is refused, naming the
    file -- but a rule package does not require it.
    
    Verified by the package's own CI (green on main) with a new fixture,
    tests/multi-rule-consumer: one package with a `.cu` and a `.comp`, both rules in
    one build program, both products asserted, and `test ! -f scale.cu.o` for the
    shader that must not have been compiled as CUDA. Run on a real device as well.
    
    Both mirrors were downloaded and compared byte for byte before this descriptor
    was written; one sha256 names both.
    Sunrisepeak committed Sep 6, 2026
    Configuration menu
    Copy the full SHA
    53c785e View commit details
    Browse the repository at this point in the history
Loading