Skip to content

2026.11.10.2: FreeBSD's musl identity; cfg barewords from the rows; #918; MSVC's C library is ucrt; the test fast path names the host - #920

Merged
Sunrisepeak merged 13 commits into
mainfrom
fix/2026.11.10.2
Nov 10, 2026
Merged

Sunrisepeak merged 13 commits into
mainfrom
fix/2026.11.10.2

Conversation

@Sunrisepeak

@Sunrisepeak Sunrisepeak commented Nov 10, 2026 •

Copy link
Copy Markdown
Member

Patch release 2026.11.10.2.

FreeBSD's musl identity (design 2026-11-10 K9). x86_64-freebsd-musl and aarch64-freebsd-musl are preview rows of the openkal provider, served by openkal-platform 0.26.0's hosted part: openkal-musl 0.29.2 over openkal-freebsd 0.1.0 standalone, with openkal-llvm-runtime 0.20.1, linked as one static program. A request of <arch>-freebsd with no platform chosen for it takes that identity. A platform chosen for the request keeps the system's row whichever selector chose it ([target.x86_64-freebsd], [target.freebsd], cfg(os = "freebsd")): a platform package no built-in provider names keeps other packages' providers out of the selection. The openkal targets' platform is openkal-platform 0.26.0.

cfg barewords from the rows (E15). unix is the family word; any other word without a dash is os = "<word>", so [target.freebsd], cfg(freebsd) and the system of a row a platform defines select as linux does. A row states its family (family = "unix" | "windows"); FreeBSD's rows are unix. The diagnostic's vocabulary is the rows' systems. No system name is added to the engine.

#918. A table is one dependency specification only when its path/version/git is a string or its workspace a boolean; gpp.version = { path = "…" } declares the package gpp.version.

MSVC's C library is ucrt (I1 correction). The MSVC payload answers c-abi = ucrt, as the MinGW-w64 payload does, so requires = ["mcpp:c-abi=ucrt"] holds on the MSVC route (mcpp-index#748). SPEC-002 v1.7.

Tests: unit CfgBarewords, TargetSelectPlatform, Manifest/APackageNamedLikeASpecField, TargetSideResolve; e2e 1073 (FreeBSD musl identity), 1074 (#918), 1059 (a chosen platform keeps the system's row), 1025; the target-rows snapshot; the matrix cells of the FreeBSD musl rows and of the platform version group.

Refs #918, #913, mcpp-index#748.

The triple's env segment names the toolset on Windows, gnu and msvc alike; the
C library of both is the Universal CRT. payload_libc_name answered `msvc` for
an MSVC row, so `requires = ["mcpp:c-abi=ucrt"]` (compat.glfw's Win32 backend)
refused the MSVC route while the GNU routes satisfied it. The request `msvc` is
satisfied by `ucrt`. SPEC-002 v1.7 states the names; docs/22 (en, zh).
- The rows x86_64-freebsd-musl and aarch64-freebsd-musl are preview rows of the
  openkal provider (openkal-platform 0.26.0's hosted part: openkal-musl 0.29.2
  over openkal-freebsd 0.1.0 standalone). A request of <arch>-freebsd with no
  platform selected for it takes that identity; a selected platform keeps the
  system ABI (e2e 1059). e2e 1073.
- The openkal targets' platform is openkal-platform 0.26.0 (e2e 1025, the
  target-rows snapshot).
- docs 21, 35, 50 (en, zh), SPEC targets-and-providers and platforms; CHANGELOG.
- A bareword other than `unix` is `os = "<word>"` for any word without a
  dash, so `[target.freebsd]`, `cfg(freebsd)` and the system of a row a
  platform defines select as `linux` does. The vocabulary the diagnostic
  names is the rows' systems; a word naming none is reported as before.
- A row states its family (`family`, `unix` or `windows`); FreeBSD's rows
  are of the `unix` family, so `cfg(unix)` holds on them.
- docs/22, docs/35; unit tests CfgBarewords; the target-rows snapshot.
)

A table is one dependency specification when its `path`, `version` or `git`
is a string or its `workspace` a boolean. `gpp.version = { path = "…" }`
declares the package `gpp.version`; it was taken as the specification of
`gpp` and refused for naming no source. Unit test
Manifest/APackageNamedLikeASpecField; e2e 1074.
…e it

A platform package chosen for a request that no built-in provider names
keeps the providers of other platform packages out of the selection, so
`<arch>-freebsd` keeps the system's row when `cfg(os = "freebsd")` or
`[target.freebsd]` chose its platform, as an exact-row section did; with no
platform chosen the musl identity is taken (e2e 1059, unit tests
TargetSelectPlatform). The capability-pin set includes the FreeBSD musl rows.
The FreeBSD musl rows build with llvm in the payload mode on every host,
gcc and msvc are capability-pin, and the graph mode is
platform-version-group; the openkal column is openkal-llvm-runtime 0.20.1.
The linux-x86_64 cells are a scan.sh measurement.
The refusal listed only the platform's targets, and was empty for a
platform that states [[platform.provider]]. e2e 1059 asserts the refusal of
x86_64-freebsd-musl by a platform chosen with cfg(os = "freebsd").
@Sunrisepeak Sunrisepeak reopened this Nov 10, 2026
@Sunrisepeak Sunrisepeak changed the title 2026.11.10.2: FreeBSD's musl identity; cfg barewords from the rows; #918; MSVC's C library is ucrt 2026.11.10.2: FreeBSD's musl identity; cfg barewords from the rows; #918; MSVC's C library is ucrt; the test fast path names the host Nov 10, 2026
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