From 43165f44fe72fef9aff4fb914d45a208bb7d5a60 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Thu, 3 Sep 2026 12:45:54 +0800 Subject: [PATCH 1/2] =?UTF-8?q?0.5.2=20=E2=80=94=20the=20headers=20package?= =?UTF-8?q?=20is=20declared=20in=20the=20one=20table,=20and=20both=20spell?= =?UTF-8?q?ings=20are=20carried?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mcpp 2026.9.3.1 makes `[xlings.workspace]` the table an author writes. The version is unconstrained on both sides (`"""" is the authored spelling for 'present, version unconstrained'): this package needs the headers to exist and has nothing to say about which release of them. Both spellings are present on purpose. An engine that knows the table collapses them; one that predates it reads `deps` and behaves as today. Dropping the older line now would be a silent regression there — such an engine parses the table and provisions nothing from it, so build.mcpp would find no headers through mcpp::xpkg_dir on the one platform that needs the fallback. Verified on 2026.9.3.1: `mcpp build --target riscv64-none-elf` succeeds. A native host build fails identically before and after this change, so that failure is a property of building this package natively rather than of the migration. CI pins mcpp 2026.9.3.1. --- .github/workflows/ci.yml | 6 +++--- mcpp.toml | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f040d71..e4c4a75 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-24.04 timeout-minutes: 40 env: - MCPP_VERSION: 2026.8.20.2 + MCPP_VERSION: 2026.9.3.1 XLINGS_VERSION: v2026.8.17.2 XLINGS_NON_INTERACTIVE: '1' steps: @@ -341,7 +341,7 @@ jobs: run: shell: bash env: - MCPP_VERSION: 2026.8.20.2 + MCPP_VERSION: 2026.9.3.1 XLINGS_VERSION: v2026.8.17.2 XLINGS_NON_INTERACTIVE: '1' steps: @@ -553,7 +553,7 @@ jobs: - { label: 'alloc-kal', spec: ', features = ["alloc-kal"]', expect: 'links and runs' } - { label: 'nolibc', spec: ', features = ["nolibc"]', expect: 'compiles with no C library' } env: - MCPP_VERSION: 2026.8.20.2 + MCPP_VERSION: 2026.9.3.1 XLINGS_VERSION: v2026.8.17.2 XLINGS_NON_INTERACTIVE: '1' steps: diff --git a/mcpp.toml b/mcpp.toml index 40ba6e9..cc81310 100644 --- a/mcpp.toml +++ b/mcpp.toml @@ -27,7 +27,7 @@ [package] namespace = "mcpplibs" name = "std-freestanding" -version = "0.5.1" +version = "0.5.2" description = "The freestanding subset of the C++ standard library as a module — import mcpplibs.std.freestanding" license = "Apache-2.0" @@ -134,5 +134,22 @@ std-freestanding-nolibc = "^0.2.0" # `build.mcpp` consults the toolchain payload first and reaches this package # only when the payload carries no `include/c++/v1`; on Linux and macOS the # fallback is never taken and the compile line is byte-for-byte what it was. +# +# ⚠️ BOTH SPELLINGS, AND THE PAIR IS THE MIGRATION. +# +# `[xlings.workspace]` is the one table since mcpp 2026.9.3.1; `deps` is the +# older spelling of the same statement. An engine that knows the table +# collapses the two, because they agree; one that predates it reads `deps` and +# behaves as today. Dropping the older line now would be a silent regression +# there — such an engine parses the table and provisions nothing from it, so +# `build.mcpp` would find no headers through `mcpp::xpkg_dir` on the one +# platform that needs the fallback. The line goes once no supported engine +# needs it. +# +# The version is unconstrained on both sides: this package needs the headers to +# exist and has nothing to say about which release of them. [xlings] deps = ["libcxx-headers"] + +[xlings.workspace] +libcxx-headers = "" From 3e92623ef6306dd585490c886b1c5c57a865801e Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Thu, 3 Sep 2026 12:54:50 +0800 Subject: [PATCH 2/2] the recommended spelling, and why this entry keeps a bare name mcpp 2026.9.3.2 settles that a namespaced package is written ":" = "". This entry has no namespace to write: the deps line it mirrors names libcxx-headers unqualified, and qualifying it here would change which index the name resolves through. CI pins 2026.9.3.2. --- .github/workflows/ci.yml | 6 +++--- mcpp.toml | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e4c4a75..0e56303 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-24.04 timeout-minutes: 40 env: - MCPP_VERSION: 2026.9.3.1 + MCPP_VERSION: 2026.9.3.2 XLINGS_VERSION: v2026.8.17.2 XLINGS_NON_INTERACTIVE: '1' steps: @@ -341,7 +341,7 @@ jobs: run: shell: bash env: - MCPP_VERSION: 2026.9.3.1 + MCPP_VERSION: 2026.9.3.2 XLINGS_VERSION: v2026.8.17.2 XLINGS_NON_INTERACTIVE: '1' steps: @@ -553,7 +553,7 @@ jobs: - { label: 'alloc-kal', spec: ', features = ["alloc-kal"]', expect: 'links and runs' } - { label: 'nolibc', spec: ', features = ["nolibc"]', expect: 'compiles with no C library' } env: - MCPP_VERSION: 2026.9.3.1 + MCPP_VERSION: 2026.9.3.2 XLINGS_VERSION: v2026.8.17.2 XLINGS_NON_INTERACTIVE: '1' steps: diff --git a/mcpp.toml b/mcpp.toml index cc81310..b4ee4bd 100644 --- a/mcpp.toml +++ b/mcpp.toml @@ -148,6 +148,12 @@ std-freestanding-nolibc = "^0.2.0" # # The version is unconstrained on both sides: this package needs the headers to # exist and has nothing to say about which release of them. +# +# The name stays bare. A namespaced package is written +# `":" = ""` since mcpp 2026.9.3.2, and this entry has +# no namespace to write: the `deps` line it mirrors names `libcxx-headers` +# unqualified, and qualifying it here would change which index the name +# resolves through. [xlings] deps = ["libcxx-headers"]