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

Rollup of 22 pull requests #91756

Closed
wants to merge 51 commits into from

Conversation

matthiaskrgr
Copy link
Member

Successful merges:

Failed merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

jhpratt and others added 30 commits November 14, 2021 00:53
As discovered in rust-lang#85461, the MSVC linker treats weak symbols slightly
differently than unix-y linkers do. This causes link.exe to fail with
LNK1227 "conflicting weak extern definition" where as other targets are
able to link successfully.

This changes the dead functions from being generated as weak/hidden to
private/default which, as the LLVM reference says:

> Global values with “private” linkage are only directly accessible by
objects in the current module. In particular, linking code into a module
with a private global value may cause the private to be renamed as
necessary to avoid collisions. Because the symbol is private to the
module, all references can be updated. This doesn’t show up in any
symbol table in the object file.

This fixes the conflicting weak symbols but doesn't address the reason
*why* we have conflicting symbols for these dead functions. The test
cases added in this commit contain a minimal repro of the fundamental
issue which is that the logic used to decide what dead code functions
should be codegen'd in the current CGU doesn't take into account that
functions can be duplicated across multiple CGUs (for instance, in the
case of `#[inline(always)]` functions).

Fixing that is likely to be a more complex change (see
rust-lang#85461 (comment)).

Fixes rust-lang#85461
Also:

- Review and edit current docs
- Enforce documentation for crate

Co-authored-by: r00ster <[email protected]>
Co-authored-by: Camille Gillot <[email protected]>
It's a) superfluous and b) doesn't work any more.
The documentation previously said the new capacity cannot overflow `usize`, but in fact it cannot exceed `isize::MAX`.
Previously, passing `-v` would emit an overwhelming amount of logging:

```
> Std { stage: 1, target: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }
  > Assemble { target_compiler: Compiler { stage: 1, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } } }
    > Assemble { target_compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } } }
    < Assemble { target_compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } } }
    > Rustc { target: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None }, compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } } }
      > Std { target: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None }, compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } } }
        > StartupObjects { compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }, target: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }
        < StartupObjects { compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }, target: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }
        c Assemble { target_compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } } }
        > Libdir { compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }, target: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }
          > Sysroot { compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } } }
          < Sysroot { compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } } }
        < Libdir { compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }, target: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }
        c Libdir { compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }, target: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }
        c Sysroot { compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } } }
        c Assemble { target_compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } } }
        > StdLink { compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }, target_compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }, target: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }
          c Libdir { compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }, target: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }
          c Libdir { compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }, target: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }
        < StdLink { compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }, target_compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }, target: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } }
      < Std { target: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None }, compiler: Compiler { stage: 0, host: TargetSelection { triple: "x86_64-unknown-linux-gnu", file: None } } }
... continues for another 150 lines ...
```

This info is occasionally useful when debugging bootstrap itself, but not very useful for figuring
out why a config option was ignored or command wasn't run.  Demote it to `-vv` logging so that `-v`
is more useful.
This already enables `download-rustc`, so it's quick to build rustdoc,
and this makes it less confusing when changes to rustdoc aren't reflected in the docs.

Note that this uses 2 and not 1 because `download-rustc` only affects stage 2 runs.
In Rust, nesting method calls with both require `&mut` access to `self`
produces a borrow-check error:

    error[E0499]: cannot borrow `*self` as mutable more than once at a time
     --> src/lib.rs:7:14
      |
    7 |     self.foo(self.bar());
      |     ---------^^^^^^^^^^-
      |     |    |   |
      |     |    |   second mutable borrow occurs here
      |     |    first borrow later used by call
      |     first mutable borrow occurs here

That's because Rust has a left-to-right evaluation order, and the method
receiver is passed first. Thus, the argument to the method cannot then
mutate `self`.

There's an easy solution to this error: just extract a local variable
for the inner argument:

    let tmp = self.bar();
    self.foo(tmp);

However, the error doesn't give any suggestion of how to solve the
problem. As a result, new users may assume that it's impossible to
express their code correctly and get stuck.

This commit adds a (non-structured) suggestion to extract a local
variable for the inner argument to solve the error. The suggestion uses
heuristics that eliminate most false positives, though there are a few
false negatives (cases where the suggestion should be emitted but is
not). Those other cases can be implemented in a future change.
Suggest using a temporary variable to fix borrowck errors

Fixes rust-lang#77834.

In Rust, nesting method calls with both require `&mut` access to `self`
produces a borrow-check error:

    error[E0499]: cannot borrow `*self` as mutable more than once at a time
     --> src/lib.rs:7:14
      |
    7 |     self.foo(self.bar());
      |     ---------^^^^^^^^^^-
      |     |    |   |
      |     |    |   second mutable borrow occurs here
      |     |    first borrow later used by call
      |     first mutable borrow occurs here

That's because Rust has a left-to-right evaluation order, and the method
receiver is passed first. Thus, the argument to the method cannot then
mutate `self`.

There's an easy solution to this error: just extract a local variable
for the inner argument:

    let tmp = self.bar();
    self.foo(tmp);

However, the error doesn't give any suggestion of how to solve the
problem. As a result, new users may assume that it's impossible to
express their code correctly and get stuck.

This commit adds a (non-structured) suggestion to extract a local
variable for the inner argument to solve the error. The suggestion uses
heuristics that eliminate most false positives, though there are a few
false negatives (cases where the suggestion should be emitted but is
not). Those other cases can be implemented in a future change.
…al, r=jackh726

Add tests fixed by rust-lang#90023

The following issues were fixed by rust-lang#90023

Fixes rust-lang#79674
Fixes rust-lang#83765
Fixes rust-lang#86033
Fixes rust-lang#90318
Fixes rust-lang#88468

The following issues were duplicates of rust-lang#90654

Fixes rust-lang#86850
Fixes rust-lang#89022

r? ```@jackh726```
…lacrum

Move core/stream/stream/mod.rs to core/stream/stream.rs

Removes an unnecessary nested module.
Fix `Vec::reserve_exact` documentation

The documentation previously said the new capacity cannot overflow `usize`, but in fact it cannot exceed `isize::MAX`.
…crum

Delete Utf8Lossy::from_str

This whole type is marked as being for str internals only, but this constructor is never used by str internals. If you had a &amp;str already and wanted to lossy display it or iterate its lossy utf8 chunks, you would simply not use Utf8Lossy because the whole &amp;str is known to be one contiguous valid utf8 chunk.

If code really does need to obtain a value of type &amp;Utf8Lossy somewhere, and has only a &amp;str, `Utf8Lossy::from_bytes(s.as_bytes())` remains available. As currently implemented, there is no performance penalty relative to `from_str` i.e. the Utf8Lossy does not "remember" that it was constructed using `from_str` to bypass later utf8 decoding.
…riplett

Add unstable book entries for parts of asm that are not being stabilized

These are extracted from the existing `asm` documentation in the unstable book that will be removed when `asm` is stabilized.

r? ``@joshtriplett``
…-examples, r=jyn514

Replace iterator-based set construction by *Set::From<[T; N]>

This uses the array-based construction for `BtreeSet`s and `HashSet`s instead of first creating an iterator. I could also replace the `let mut a = Set::new(); a.insert(...);` fragments if desired.
…crum

Improve x.py logging and defaults a bit more

r? ``@Mark-Simulacrum``
…t_new-since, r=dtolnay

Fix since attribute for const_linked_list_new feature

rust-lang#63684
was merged for 1.39 not 1.32
@rustbot rustbot added the rollup A PR which is a rollup label Dec 10, 2021
@matthiaskrgr
Copy link
Member Author

@bors r+ rollup=never p=22

@bors
Copy link
Contributor

bors commented Dec 10, 2021

📌 Commit 8d5ce4a has been approved by matthiaskrgr

@bors bors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Dec 10, 2021
@bors
Copy link
Contributor

bors commented Dec 10, 2021

⌛ Testing commit 8d5ce4a with merge 0aa174aae67216b9a09188dab9a8526bfc0672e1...

@ehuss
Copy link
Contributor

ehuss commented Dec 10, 2021

@matthiaskrgr This looks to subsume #91726, do you want to close that one?

@jackh726
Copy link
Member

jackh726 commented Dec 10, 2021

This likely is more PRs than we should include in a rollup. I think around 10 is more reasonable. The more you include, the harder it is to identify regressions or perf regressions.

@rust-log-analyzer
Copy link
Collaborator

The job x86_64-gnu-nopt failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
test [ui] ui/borrowck/regions-escape-bound-fn-2.rs ... ok
test [ui] ui/borrowck/mut-borrow-in-loop-2.rs ... ok
test [ui] ui/borrowck/return-local-binding-from-desugaring.rs ... ok
test [ui] ui/borrowck/kindck-implicit-close-over-mut-var.rs ... ok
test [ui] ui/borrowck/suggest-local-var-imm-and-mut.rs ... ok
test [ui] ui/borrowck/suggest-local-var-double-mut.rs ... ok
test [ui] ui/borrowck/two-phase-across-loop.rs ... ok
test [ui] ui/borrowck/lazy-init.rs ... ok
test [ui] ui/borrowck/regions-escape-unboxed-closure.rs ... ok
---
test [ui (nll)] ui/borrowck/two-phase-reservation-sharing-interference-2.rs#nll2018 ... ignored
test [ui (nll)] ui/borrowck/regions-escape-bound-fn.rs ... ok
test [ui (nll)] ui/borrowck/two-phase-across-loop.rs ... ok
test [ui (nll)] ui/borrowck/two-phase-activation-sharing-interference.rs#nll_target ... ok
test [ui (nll)] ui/borrowck/suggest-local-var-imm-and-mut.rs ... FAILED
test [ui (nll)] ui/borrowck/two-phase-multi-mut.rs ... ok
test [ui (nll)] ui/borrowck/two-phase-allow-access-during-reservation.rs#nll_target ... ok
test [ui (nll)] ui/borrowck/two-phase-cannot-nest-mut-self-calls.rs ... ok
test [ui (nll)] ui/borrowck/kindck-implicit-close-over-mut-var.rs ... ok
---
test [ui (nll)] ui/threads-sendsync/mpsc_stress.rs ... ok

failures:

---- [ui (nll)] ui/borrowck/suggest-local-var-imm-and-mut.rs stdout ----


7    |             |    |   mutable borrow occurs here
8    |             |    immutable borrow later used by call
9    |             immutable borrow occurs here
+ help: try adding a local storing this argument...
+ help: try adding a local storing this argument...
+   --> $DIR/suggest-local-var-imm-and-mut.rs:12:22
+    |
+ LL |             self.foo(self.bar());
+    |                      ^^^^^^^^^^
+ help: ...and then using that local as the argument to this call
+   --> $DIR/suggest-local-var-imm-and-mut.rs:12:13
Some tests failed in compiletest suite=ui compare_mode=Nll mode=ui host=x86_64-unknown-linux-gnu target=x86_64-unknown-linux-gnu
+    |
+ LL |             self.foo(self.bar());
10 
10 
11 error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
-   --> $DIR/suggest-local-var-imm-and-mut.rs:24:29
+   --> $DIR/suggest-local-var-imm-and-mut.rs:24:39
13    |
14 LL |             Self::foo(self, Self::bar(self));
-    |             --------- ----  ^^^^^^^^^^^^^^^ mutable borrow occurs here
+    |             --------- ----            ^^^^ mutable borrow occurs here
16    |             |         |
17    |             |         immutable borrow occurs here
18    |             immutable borrow later used by call

The actual stderr differed from the expected stderr.
The actual stderr differed from the expected stderr.
Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/borrowck/suggest-local-var-imm-and-mut.nll/suggest-local-var-imm-and-mut.nll.stderr
To update references, rerun the tests and pass the `--bless` flag
To only update this specific test, also pass `--test-args borrowck/suggest-local-var-imm-and-mut.rs`
error: 1 errors occurred comparing output.
status: exit status: 1
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/borrowck/suggest-local-var-imm-and-mut.rs" "-Zthreads=1" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/borrowck/suggest-local-var-imm-and-mut.nll" "-Zborrowck=mir" "-A" "unused" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/borrowck/suggest-local-var-imm-and-mut.nll/auxiliary"
------------------------------------------

------------------------------------------
stderr:
stderr:
------------------------------------------
error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
  --> /checkout/src/test/ui/borrowck/suggest-local-var-imm-and-mut.rs:12:22
   |
LL |             self.foo(self.bar()); //~ ERROR
   |             |    |   |
   |             |    |   |
   |             |    |   mutable borrow occurs here
   |             |    immutable borrow later used by call
   |             immutable borrow occurs here
help: try adding a local storing this argument...
help: try adding a local storing this argument...
  --> /checkout/src/test/ui/borrowck/suggest-local-var-imm-and-mut.rs:12:22
   |
LL |             self.foo(self.bar()); //~ ERROR
   |                      ^^^^^^^^^^
help: ...and then using that local as the argument to this call
  --> /checkout/src/test/ui/borrowck/suggest-local-var-imm-and-mut.rs:12:13
   |
LL |             self.foo(self.bar()); //~ ERROR


error[E0502]: cannot borrow `*self` as mutable because it is also borrowed as immutable
  --> /checkout/src/test/ui/borrowck/suggest-local-var-imm-and-mut.rs:24:39
   |
LL |             Self::foo(self, Self::bar(self)); //~ ERROR
   |             --------- ----            ^^^^ mutable borrow occurs here
   |             |         |
   |             |         immutable borrow occurs here
   |             immutable borrow later used by call
error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0502`.


------------------------------------------



failures:
    [ui (nll)] ui/borrowck/suggest-local-var-imm-and-mut.rs
test result: FAILED. 12324 passed; 1 failed; 156 ignored; 0 measured; 0 filtered out; finished in 114.27s




command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--src-base" "/checkout/src/test/ui" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--suite" "ui" "--mode" "ui" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/checkout/obj/build/x86_64-unknown-linux-gnu/llvm/build/bin/FileCheck" "--host-rustcflags" "-Crpath -Cdebuginfo=0  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--target-rustcflags" "-Crpath -Cdebuginfo=0  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python3" "--lldb-python" "/usr/bin/python3" "--gdb" "/usr/bin/gdb" "--llvm-version" "13.0.0-rust-1.59.0-nightly" "--llvm-components" "aarch64 aarch64asmparser aarch64codegen aarch64desc aarch64disassembler aarch64info aarch64utils aggressiveinstcombine all all-targets analysis arm armasmparser armcodegen armdesc armdisassembler arminfo armutils asmparser asmprinter avr avrasmparser avrcodegen avrdesc avrdisassembler avrinfo binaryformat bitreader bitstreamreader bitwriter bpf bpfasmparser bpfcodegen bpfdesc bpfdisassembler bpfinfo cfguard codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfogsym debuginfomsf debuginfopdb demangle dlltooldriver dwarflinker dwp engine executionengine extensions filecheck frontendopenacc frontendopenmp fuzzmutate globalisel hexagon hexagonasmparser hexagoncodegen hexagondesc hexagondisassembler hexagoninfo instcombine instrumentation interfacestub interpreter ipo irreader jitlink libdriver lineeditor linker lto m68k m68kasmparser m68kcodegen m68kdesc m68kdisassembler m68kinfo mc mca mcdisassembler mcjit mcparser mips mipsasmparser mipscodegen mipsdesc mipsdisassembler mipsinfo mirparser msp430 msp430asmparser msp430codegen msp430desc msp430disassembler msp430info native nativecodegen nvptx nvptxcodegen nvptxdesc nvptxinfo objcarcopts object objectyaml option orcjit orcshared orctargetprocess passes powerpc powerpcasmparser powerpccodegen powerpcdesc powerpcdisassembler powerpcinfo profiledata remarks riscv riscvasmparser riscvcodegen riscvdesc riscvdisassembler riscvinfo runtimedyld scalaropts selectiondag sparc sparcasmparser sparccodegen sparcdesc sparcdisassembler sparcinfo support symbolize systemz systemzasmparser systemzcodegen systemzdesc systemzdisassembler systemzinfo tablegen target textapi transformutils vectorize webassembly webassemblyasmparser webassemblycodegen webassemblydesc webassemblydisassembler webassemblyinfo webassemblyutils windowsmanifest x86 x86asmparser x86codegen x86desc x86disassembler x86info xray" "--cc" "" "--cxx" "" "--cflags" "" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--channel" "nightly" "--color" "always" "--compare-mode" "nll"


Build completed unsuccessfully in 0:19:30

@bors
Copy link
Contributor

bors commented Dec 10, 2021

💔 Test failed - checks-actions

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Dec 10, 2021
@matthiaskrgr
Copy link
Member Author

@ehuss iif this merges I would be able to close 91726 while the ice fix is being tested
@jackh726 I'm running x.py test locally right now to see if there are test failures and since all of the prs are marked rollup=always it should be relatively save (in theory at last...:/ )
But you might be right, we should probably split it up a bit...

EDIT: nevermind... :D

@camelid
Copy link
Member

camelid commented Dec 10, 2021

I'm running x.py test locally right now to see if there are test failures and since all of the prs are marked rollup=always it should be relatively save (in theory at last...:/ )

Running tests locally doesn't really solve the problem. The PRs could introduce regressions—which would be really hard to bisect later on with a 22 PR rollup—or perf regressions—which would be nearly impossible to track down.

@matthiaskrgr
Copy link
Member Author

Well so far I have found 5-7 prs for none-rollup=always to be an ok balance.
Looking at the queue right now, we have 60(!) approved prs.

Trying to merge that without rollups would take at least 8 days according to my math (60* ~3.5 hours) assuming no rebases are needed and no failures happen) => 210 hours => 8.75 days.

If you have any ideas how we can merge more PRs reliably, please share!

It would be great if we could merge every PR somewhere between 3 and 48 hours after approval imo; every minute someone spends resolving merge conflicts after approval could as well be a minute they spent coding :)

@camelid
Copy link
Member

camelid commented Dec 10, 2021

@matthiaskrgr I do really appreciate all the rollups you've been doing recently to shrink the queue :)

I think it's fine to rollup many documentation PRs, say, since they can't cause correctness or perf regressions. Other than that, I really have any ideas unfortunately.

@jackh726
Copy link
Member

The queue will sort itself out over time. Even though it might be counterintuitive, merging PRs faster doesn't decrease the chance of needing to resolve merge conflicts (only if PRs consistently jump ahead of an approved PR).

There are really two classes of rollup=always: those that are very safe (documentation, moving code without otherwise changing semantics, adding instrumentation), which if they don't conflict shouldn't cause problems; and those that are small, local changes, which can introduce bugs or regressions. PRs of the former shouldn't really count much in terms of rollups, PRs of the latter do count. All I'm saying here is that as far as number of PRs in a rollup, the former are better to include more of than the latter.

Other than that, I wouldn't worry about making bigger rollup PRs to move the queue faster. One thing that can be done is to make disjoint rollup PRs with different PRs. So you can make the rollups and not have to worry about them. It doesn't necessarily cut down on CI time like that, but can cut down on the need to watch the queue or such

@matthiaskrgr matthiaskrgr deleted the rollup-5wbsprs branch December 12, 2021 09:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rollup A PR which is a rollup S-waiting-on-review Status: Awaiting review from the assignee but also interested parties.
Projects
None yet
Development

Successfully merging this pull request may close these issues.