ci build improvements experiment: E1 lld + test-profile tweaks
Merged
BN
2mo ago+34+34+01234567890123456789-6-6-0123456789
- apt lld, RUSTFLAGS=-C link-arg=-fuse-ld=lld (job + test step)
- [profile.test] debug=0, [profile.dev.build-override] opt-level=3
Measured baseline (warm cache): cargo test 15.1 min = 1.1 compile + 13.4 exec. This run will be a cold rebuild (flag invalidation); a warm re-run follows for the steady-state number.
What & why
Protocol surface
- I confirm this change touches the runner protocol interface: YES / NO
Required gates
-
just test-cipasses locally (fmt-check + clippy-D+ full test suite + runner-watch conformance) - If protocol/wire shapes changed: the change is validated against the official runner (golden replay via
runner-watch, or a live capture showing the official bytes), not only unit tests - If the touched subsystem has property tests (
concurrency_properties, scheduling, matrix expansion, …): they are extended for the changed contract and pass (PROPTEST_CASES=256 cargo test -p preloop-runner-server) - New wire fields/events are additive and serde-defaulted where the official runner would not send them
- No secrets, credentials, or internal/deployment-specific paths are introduced (captures with live tokens must be redacted or excluded)
Verification performed
Checklist
- Tests added/updated for any new observable contract
- Docs updated (
docs/,CONTRIBUTING.md) where behavior changed - Changelog-worthy user-facing change described in the PR body
Summary by cubic
Speed up CI builds and gate concurrent VM forks on the effective SmolVM runtime. Before: an env toggle controlled concurrency; after: we resolve and canonicalize the binary, probe --version, and allow multiple live clones only on SmolVM ≥1.7.7 to avoid checkpoint corruption on older or unparseable versions.
- CI installs
lldand links with-fuse-ld=lld;[profile.test] debug=0reduces test artifact size;[profile.dev.build-override] opt-level=3speeds build scripts and proc macros. - Version probes normalize input (trim + strip leading
v) and follow symlinks/PATHto verify the runtime actually executed, not a wrapper. - The CLI updater respects
PRELOOP_SMOLVM_RELEASE_VERSIONand installs that exact release; Intel macOS remains unadvertised, so auto-install is disabled on x86_64 macOS. - Side effect: test panic backtraces lose line numbers.
Migration
- Remove
PRELOOP_SMOLVM_RETAINED_FORKSandPRELOOP_SMOLVM_RELEASE_REPOSITORY. - Use
PRELOOP_SMOLVM_RELEASE_VERSION(leadingvallowed) to pin a runtime; on Intel macOS, install SmolVM manually.
Summary by CodeRabbit
-
New Features
- Added support for installing a specific SmolVM release through the
PRELOOP_SMOLVM_RELEASE_VERSIONsetting. - If no version is specified, installations continue to use the latest stable release.
- Version values now accept surrounding whitespace and an optional leading
v.
- Added support for installing a specific SmolVM release through the
-
Bug Fixes
- Improved runtime capability detection for executables referenced by name or path.
- Preserved accurate formatting for displayed plan step counts.