Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite test-float-parse in Rust #127510

Merged
merged 4 commits into from
Jul 22, 2024
Merged

Conversation

tgross35
Copy link
Contributor

@tgross35 tgross35 commented Jul 9, 2024

Migrate from the currently broken Rust + Python test-float-parse to a Rust implementation. This newer version should be significantly faster (tests execute in parallel with threads, rather than series across multiple processes, which also eliminates the "...the worker processes are leaked and stick around forever" message), and should be significantly easier to extend to the new float types.

Since this is faster and hopefully more stable, we should be able to launch it with x and run the faster tests in CI.

(please don't merge before I can squash this)

@rustbot
Copy link
Collaborator

rustbot commented Jul 9, 2024

r? @Mark-Simulacrum

rustbot has assigned @Mark-Simulacrum.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) labels Jul 9, 2024
@tgross35
Copy link
Contributor Author

tgross35 commented Jul 9, 2024

I still have some tweaking to do to the actual tests (like, the README should be useful), but bootstrap could probably take a look at the changes there to make sure I'm at least on the right track.

r? bootstrap oh hey, rustbot selected the perfect reviewer

@rustbot
Copy link
Collaborator

rustbot commented Jul 9, 2024

Failed to set assignee to bootstrap~~: invalid assignee

Note: Only org members with at least the repository "read" role, users with write permissions, or people who have commented on the PR may be assigned.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@tgross35
Copy link
Contributor Author

tgross35 commented Jul 9, 2024

@rustbot label +rla-silenced

@rustbot rustbot added the rla-silenced Silences rust-log-analyzer postings to the PR it's added on. label Jul 9, 2024
src/bootstrap/src/core/build_steps/test.rs Outdated Show resolved Hide resolved
src/bootstrap/src/core/build_steps/test.rs Outdated Show resolved Hide resolved
src/etc/test-float-parse/Cargo.lock Outdated Show resolved Hide resolved
src/etc/test-float-parse/Cargo.toml Outdated Show resolved Hide resolved
src/etc/test-float-parse/Cargo.toml Outdated Show resolved Hide resolved
src/etc/test-float-parse/src/gen/exhaustive.rs Outdated Show resolved Hide resolved
@rustbot rustbot added the A-testsuite Area: The testsuite used to check the correctness of rustc label Jul 15, 2024
@rustbot
Copy link
Collaborator

rustbot commented Jul 15, 2024

These commits modify the Cargo.lock file. Unintentional changes to Cargo.lock can be introduced when switching branches and rebasing PRs.

If this was unintentional then you should revert the changes before this PR is merged.
Otherwise, you can ignore this comment.

The list of allowed third-party dependencies may have been modified! You must ensure that any new dependencies have compatible licenses before merging.

cc @davidtwco, @wesleywiser

@tgross35
Copy link
Contributor Author

cc @Alexhuszagh by the way, since you are the original author

@tgross35
Copy link
Contributor Author

Verified that everything passes locally including the exhaustive f32 and the same number of f64 tests via fuzzing. Took about 1:40 on my machine.

Test log
Launching test 'f64 subnormal edge cases'
Launching test 'f32 subnormal edge cases'
Launching test 'f64 regression check'
Launching test 'f32 regression check'
Launching test 'f32 subnormal'
Launching test 'f32 special values'
Launching test 'f64 special values'
Launching test 'f64 subnormal'
Launching test 'f64 repeating decimal'
Launching test 'f32 repeating decimal'
Launching test 'f32 few ones int'
Launching test 'f32 few ones float'
Launching test 'f64 large integer values'
Launching test 'f32 large integer values'
Launching test 'f32 fuzz'
Launching test 'f64 few ones float'
Launching test 'f64 few ones int'
Launching test 'f64 small integer values'
Launching test 'f32 small integer values'
Launching test 'f64 random digits'
Launching test 'f32 random digits'
Launching test 'f64 large positive exponents'
Launching test 'f32 large positive exponents'
Launching test 'f64 small exponents'
Launching test 'f32 small exponents'
Launching test 'f32 exhaustive'
Launching test 'f64 fuzz'
Testing 'f32 subnormal'
Testing 'f64 subnormal edge cases'
Testing 'f32 subnormal edge cases'
Testing 'f32 repeating decimal'
Testing 'f32 fuzz'
Testing 'f32 special values'
Testing 'f64 few ones int'
Testing 'f32 few ones float'
Testing 'f64 small integer values'
Testing 'f64 few ones float'
Testing 'f64 special values'
Testing 'f64 regression check'
Testing 'f32 small integer values'
Testing 'f32 few ones int'
Completed tests for generator 'f64 special values' in 1.039162768s. 48 tests run, 0 failures
Testing 'f64 subnormal'
Completed tests for generator 'f64 regression check' in 1.040988698s. 20 tests run, 0 failures
Testing 'f32 regression check'
Completed tests for generator 'f64 subnormal' in 1.856222ms. 53 tests run, 0 failures
Testing 'f64 repeating decimal'
Testing 'f64 large integer values'
Completed tests for generator 'f32 special values' in 1.044776685s. 48 tests run, 0 failures
Completed tests for generator 'f32 regression check' in 17.627785ms. 20 tests run, 0 failures
Testing 'f32 large integer values'
Completed tests for generator 'f64 repeating decimal' in 89.575676ms. 4111 tests run, 0 failures
Completed tests for generator 'f32 few ones int' in 93.100811ms. 32768 tests run, 0 failures
Completed tests for generator 'f64 large integer values' in 182.667554ms. 59508 tests run, 0 failures
Completed tests for generator 'f32 large integer values' in 189.25591ms. 59508 tests run, 0 failures
Completed tests for generator 'f32 few ones float' in 1.456325066s. 32768 tests run, 0 failures
Completed tests for generator 'f64 few ones int' in 1.968192569s. 262144 tests run, 0 failures
Completed tests for generator 'f32 repeating decimal' in 1.968261115s. 4111 tests run, 0 failures
Completed tests for generator 'f32 small integer values' in 1.968138745s. 1048577 tests run, 0 failures
Completed tests for generator 'f32 fuzz' in 1.968232631s. 65535 tests run, 0 failures
Completed tests for generator 'f32 subnormal' in 1.968749572s. 24 tests run, 0 failures
Completed tests for generator 'f64 small integer values' in 1.968238953s. 1048577 tests run, 0 failures
Completed tests for generator 'f64 few ones float' in 1.968828153s. 262144 tests run, 0 failures
Completed tests for generator 'f32 subnormal edge cases' in 1.96924251s. 6 tests run, 0 failures
Completed tests for generator 'f64 subnormal edge cases' in 1.969553404s. 6 tests run, 0 failures
Testing 'f64 random digits'
Testing 'f64 large positive exponents'
Testing 'f32 random digits'
Testing 'f32 large positive exponents'
Testing 'f64 small exponents'
Testing 'f32 exhaustive'
Testing 'f64 fuzz'
Testing 'f32 small exponents'
Completed tests for generator 'f64 large positive exponents' in 53.085943536s. 10200102 tests run, 0 failures
Completed tests for generator 'f32 random digits' in 174.757991967s. 5000000 tests run, 0 failures
Completed tests for generator 'f64 small exponents' in 174.757769233s. 12020601 tests run, 0 failures
Completed tests for generator 'f32 small exponents' in 5933.053475362s. 12020601 tests run, 0 failures
Completed tests for generator 'f32 exhaustive' in 5943.531147598s. 4294967296 tests run, 0 failures
Completed tests for generator 'f64 fuzz' in 5933.057495359s. 4294967295 tests run, 0 failures
Completed tests for generator 'f32 large positive exponents' in 5969.239144683s. 10200102 tests run, 0 failures
Completed tests for generator 'f64 random digits' in 5969.239387245s. 5000000 tests run, 0 failures
[2s  100%] f64 subnorm edge   (6/6, 0 f (finished successfully), 3.0446/s, 00:00:01)
[2s  100%] f32 subnorm edge   (6/6, 0 f (finished successfully), 3.0449/s, 00:00:01)
[1s  100%] f64 regression     (20/20, 0 f (finished successfully), 19.1852/s, 00:00:01)
[1s  100%] f32 regression     (20/20, 0 f (finished successfully), 18.8666/s, 00:00:01)
[2s  100%] f32 subnorm        (24/24, 0 f (finished successfully), 12.1823/s, 00:00:01)
[1s  100%] f32 special        (48/48, 0 f (finished successfully), 45.8826/s, 00:00:01)
[1s  100%] f64 special        (48/48, 0 f (finished successfully), 46.1025/s, 00:00:01)
[1s  100%] f64 subnorm        (53/53, 0 f (finished successfully), 50.84/s, 00:00:01)
[1s  100%] f64 dec rep        (4111/4111, 0 f (finished successfully), 3,631.8669/s, 00:00:01)
[2s  100%] f32 dec rep        (4111/4111, 0 f (finished successfully), 2,087.3156/s, 00:00:01)
[1s  100%] f32 few ones int   (32768/32768, 0 f (finished successfully), 28,440.836/s, 00:00:01)
[1s  100%] f32 few ones float (32768/32768, 0 f (finished successfully), 22,483.3228/s, 00:00:01)
[1s  100%] f64 int large      (59508/59508, 0 f (finished successfully), 48,415.6804/s, 00:00:01)
[1s  100%] f32 int large      (59508/59508, 0 f (finished successfully), 45,039.5479/s, 00:00:01)
[2s  100%] f32 fuzz           (65535/65535, 0 f (finished successfully), 33,273.6654/s, 00:00:01)
[2s  100%] f64 few ones float (262144/262144, 0 f (finished successfully), 133,074.8071/s, 00:00:01)
[2s  100%] f64 few ones int   (262144/262144, 0 f (finished successfully), 133,129.7914/s, 00:00:01)
[2s  100%] f64 int small      (1048577/1048577, 0 f (finished successfully), 532,356.0012/s, 00:00:01)
[2s  100%] f32 int small      (1048577/1048577, 0 f (finished successfully), 532,472.8051/s, 00:00:01)
[2h  100%] f64 rand digits    (5000000/5000000, 0 f (finished successfully), 837.3513/s, 01:39:31)
[3m  100%] f32 rand digits    (5000000/5000000, 0 f (finished successfully), 28,292.0909/s, 00:02:56)
[55s 100%] f64 large exp      (10200102/10200102, 0 f (finished successfully), 185,264.7717/s, 00:00:55)
[2h  100%] f32 large exp      (10200102/10200102, 0 f (finished successfully), 1,708.2138/s, 01:39:31)
[3m  100%] f64 small exp      (12020601/12020601, 0 f (finished successfully), 68,017.5365/s, 00:02:56)
[2h  100%] f32 small exp      (12020601/12020601, 0 f (finished successfully), 2,013.0934/s, 01:39:31)
[2h  100%] f32 exhaustive     (4294967295/4294967295, 0 f (finished successfully), 719,279.345/s, 01:39:31)
[2h  100%] f64 fuzz           (4294967295/4294967295, 0 f (finished successfully), 719,279.3319/s, 01:39:31)
Results:
    SUCCESS for generator 'f64 subnormal edge cases'. 6/6 passed in 1.969553404s
    SUCCESS for generator 'f32 subnormal edge cases'. 6/6 passed in 1.96924251s
    SUCCESS for generator 'f64 regression check'. 20/20 passed in 1.040988698s
    SUCCESS for generator 'f32 regression check'. 20/20 passed in 17.627785ms
    SUCCESS for generator 'f32 subnormal'. 24/24 passed in 1.968749572s
    SUCCESS for generator 'f32 special values'. 48/48 passed in 1.044776685s
    SUCCESS for generator 'f64 special values'. 48/48 passed in 1.039162768s
    SUCCESS for generator 'f64 subnormal'. 53/53 passed in 1.856222ms
    SUCCESS for generator 'f64 repeating decimal'. 4111/4111 passed in 89.575676ms
    SUCCESS for generator 'f32 repeating decimal'. 4111/4111 passed in 1.968261115s
    SUCCESS for generator 'f32 few ones int'. 32768/32768 passed in 93.100811ms
    SUCCESS for generator 'f32 few ones float'. 32768/32768 passed in 1.456325066s
    SUCCESS for generator 'f64 large integer values'. 59508/59508 passed in 182.667554ms
    SUCCESS for generator 'f32 large integer values'. 59508/59508 passed in 189.25591ms
    SUCCESS for generator 'f32 fuzz'. 65535/65535 passed in 1.968232631s
    SUCCESS for generator 'f64 few ones float'. 262144/262144 passed in 1.968828153s
    SUCCESS for generator 'f64 few ones int'. 262144/262144 passed in 1.968192569s
    SUCCESS for generator 'f64 small integer values'. 1048577/1048577 passed in 1.968238953s
    SUCCESS for generator 'f32 small integer values'. 1048577/1048577 passed in 1.968138745s
    SUCCESS for generator 'f64 random digits'. 5000000/5000000 passed in 5969.239387245s
    SUCCESS for generator 'f32 random digits'. 5000000/5000000 passed in 174.757991967s
    SUCCESS for generator 'f64 large positive exponents'. 10200102/10200102 passed in 53.085943536s
    SUCCESS for generator 'f32 large positive exponents'. 10200102/10200102 passed in 5969.239144683s
    SUCCESS for generator 'f64 small exponents'. 12020601/12020601 passed in 174.757769233s
    SUCCESS for generator 'f32 small exponents'. 12020601/12020601 passed in 5933.053475362s
    SUCCESS for generator 'f32 exhaustive'. 4294967296/4294967296 passed in 5943.531147598s
      warning: executed tests != estimated (4294967296 != 4294967295) for exhaustive
    SUCCESS for generator 'f64 fuzz'. 4294967295/4294967295 passed in 5933.057495359s
27/27 tests succeeded in 5971.209550825s (27 passed, 0 failed, 0 stopped)

@Mark-Simulacrum
Copy link
Member

r=me with ToolStd (presuming that works) so we're actually testing the in-tree std.

@tgross35
Copy link
Contributor Author

Setting to ToolStd says can't find crate for `core` and std, at least locally for me (waiting to see what CI says). Is there something specific needed to make this work?

I also needed to move the optimization config to workspace Cargo.toml to avoid a warning.

@Mark-Simulacrum
Copy link
Member

$ git diff
diff --git a/src/bootstrap/src/core/build_steps/test.rs b/src/bootstrap/src/core/build_steps/test.rs
index 96472587476..9692d502622 100644
--- a/src/bootstrap/src/core/build_steps/test.rs
+++ b/src/bootstrap/src/core/build_steps/test.rs
@@ -3494,6 +3494,8 @@ fn run(self, builder: &Builder<'_>) {
         let path = self.path.to_str().unwrap();
         let crate_name = self.path.components().last().unwrap().as_os_str().to_str().unwrap();

+        builder.ensure(compile::Std::new(compiler, bootstrap_host));
+
         // Run any unit tests in the crate
         let cargo_test = tool::prepare_tool_cargo(
             builder,

Fixes it for me... not sure exactly why that's not automatic but I think this should fix it.

The existing implementation uses Python to launch a set of Rust-written
binaries. Unfortunately, this is currently broken; it seems that some
updates meant it no longer compiles.

There is also a problem that support for more float types (`f16`,
`f128`) would be difficult to add since this is very specialized to
`f32` and `f64`.

Because of these sortcomings, migrate to a version written in Rust. This
version should be significantly faster; test generators can execute in
parallel, and test cases are chunked and parallelized. This should also
resolve the preexisting "... the worker processes are leaked and stick
around forever" comment.

This change also introduces genericism over float types and properties,
meaning it will be much easier to extend support to newly added types.

`num::BigRational` is used in place of Python's fractions for
infinite-precision calculations.
Since `test-float-parse` is now implemented in Rust, we can move it into
the global workspace and check dependency licenses.
With updates to `test-float-parse`, it is now possible to run as another
Rust tool. Enable check, clippy, and test.

Test runs the unit tests, as well as shorter parsing tests (takes
approximately 1 minute).
@tgross35
Copy link
Contributor Author

I just came to the same conclusion, thanks, great that it works now. I fixed this then rebased since I know there have been some bootstrap updates recently. I'll r=you after CI passes unless you have other concerns.

@tgross35
Copy link
Contributor Author

Thanks for reviewing all of this!

@bors r=Mark-Simulacrum

bors added a commit to rust-lang-ci/rust that referenced this pull request Jul 21, 2024
…mpiler-errors

Rollup of 7 pull requests

Successful merges:

 - rust-lang#126450 (Promote Mac Catalyst targets to Tier 2, and ship with rustup)
 - rust-lang#127177 (Distribute rustc_codegen_cranelift for arm64 macOS)
 - rust-lang#127510 (Rewrite `test-float-parse` in Rust)
 - rust-lang#127720 ([`macro_metavar_expr_concat`] Allow `concat` in repetitions)
 - rust-lang#127734 (Windows: move BSD socket shims to netc)
 - rust-lang#127839 (Fix git safe-directory path for docker images)
 - rust-lang#128005 (Remove _tls_used hack)

r? `@ghost`
`@rustbot` modify labels: rollup
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Jul 21, 2024
…r=Mark-Simulacrum

Rewrite `test-float-parse` in Rust

Migrate from the currently broken Rust + Python `test-float-parse` to a Rust implementation. This newer version should be significantly faster (tests execute in parallel with threads, rather than series across multiple processes, which also eliminates the "...the worker processes are leaked and stick around forever" message), and should be significantly easier to extend to the new float types.

Since this is faster and hopefully more stable, we should be able to launch it with `x` and run the faster tests in CI.
bors added a commit to rust-lang-ci/rust that referenced this pull request Jul 21, 2024
…iaskrgr

Rollup of 6 pull requests

Successful merges:

 - rust-lang#126450 (Promote Mac Catalyst targets to Tier 2, and ship with rustup)
 - rust-lang#127177 (Distribute rustc_codegen_cranelift for arm64 macOS)
 - rust-lang#127510 (Rewrite `test-float-parse` in Rust)
 - rust-lang#127977 (Update wasi-sdk in CI to latest release)
 - rust-lang#127985 (Migrate `test-benches`, `c-unwind-abi-catch-panic` and `compiler-lookup-paths-2` `run-make` tests to rmake)
 - rust-lang#128023 (rustdoc: short descriptions cause word-breaks in tables)

r? `@ghost`
`@rustbot` modify labels: rollup
@tgross35
Copy link
Contributor Author

@bors r-
Failed the rollup #128024 (comment)

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jul 21, 2024
With the previous improvements, it is now possible to run float parsing
tests as part of CI. Enable it here.

This only runs a subset of tests, which takes about one minute.
@tgross35
Copy link
Contributor Author

I made a typo in the path to test, etc/etc/test-float-parse rather than src/etc/test-float-parse. Just a trivial fix so

@bors r=Mark-Simulacrum

@bors
Copy link
Contributor

bors commented Jul 21, 2024

📌 Commit d123878 has been approved by Mark-Simulacrum

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jul 21, 2024
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Jul 21, 2024
…r=Mark-Simulacrum

Rewrite `test-float-parse` in Rust

Migrate from the currently broken Rust + Python `test-float-parse` to a Rust implementation. This newer version should be significantly faster (tests execute in parallel with threads, rather than series across multiple processes, which also eliminates the "...the worker processes are leaked and stick around forever" message), and should be significantly easier to extend to the new float types.

Since this is faster and hopefully more stable, we should be able to launch it with `x` and run the faster tests in CI.
bors added a commit to rust-lang-ci/rust that referenced this pull request Jul 21, 2024
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#127510 (Rewrite `test-float-parse` in Rust)
 - rust-lang#127583 (Deal with invalid UTF-8 from `gai_strerror`)
 - rust-lang#127977 (Update wasi-sdk in CI to latest release)
 - rust-lang#128014 (Fix stab display in doc blocks)
 - rust-lang#128020 (Just totally fully deny late-bound consts)
 - rust-lang#128023 (rustdoc: short descriptions cause word-breaks in tables)
 - rust-lang#128033 (Explain why we require `_` for empty patterns)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Jul 21, 2024
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#127510 (Rewrite `test-float-parse` in Rust)
 - rust-lang#127583 (Deal with invalid UTF-8 from `gai_strerror`)
 - rust-lang#127977 (Update wasi-sdk in CI to latest release)
 - rust-lang#128014 (Fix stab display in doc blocks)
 - rust-lang#128020 (Just totally fully deny late-bound consts)
 - rust-lang#128023 (rustdoc: short descriptions cause word-breaks in tables)
 - rust-lang#128033 (Explain why we require `_` for empty patterns)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Jul 22, 2024
Rollup of 8 pull requests

Successful merges:

 - rust-lang#127177 (Distribute rustc_codegen_cranelift for arm64 macOS)
 - rust-lang#127415 (Add missing try_new_uninit_slice_in and try_new_zeroed_slice_in)
 - rust-lang#127510 (Rewrite `test-float-parse` in Rust)
 - rust-lang#127977 (Update wasi-sdk in CI to latest release)
 - rust-lang#127985 (Migrate `test-benches`, `c-unwind-abi-catch-panic` and `compiler-lookup-paths-2` `run-make` tests to rmake)
 - rust-lang#127996 (Clean up warnings + `unsafe_op_in_unsafe_fn` when building std for armv6k-nintendo-3ds)
 - rust-lang#128035 (Add test for rust-lang#125837)
 - rust-lang#128054 (mw triagebot vacation)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 27550f4 into rust-lang:master Jul 22, 2024
6 checks passed
@rustbot rustbot added this to the 1.82.0 milestone Jul 22, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Jul 22, 2024
Rollup merge of rust-lang#127510 - tgross35:test-float-parse-update, r=Mark-Simulacrum

Rewrite `test-float-parse` in Rust

Migrate from the currently broken Rust + Python `test-float-parse` to a Rust implementation. This newer version should be significantly faster (tests execute in parallel with threads, rather than series across multiple processes, which also eliminates the "...the worker processes are leaked and stick around forever" message), and should be significantly easier to extend to the new float types.

Since this is faster and hopefully more stable, we should be able to launch it with `x` and run the faster tests in CI.
@tgross35 tgross35 deleted the test-float-parse-update branch July 22, 2024 16:22
Alexhuszagh added a commit to Alexhuszagh/rust-lexical that referenced this pull request Nov 2, 2024
This also does not require a Python install for the testing process and
is much faster.

Related to rust-lang/rust#127510

Closes #176
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Nov 14, 2024
…, r=jieyouxu

update outdated comment about test-float-parse

It's no longer a Python program since rust-lang#127510.
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Nov 14, 2024
Rollup merge of rust-lang#133008 - onur-ozkan:update-outdated-comment, r=jieyouxu

update outdated comment about test-float-parse

It's no longer a Python program since rust-lang#127510.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-testsuite Area: The testsuite used to check the correctness of rustc rla-silenced Silences rust-log-analyzer postings to the PR it's added on. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants