Skip to content

feat(mcpp.plugins): 0.5.0, an island's entry points in the module's namespace - #372

Merged
Sunrisepeak merged 1 commit into
mainfrom
feat/plugins-0.5.0
Sep 8, 2026
Merged

feat(mcpp.plugins): 0.5.0, an island's entry points in the module's namespace#372
Sunrisepeak merged 1 commit into
mainfrom
feat/plugins-0.5.0

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

Publishes mcpp-plugins v0.5.0, merged as 992a1b4 with a green run on main.

What the release changes

docs/42 states one rule for both lanes: the module name and the namespace are one identifier path. The shader lane followed it; mcpp.tools.island did not, and emitted every entry point at global scope. A root's directories now extend the namespace exactly as a payload tree's do:

src/backends/cuda/image/blur.cu   myapp_blur   ->  myapp::kernels::image::myapp_blur

options::roots and options::layout_root replace the file list; options::strip_prefix adds a short spelling beside the authored name, which stays canonical because it is the symbol.

Why latest moves even though the release is breaking

Every published consumer pins an exact version -- a bare version is read as a choice, not a range -- so nothing resolving today is affected. The three examples in mcpp that use the generator move to 0.5.0 in the same batch, and their pull request is opened after this one lands because they resolve this package through the index.

The floor does not move. 0.5.0 changes what the package generates, not what it asks the engine for, so it stays at mcpp 2026.9.8.1.

Checked before opening

check result
loadfile(..., 't') syntax ok
check_cross_package_refs, check_platform_version_parity, check_duplicate_versions ok
mcpp xpkg parse versions linux 0.5.0, 0.4.0, ... and parse OK
exactly one ["latest"] per platform table, all three at 0.5.0 3 rows, 3 tables
the CN asset downloads and matches ec11aa99... equals the GitHub source archive's sha256

That last one is worth stating: gtc has reported uploaded for an object that then answered 404, so the asset was fetched back and hashed rather than trusted.

…amespace

`docs/42` states one rule for both lanes: the module name and the namespace are
one identifier path. The shader lane followed it and `mcpp.tools.island` did
not, emitting every entry point at global scope, so `import app.kernels` bought
a file name and nothing else. A root's directories now extend the namespace
exactly as a payload tree's do.

The API says roots rather than files: `options::roots` names the directories
implementations live under and `options::layout_root` names the one whose
structure decides where entry points live. `options::strip_prefix` emits a
short spelling beside the authored name, which stays canonical because it is
the symbol.

Breaking for a consumer of `tools-island`, and `latest` moves anyway: every
published consumer pins an exact version, and the three examples in mcpp that
use the generator move to 0.5.0 in the same batch.

The floor stays at mcpp 2026.9.8.1. This changes what the package generates,
not what it asks the engine for.

The CN asset is the same bytes as the GitHub source archive of tag v0.5.0,
sha256 ec11aa99e84d8d003afff9d93a9e76d8b84926ab2586058ee5d51344559777b9,
verified by downloading it back after the upload.
@Sunrisepeak
Sunrisepeak merged commit cf37297 into main Sep 8, 2026
8 checks passed
@Sunrisepeak
Sunrisepeak deleted the feat/plugins-0.5.0 branch September 8, 2026 17:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant