You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(toolchain): the three iOS tiers move, each on its own reading
MEASURED ON macos-15 (Xcode 16.4, iPhoneOS and iPhoneSimulator 18.5,
`ios_deployment_target = "18.0"`), through mcpp built from this branch:
aarch64-ios-sim verified arm64 platform 7 (IOSSIMULATOR) minos 18.0
mcpp run --target aarch64-ios-sim -> 1-2-3
aarch64-ios preview arm64 platform 2 (IOS) minos 18.0
x86_64-ios-sim preview x86_64 platform 7 (IOSSIMULATOR) minos 18.0
The simulator row ran through the SUPPORTED PATH -- the `runner` a manifest
declares and the program `xim:apple-simulator-tools` provides -- and not only
under a hand-written `simctl spawn`. This repository has a standing note that
publishing and verifying an asset is not the same as being able to use it
through a supported path, and the difference here was a defect: the program was
at the payload root and mcpp searched only `<payload>/bin`.
NEITHER `preview` IS WORK NOT YET DONE. `aarch64-ios` cannot be run off a
device without a signature the developer owns, which is not something a build
tool or a package can supply; `x86_64-ios-sim` cannot be run on an
Apple-silicon host, because a simulator runs the HOST's architecture. Both are
tiers bounded by a fact rather than by a gap, and the rows say so.
`platform 2` AGAINST `platform 7` IS THE PAIR WORTH HAVING A READING FOR. A
successful build cannot tell them apart, and an artefact reporting
IOSSIMULATOR from the device row is one no later step refuses.
A NEW REFUSAL CODE, BECAUSE THE MATRIX COMPARES REASONS AND NOT ONLY OUTCOMES.
`apple-sdk-absent` is distinct from `host-cannot-serve`, which says no payload
here produces the target and waits for the graph in case a package supplies the
system -- an Apple SDK is not redistributable, so no package can and nothing a
later step learns changes the answer. It is distinct from `tier-planned`, which
says the row is not wired: these rows are. Without a code the refusal would be
recorded as `other`, which `check_matrix_reasons.sh` refuses on the ground that
it freezes an unnamed branch into the expected table.
THE TIER MOVE REACHES SIX PLACES AND A SEVENTH THAT WOULD HAVE STAYED GREEN.
The engine's table, both READMEs (where one combined row became three, because
the three tiers now differ), both copies of docs/21 -- including the per-host
columns, which said `planned` everywhere and now say `SDK` on macos-arm64 and
`—` elsewhere -- the test's one-line pairs, and `examples/13`'s matrix. The
seventh is e2e 641, whose simulator case asserted `tier-planned`: it would have
gone green on an expectation the table had left behind, which is the shape
`check_target_tiers.py` was written for one axis over.
Copy file name to clipboardExpand all lines: README.md
+11-1Lines changed: 11 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -422,7 +422,9 @@ list` reports for this machine):
422
422
|`wasm32-emscripten`|`emsdk@6.0.9` — Emscripten ships its own sysroot and its own libc++ module surface; `mcpp run` executes the module with `node`| verified |
423
423
|`x86_64-linux-android`|`android-ndk@30.0.16248370` — bionic from the NDK, one payload for both ABIs; ran on an API 24 x86_64 emulator image | verified |
424
424
|`aarch64-linux-android`| the same payload and the same build; ran under qemu-user over the system image's own bionic, which the platform emulator cannot do from an x86_64 host | verified |
425
-
|`aarch64-ios` · `aarch64-ios-sim` · `x86_64-ios-sim`| the iPhoneOS and iPhoneSimulator SDKs ship inside Xcode and are not redistributable, so the blocker is a licence rather than a payload | planned |
425
+
|`aarch64-ios-sim`| llvm 22 plus the machine's iPhoneSimulator SDK, which mcpp locates rather than installs; ran on a simulator through `simctl-run` ³ | verified |
426
+
|`aarch64-ios`| the same split for the device; the artefact names the iOS platform, and running it off a device needs a signature the developer owns ³ | preview |
427
+
|`x86_64-ios-sim`| the same build; nothing ran it, because a simulator runs the host's architecture and the machine measured was Apple silicon ³ | preview |
426
428
427
429
`verified` an image has been built **and run** for the row, qemu and wine
428
430
included · `preview` it builds and links, and no emulator run has been recorded
@@ -449,6 +451,14 @@ such a target is refused rather than attempted.
449
451
> payload produces these targets. The C library, startup code, memory layout
450
452
> and emulator travel with a board-support package rather than with mcpp — see
451
453
> [40 — Bare-Metal and Freestanding Targets](docs/40-baremetal.md).
454
+
>
455
+
> ³ The three iOS rows need a macOS host, and the compiler is still the
456
+
> ecosystem's: `xim:llvm` emits arm64 Mach-O for an iOS deployment target. What
457
+
> the machine supplies is the SDK, which ships inside Xcode and is not
458
+
> redistributable, so mcpp locates it through `xcrun` exactly as it has always
459
+
> located the macOS SDK — and refuses, naming the SDK, when it cannot. The
460
+
> simulator session belongs to `xim:apple-simulator-tools`. See
0 commit comments