ci build improvements experiment: E1 lld + test-profile tweaks

Merged
BN
2mo ago
+34-6
  • 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-ci passes 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 lld and links with -fuse-ld=lld; [profile.test] debug=0 reduces test artifact size; [profile.dev.build-override] opt-level=3 speeds build scripts and proc macros.
  • Version probes normalize input (trim + strip leading v) and follow symlinks/PATH to verify the runtime actually executed, not a wrapper.
  • The CLI updater respects PRELOOP_SMOLVM_RELEASE_VERSION and 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_FORKS and PRELOOP_SMOLVM_RELEASE_REPOSITORY.
  • Use PRELOOP_SMOLVM_RELEASE_VERSION (leading v allowed) 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_VERSION setting.
    • If no version is specified, installations continue to use the latest stable release.
    • Version values now accept surrounding whitespace and an optional leading v.
  • Bug Fixes

    • Improved runtime capability detection for executables referenced by name or path.
    • Preserved accurate formatting for displayed plan step counts.