Repository navigation
Add a non-required macOS arm64 leg to the selfhost workflow - #1445
Merged
Merged
Conversation
silkc build accepts --target <triple>. A non-host target emits only LLVM IR, so the Linux N1 cross-emits the compiler for aarch64-apple-darwin and macOS needs no seed of its own. The macOS job links that IR as M1 with a pinned LLVM 22.1.8, checks that M1 emits byte-identical compiler IR, and runs the native corpus. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJak9tcQcwEZgNXjANPTiA
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJak9tcQcwEZgNXjANPTiA
The source snapshot script needs workspace dependencies; the checkout already is the exact committed tree. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJak9tcQcwEZgNXjANPTiA
Package module identities contain the package root's absolute path, so the Linux and macOS emissions only agree byte for byte from the same directory. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJak9tcQcwEZgNXjANPTiA
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJak9tcQcwEZgNXjANPTiA
A PR run no longer waits on macOS. workflow_dispatch runs the whole workflow on a branch, so a target or ABI change can request the macOS leg; the required aggregate accepts the skipped bootstrap shards there as it does on a PR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJak9tcQcwEZgNXjANPTiA
#1450 removed the checkout path from package identities, so the Linux and macOS emissions agree without staging sources at a fixed path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJak9tcQcwEZgNXjANPTiA
Collaborator
Author
|
"Selfhost native corpus" fails on this head (run 38184331627) with four pinned programs: This failure isn't caused by this PR. This PR touches only the workflow, the The aggregate check passed on that push despite the red corpus. That gate hole is fixed separately in #1460. Generated by Claude Code |
julia-script
marked this pull request as ready for review
October 11, 2026 23:58
julia-script
added a commit
that referenced
this pull request
Oct 18, 2026
Add a non-required macOS arm64 leg to the selfhost workflow
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Milestone (iii) needs macOS arm64 in CI. This adds it without a macOS seed asset or a seed schema change.
silkc buildaccepts--target <triple>. It feeds the build profile's existing target input, so every target fact comes from the triple and none from the host. A non-host target emits only LLVM IR (--emit llvm-ir). An executable build for a non-host target is an invalid build profile, since the driver links only for its host, and there is no host fallback. The TypeScript CLI already has--target.macos-ir(Linux, needsnative-n1): N1 cross-emits the compiler foraarch64-apple-darwinfrom the checkout.macos(macos-15, needsmacos-ir) works in three steps:SDKROOTfromxcrun. It passes the same clang arguments silkc's own link uses.clang(same IR). On a mismatch the first differing lines are printed.corpus-full).selfhostpushes and on manualworkflow_dispatchonly, not on PRs. A change to target or ABI code can dispatch the workflow on its branch. Both jobs are non-required: neither feedsFocused Linux Silkorpublish-seed.Focused Linux Silkaccepts skipped bootstrapcaseson any non-push event (!= push), so on a dispatch as on a PR. Without that, a dispatch would post a red required check on the PR's head. The step keeps Fail the required aggregate when any shard fails #1460's one-test-per-line shard checks.compiler/scripts/test-native-build.tscovers cross-target emission (it emits IR without invoking clang, and that IR differs from host IR). It also covers rejecting an executable for a non-host target, an unknown triple, and a repeated--target. It passes locally with this branch's N1.compiler/README.mddocuments the flag. PAPERCUTS gains two entries.None of the touched files is a guarded input, so this lands on
selfhostdirectly.Validation
Local bootstrap compile on head
94e4fb1(selfhost11525ab, including #1459, #1458 and #1461, merged in), as required for compiler-changing PRs:node packages/cli/dist/bin.js check --manifest-path compiler/silk.toml, using a CLI built from currentmain, reports1 succeeded, 0 failed(14m21s, 10.8 GB peak RSS). It checks the compiler rootsrc/main.silk, which carries the--targetchange. An earlier run onadf5fd3also passed.Dispatch run 38184329312 on head
23e2b36: no fixed path, each leg builds from its own checkout, which #1450 made possible.macos-irjob, Linux#1459 has since fixed those four on
selfhost.Earlier PR run 38176701398, before P6, with the then-temporary fixed path: the macOS leg was fully green, corpus pass=414 fail=0 unsupported=5. Timings:
macosjob 18m57s (LLVM cache restore 59s, link 64s, re-emit 3m57s, corpus 12m31s),macos-ir2m07s.Cost per run is about 21 runner-minutes (19 on macOS). It now applies only to
selfhostpushes and dispatches, so PR latency is unchanged.For #567 ("Current status")
🤖 Generated with Claude Code
https://claude.ai/code/session_01SJak9tcQcwEZgNXjANPTiA