Skip to content

canary: profile the cmuxTests emit-module job (do not merge) - #14352

Closed
teamleaderleo wants to merge 2 commits into
mainfrom
canary/cmuxtests-emit-module
Closed

teamleaderleo wants to merge 2 commits into
mainfrom
canary/cmuxtests-emit-module

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 25, 2026 •

Copy link
Copy Markdown
Collaborator

Canary, do not merge. Profiles the cmuxTests SwiftEmitModule job, which is 26 s of the 31 s a one-test-file rebuild costs once #14349 lands (canary #14249, run 36081880621).

After the admission compile, scripts/ci/canary-cmuxtests-emit-module.sh rebuilds cmux-unit in six series. Each series rebuilds cmuxTests with its own arguments, then makes two one-test-file body edits. Only cmuxTests' arguments change ($(X_$(TARGET_NAME))); every series records -stats-output-dir + -fine-grained-timers and long type-check warnings.

  • control: stats only, plus -debug-time-function-bodies
  • noobjc: SWIFT_OBJC_INTERFACE_HEADER_NAME = "" on cmuxTests (nothing imports cmuxTests-Swift.h)
  • noabi: -Xfrontend -empty-abi-descriptor
  • lean: both, plus -avoid-emit-module-source-info
  • lazy: lean plus -experimental-lazy-typecheck
  • legacy-merge: SWIFT_USE_INTEGRATED_DRIVER=NO + -no-emit-module-separately for cmuxTests

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Canary, do not merge: profiles cmuxTests' SwiftEmitModule job, which is 26 s of the ~31 s a one-test-file rebuild costs once #14349 lands.

Probe

  • canary-cmuxtests-emit-module.sh rebuilds cmuxTests in five series that each vary only its build flags, edits one test body, and rebuilds; every build appends per-task wall times and long type-check warnings to the job summary.
  • nomodule and nomodule-explicit drop the separate emit-module job via -no-emit-module-separately with the integrated driver off; legacy additionally drops the ObjC interface header; base and lazy keep it.
  • The probe measures without -stats-output-dir since fine-grained timers double emit-module time, and verifies a no-module build cannot drop tests by enumerating the built bundle.

CI

  • Pins the admission build job to a canary runner with a 240-minute timeout and uploads probe logs — both must be reverted before merging.

Written for commit bb3ea46. Summary will update on new commits.

Review in cubic

@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@coderabbitai

coderabbitai Bot commented Sep 25, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

teamleaderleo and others added 2 commits September 24, 2026 23:13
…merge)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…erge)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo force-pushed the canary/cmuxtests-emit-module branch from 17a46e8 to bb3ea46 Compare September 25, 2026 03:13
@blacksmith-sh

blacksmith-sh Bot commented Sep 25, 2026

Copy link
Copy Markdown

Found 1 test failure on Blacksmith runners:

Failure

Test View Logs
a macOS runner env value in ci-macos.yml does not match its job's runs-on,/
a macOS runner env value in ci-macos.yml does not match its job's runs-on,
View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

teamleaderleo added a commit that referenced this pull request Sep 25, 2026
Nothing imports cmuxTests.swiftmodule, but its separate emit-module job
type-checks every declaration and expands every @test macro: 26 s of a
31 s one-test-file rebuild, serial. The standalone driver with
-no-emit-module-separately emits no module, and an empty
SWIFT_OBJC_INTERFACE_HEADER_NAME removes the one output that needed it.
The same edit now takes cmuxTests 4.1 s (#14352, run 36089490735).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Canary done. Results and the shipped lever are in #14364 (runs 36087174643 and 36089490735 hold the logs).

teamleaderleo added a commit that referenced this pull request Sep 25, 2026
Nothing imports cmuxTests.swiftmodule, but its separate emit-module job
type-checks every declaration and expands every @test macro: 26 s of a
31 s one-test-file rebuild, serial. The standalone driver with
-no-emit-module-separately emits no module, and an empty
SWIFT_OBJC_INTERFACE_HEADER_NAME removes the one output that needed it.
The same edit now takes cmuxTests 4.1 s (#14352, run 36089490735).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Sep 25, 2026
Nothing imports cmuxTests.swiftmodule, but its separate emit-module job
type-checks every declaration and expands every @test macro: 26 s of a
31 s one-test-file rebuild, serial. The standalone driver with
-no-emit-module-separately emits no module, and an empty
SWIFT_OBJC_INTERFACE_HEADER_NAME removes the one output that needed it.
The same edit now takes cmuxTests 4.1 s (#14352, run 36089490735).

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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