From 7ae619d72a1c7a2288aabf8dd3167b722f23a815 Mon Sep 17 00:00:00 2001 From: sepehr-safari Date: Fri, 25 Sep 2026 12:22:59 +0300 Subject: [PATCH] ci: check the optimized macOS link without timing it The ReleaseFast test step on the macOS runner ran the frame-time budgets on a shared VM roughly twice as slow as the machines they are set for: 17.9 ms against 16 there, 8 ms on an M2 Pro. It failed on timing with no code change. What the step was added for is the link (#389), and building the model-contract tool in ReleaseFast checks exactly that, since it carries the same toolkit host as the test binary, without running any tests. Removing the link fix makes it fail with the two undefined symbols; with the fix it passes. The Linux job keeps running the optimized suite. --- .github/workflows/ci.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b020896..b2ef5d6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -57,11 +57,17 @@ jobs: - name: Test run: native test - # The mode the app ships in, on the platform it ships on. The Linux job - # already runs the suite optimized; this one did not, so an optimized test - # build that could not even link on macOS went unnoticed. - - name: Test (ReleaseFast, the mode that ships) - run: zig build test -Doptimize=ReleaseFast + # An optimized macOS build of something other than the app has to link: + # one that could not (#389) went unnoticed because nothing built one. The + # model-contract tool carries the same toolkit host as the test binary, + # so it fails the same way, and building it runs no tests. + # + # Not the whole suite in ReleaseFast. That includes absolute frame-time + # budgets, and this runner is a shared VM roughly twice as slow as the + # machines they are set for, so it failed on timing, not on code. The + # Linux job runs the optimized suite, as it always has. + - name: An optimized build links + run: zig build model-contract -Doptimize=ReleaseFast # The keyholder is a separate binary with its own step, so `native test` # and `zig build test` both walk straight past it. Its 21 tests had never