Skip to content

fix(ci): Build the arm mac release for its own target and let the other builds finish - #423

Open
aywrite wants to merge 1 commit into
masterfrom
claude/arche-analysis-planning-mh1qzv
Open

aywrite wants to merge 1 commit into
masterfrom
claude/arche-analysis-planning-mh1qzv

Conversation

@aywrite

@aywrite aywrite commented Nov 14, 2026

Copy link
Copy Markdown
Owner

v0.4.10 was published with Linux assets only. Two things in the release workflow's asset matrix caused it.

The mac build crashed the compiler. Every build without a variant was given -C target-cpu=x86-64, the arm mac included. There the compiler ignores the processor and warns that neon has to be enabled, and for v0.4.10 rustc then died with SIGSEGV in the link time optimisation of the binary (release run 43580576864, on the first attempt and again when the failed jobs were re-run). The pull request build on the same runner sets no flags and passes. The mac build now names apple-m1, that target's default processor. The x86-64 builds are unchanged.

One failure cancelled the rest. The matrix ran fail-fast, so the mac's failure cancelled the three Windows builds and two of the Linux ones within seconds, both times. The builds are independent, so fail-fast is now off.

Not verified. The release workflow only runs against a tag, so the mac build is proved by the first release cut after this merges. This does not repair v0.4.10 itself: a re-run of that release uses the workflow file at its tag.


Generated by Claude Code

…er builds finish

The release's asset matrix gave every build without a variant
-C target-cpu=x86-64, the arm mac included. There the compiler ignores
the processor ('x86-64' is not a recognized processor for this target)
and warns that neon has to be enabled. For v0.4.10 rustc then crashed
with SIGSEGV in the link time optimisation of the binary, in the first
run and again when its failed jobs were run a second time. The pull
request build on the same runner, which sets no flags, passes.

The mac build now names apple-m1, which is that target's default
processor. The x86-64 builds are unchanged.

The matrix also ran fail-fast, so the mac's failure cancelled the three
Windows builds and two of the Linux ones within seconds, both times, and
v0.4.10 was published with Linux assets only. The builds are independent
and now run to their own end.

Not run: the release workflow only runs against a tag, so the first
release cut after this is what proves the mac build.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYmME6yiwe8qbHTU6UgM2z
@github-actions

Copy link
Copy Markdown
Contributor

Speed against 0d5ab1be

Measured on AMD EPYC 7763 64-Core Processor.
Both sides built with rustc 1.99.1 (58cf8f9c3 2026-10-13).

Both sides built and run on this runner in this job, the way
scripts/speed.sh measures a perf commit. Each round runs
both sides on a layout of its own, the same compiled code with
its code and data shuffled and moved, so the 95% interval carries
where the code landed as well as the run. The verdict holds the
interval against a 1% threshold. The default layout, the one a
release ships, is measured after as a diagnostic. The node
counts are the search's: they move when the search does, and a
speed change leaves them alone.

round     base nps  candidate nps  change
    1      4547477        4553605   +0.1%
    2      4377239        4501337   +2.8%
    3      4495462        4514318   +0.4%
    4      4485568        4606068   +2.7%
    5      4553128        4526569   -0.6%
    6      4512367        4579936   +1.5%
    7      4551219        4511571   -0.9%
    8      4572518        4604797   +0.7%
    9      4521088        4437029   -1.9%
   10      4447325        4463239   +0.4%
   11      4610529        4532219   -1.7%
   12      4538923        4449501   -2.0%
   13      4550603        4592958   +0.9%
   14      4465218        4531899   +1.5%
   15      4582460        4511119   -1.6%
   16      4435256        4495718   +1.4%
   17      4329182        4372888   +1.0%
   18      4562093        4512439   -1.1%
   19      4469009        4542656   +1.6%
   20      4509924        4584409   +1.7%
   21      4524136        4478319   -1.0%
   22      4485188        4501298   +0.4%
   23      4266454        4292230   +0.6%
   24      4511069        4217338   -6.5%
   25      4432267        4589841   +3.6%
   26      4548807        4520449   -0.6%
   27      4496284        4515018   +0.4%
   28      4473201        4508821   +0.8%
   29      4517228        4581220   +1.4%
   30      4596402        4442639   -3.3%
   31      4423950        4560544   +3.1%
   32      4567938        4438281   -2.8%
   33      4605571        4494737   -2.4%
   34      4581775        4545869   -0.8%
   35      4555935        4517152   -0.9%
   36      4465940        4444863   -0.5%
   37      4546600        4578000   +0.7%
   38      4559107        4549703   -0.2%
   39      4526602        4445724   -1.8%
   40      4486623        4519436   +0.7%

             nodes    time  median nps  faster half
base       9312660  2.06 s     4519158      4560146
candidate  9312660  2.06 s     4514668      4556617
change                           -0.1%        -0.1%

paired change -0.0%, 95% interval -0.6% to +0.6%
diagnostic, on the default layout alone -0.5%, 95% interval -1.6% to +0.6%, 13 rounds

no change beyond ±1.0%: the whole interval is inside it

Speed: -0.0% (bench nps, 95% interval -0.6% to +0.6%, 40 interleaved rounds over shuffled layouts vs 0d5ab1be)

The instructions each side's bench executed, counted under
cachegrind. The count repeats to within a few hundred
instructions, so a small change here is a real one, but it
prices instructions only: cache misses, mispredicted branches
and where the code lands are the speed's to show.

instructions against 0d5ab1be, one cachegrind run a side, bench

             instructions    nodes  per node
base       13,159,580,875  9312660    1413.1
candidate  13,159,580,874  9312660    1413.1
change             -0.00%             -0.00%

within ±0.7%, as far as edits not made for speed have moved the count

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.

2 participants