GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — 0.21.0: CMake cross contracts and owned accelerator targets by Sunrisepeak · Pull Request #52 · mcpp-community/mcpp-plugins

Conversation

@Sunrisepeak

@Sunrisepeak Sunrisepeak commented Oct 29, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

mcpp-plugins 0.21.0. Tracks mcpp-community/mcpp#885 (design 2026-11-07, §4.3) and closes #887 on release.

Changes

  • CMake cross contracts. A CMake cross build consumes the engine's compiler, flags, archiver and target contract when the action runs; a subproject installs a static library and an independent executable links it (tests/cmake-cross).
  • Owned accelerator targets. Accelerator rules read complete, brace-aware requests and match exact implementation names. SYCL owns its code targets: sycl+{nvptx64-sm_89,nvptx64-sm_90} emits both NVIDIA images, sycl+{spir64,nvptx64-sm_89} emits SPIR-V beside NVIDIA; the CUDA toolkit is requested only for SYCL NVIDIA targets; the older target-inheritance spelling is accepted with a migration warning; unknown SYCL targets and unavailable AMD routes are refused. CUDA, HIP and Vulkan share the reader.
  • Optional action progress. plugins-progress provides an atomic, rate-limited worker writer; CMake reports its configure and build-install stages and continues when the channel is absent or unwritable. The worker reads the channel through the UTF-8 environment API (Windows ACP 1252 verified).
  • Incremental correctness. Object-surface assembly records payload content, so restat does not hide a changed payload behind an unchanged .incbin path.
  • The system through modules. No unit includes a header or branches in the preprocessor (CI refuses both). A member asks a program for a fact through mcpp::plugins::tool::capture (its arguments as a vector, no shell); the CUDA rule opens the driver through mcpplibs::os::library; the test kit states each case's environment in its spawn options instead of writing its own; a platform difference of the building machine is if constexpr (mcpplibs::os::is_windows), so every host compiles every branch. mcpplibs.os (exactly 0.4.0, the release mcpp names) is a dependency of plugins-core and plugins-progress. docs/plugin-development.md §4 states the rule and the route for a C macro (mcpplibs.mwrap.libc).

Verification

  • 50 plugin-logic cases; the CMake musl cross build and run; SYCL consumers in legacy, owned NVIDIA, multi-architecture and mixed forms, with the device images inspected; a dual-rule CUDA sm_90 + SYCL sm_89 consumer. GPU execution is not qualified (local driver: CUDA error 803).
  • all-rules-compile, embed-consumer, embed-module-consumer, plugin-logic and island-interface build with the C-library change.

Release pins

  • CI builds with the published mcpp 2026.11.7.1 on every lane; cross subprojects that link need it.
  • Dependencies are exact releases named by identity (mcpplibs.os = "0.4.0").

SYCL libraries of several NVIDIA architectures

Each package's device link reads its own objects, so a library built for sycl+{nvptx64-sm_89,nvptx64-sm_90} links into a program with each image its own architecture's; tests/sycl-library-consumer builds it in CI and inspects the images. Not supported, and documented with the workaround: handing the SDK an archive of several NVIDIA architectures to device-link (a prebuilt SYCL .a, or a kernel calling another package's SYCL_EXTERNAL function) -- DPC++ 7.1.0's offload bundler matches its five-part bundle IDs to every NVPTX request (mcpp#899, an SDK defect).

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Sunrisepeak and others added 5 commits October 30, 2026 01:40
@Sunrisepeak @speak-agent
0.21.0: deps-cmake compiles a cross build's subproject from the engin…
6f4c056
…e's contract

When the build's target is not the machine, the subproject is configured with
the compilers, words and archiver of the engine's contract for the
configuration (${mcpp.contract}, mcpp 2026.10.30.1+), read when the action
runs, under Ninja; CMAKE_SYSTEM_NAME is the target's system and the
try-compile builds a static library. The package needs mcpp 2026.10.30.1.

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
ci: the AppImage fixture asks that the refusal lists appimage, not th…
d82c89b
…e whole list of an older engine

mcpp 2026.10.27.1 lists zip and single-file among the built-in formats.

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
deps-cmake: a contract word with a space is quoted in the flags strin…
2b0d90c
…g, as CMake splits it

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak
Merge remote-tracking branch 'origin/main' into wip/deps-cmake-contract
3451dba
@Sunrisepeak
fix: keep accelerator targets with their implementation
8d4b150
@Sunrisepeak Sunrisepeak changed the title 0.21.0: deps-cmake compiles a cross build's subproject from the engine's contract 0.21.0: CMake cross contracts and owned accelerator targets Nov 4, 2026
Sunrisepeak added 6 commits November 5, 2026 08:00
@Sunrisepeak
feat: report optional action progress from plugin workers
d215e0d
@Sunrisepeak
fix: propagate embedded payload changes through object storage
3e9fc36
@Sunrisepeak
fix: keep the progress writer usable by standalone workers
aa2c16e
@Sunrisepeak
fix: preserve Unicode progress channel paths on Windows
26ff543
Read the channel through the UTF-8 environment API instead of the CRT narrow environment. Exercise disabled channels, Unicode paths and optional write failure on Linux, macOS and Windows, recording the Windows ANSI code page.
@Sunrisepeak
ci: qualify plugins with published mcpp 2026.11.5.1
9e44847
@Sunrisepeak
fix: preserve CMake target arguments and cache selections
79f7ba6
@Sunrisepeak Sunrisepeak mentioned this pull request Nov 5, 2026
交接:生态第 4 部分(openkal 0.23 一轮)剩余任务与依赖链 mcpp-community/mcpp#885
Closed
Sunrisepeak and others added 13 commits November 6, 2026 18:24
@Sunrisepeak
test(deps-cmake): verify independent cross subproject link
2bb2333
@Sunrisepeak @speak-agent
refactor: take the C library from std; include only platform headers
6fae199
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
ci: mcpp 2026.11.7.1 for every lane; cross subprojects that link need it
6deadfb
2026.11.7.1 keeps the consumer's link inputs out of a foreign build's contract,
which the cmake-cross fixture's independent executable needs; the docs named the
unreleased 2026.11.5.2.

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
build(deps): plugins-progress takes mcpplibs.os ^0.3.1
450d756
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs(sycl): a static library of several NVIDIA architectures is not s…
7e3aa65
…upported

DPC++ 7.1.0's offload bundler matches five-part bundle IDs to every NVPTX
request (intel/llvm#23767, mcpp#899).

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
docs(sycl): the archive limitation is tracked in mcpp#899
7bab6ae
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
test(sycl): a library of two NVIDIA architectures links into a program
1f0b42e
The library's device link reads its own objects, so a consumer never asks
the SDK to unbundle an archive of several architectures; the documented
limitation is narrowed to a prebuilt multi-architecture archive or a
cross-package SYCL_EXTERNAL call (mcpp#899), with its workaround.

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
build: mcpplibs.os as one release, named by its identity
37497fc
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
refactor: every unit reaches the system through mcpplibs.os; no heade…
8d0afd7
…r, no preprocessor branch

The rules and dist members ask programs for facts through mcpp::plugins::tool::capture
(argv, no shell), the CUDA rule opens the driver through os::library, the test kit states
each case's environment in its spawn options, and platform differences are if constexpr.
CI refuses an #include or #if in a unit.

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
fix: capture appends a program's standard error read from its own pipe
6305d89
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
fix: a helper that reaches mcpplibs.os is not inline, which GCC 16 ca…
e77b920
…nnot read back from an importer

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
ci: MCPP_VERSION is the newest engine a lane needs, the floor the old…
85fdb0c
…est the collection loads on

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak @speak-agent
build: mcpplibs.os 0.4.0, the release mcpp's own modules name
c8ed527
Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak
Sunrisepeak merged commit 06729d4 into main Nov 8, 2026
6 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@Sunrisepeak Sunrisepeak mentioned this pull request Nov 8, 2026
mcpp.plugins 0.21.0: CMake cross contracts and owned accelerator targets mcpplibs/mcpp-index#731
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@Sunrisepeak
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.