Tracking issue for new compiletest executor
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.1k
- PR merge metrics
- PR metrics pending
Description
This is a tracking issue for migrating towards a new compiletest executor to replace the dependency on the
libtest executor.
This tracking issue is not meant for discussions or bug reports but is meant to track implementation progress, please open individual issues for bugs / discussions or zulip threads instead.
Summary
compiletest currently relies on the in-tree libtest (unstable programmatic API). This is problematic because:
- This can cause unnecessary compiler rebuilds following the stage 0 std redesign (this is mitigated by bootstrap
build.compiletest-use-stage0-libtest = truebut that's more-or-less a hack / mitigation).- This workaround can additional cause friction for contributors modifying programmatic libtest API due to stage 0 vs in-tree libtest differences.
- This is quite restrictive for
compiletestbecause we can't easily tailor libtest behavior for rustc/rustdoc/ certain library test suites without regressing all the other libtest consumers.
Instead, we can roll our own minimal executor that replaces the libtest executor, which would allow us to drop the dependency on libtest once we migrate over to the new executor.
Known limitations
- The current new executor implementation still depends on an unstable library feature, namely
#![feature(internal_output_capture)].
Known bugs
- Deadline-related bugs in new executor (https://github.com/rust-lang/rust/pull/139998#issuecomment-2815072192). Fixed by #140031.
Implementation history
- #139660
- Call-for-testing on zulip: https://rust-lang.zulipchat.com/#narrow/channel/122651-general/topic/Call.20for.20testing.3A.20New.20test.20executor.20for.20compiletest/with/512452105
- #140031
- #139998
- To be more safe (for post-merge test metrics double-checks), revert new executor to reland with a synthetic
compiler/tree change to inhibitdownload-rustchttps://github.com/rust-lang/rust/pull/140233 - Reland: https://github.com/rust-lang/rust/pull/140288
- Retire libtest executor: https://github.com/rust-lang/rust/pull/140392
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the implementation history, especially #139660, #140031, #140288, and #140392, to determine the migration's current state. This tracking issue is not intended to define an individual change; a suitable task should come from a linked implementation issue or pull request, with completion measured by replacing the libtest executor and retiring its dependency.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers, testing-qa
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 15/100