Repository navigation
Stop counting instructions for the project builds - #9274
Conversation
A ticker wakes the build's scheduler every 5 ms of wall-clock time, so under cachegrind the builds' instructions depend on how fast the runner is: in #9267 the leaf-edit build grew by 348% and the no-op build by 54% although their allocations didn't change, failing the job. Their allocated words stay, and the job runs faster. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kbf3gGPsF3fHZn9rBxA7Hm Signed-off-by: Christoph Knittel <ck@cca.io>
ChangelogNo changelog entry. Semantic Diff2 commits · Full page Stop counting instructions for the project builds8eb8855 · cknitt + Claude · Nov 09, 2026, 09:29 UTC A ticker wakes the build's scheduler every 5 ms of wall-clock time, so under cachegrind the builds' instructions depend on how fast the runner is: in #9267 the leaf-edit build grew by 348% and the no-op build by 54% although their allocations didn't change, failing the job. Their allocated words stay, and the job runs faster. |
✅ Compiler benchmarksAllocated wordsIn total: 806,109,965 → 806,109,889 (±0.00%). None of the 261 benchmarks changed by 0.1% or more. InstructionsIn total: 10,226,962,100 → 10,226,962,100 (±0.00%). None of the 33 benchmarks changed by 0.1% or more. Output sizeIn total: 29,806,856 → 29,806,856 (±0.00%). None of the 13 benchmarks changed by 0.1% or more. Pull request 067d97f compared with base bcb7ec7 in this run. |
|
Developer playground preview: https://rescript-lang.github.io/rescript/dev-playground/?version=pr-9274 |
The DCO app left its check suite for the previous commit queued and never reported; a new commit makes it check the pull request again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kbf3gGPsF3fHZn9rBxA7Hm Signed-off-by: Christoph Knittel <ck@cca.io>
rescript
@rescript/belt
@rescript/darwin-arm64
@rescript/linux-arm64
@rescript/linux-x64
@rescript/runtime
@rescript/win32-x64
commit: |
The benchmarks job failed on #9267 (run) with
build/leaf-edit+348% andbuild/no-op+54% instructions, although their allocated words didn't change by 0.1%.The cause:
rescript buildruns with an interrupt poll, which starts a ticker thread (Process_child.with_completion_notifier) that wakes the scheduler every 5 ms of wall-clock time while work runs. Under cachegrind the build is 20–50× slower, so the number of wake-ups, and the instructions they execute, depend on how fast the runner is. #9272 had seen 9.5% on the shared-edit build already and kept the two small builds, which then happened to match.This stops counting instructions for the project builds; their allocated words, which agree within 0.0004% between runs, stay. The replayed single-file builds, stress inputs and parse/format benchmarks keep their instruction counts. The job also gets faster by the two cachegrind builds per side.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Kbf3gGPsF3fHZn9rBxA7Hm