rust-lang / rust-lang/rust

Tracking issue for new compiletest executor

Open
#140,192 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-compiletest A-test-infra C-tracking-issue T-bootstrap T-compiler
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:

  1. This can cause unnecessary compiler rebuilds following the stage 0 std redesign (this is mitigated by bootstrap build.compiletest-use-stage0-libtest = true but 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.
  2. This is quite restrictive for compiletest because 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
Implementation history

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.