I think the following 24 crates caused root regressions in 371 dependent crates (possibly out of the 445 crater-tree reports).
capnp-0.6.2
-> same errors as capnp-0.7.5
capnp-0.7.5
-> feels like an instance of the 2PB-expansion "feature request" #51915 ?
clucstr-0.1.3
-> known ICE broken MIR plugin_registrar
galvanize-0.0.1
-> exactly the same bug which happened in url-1.7.0
: a move out of a struct with a destructor. Repro. The unclear diagnostic was already filed as #52059.
getopts-0.2.14
-> while loop condition borrowing a value itself mutated inside the loop by a closure — somehow feels close to this version of issue 46589 but with closures ? Either "fixed by NLL" or a matter left to Polonius ? Minimized repro that AST borrowck accepts.
liner-0.4.4
-> interesting errors, and look like to be the ones "fixed by NLL", repro
nalgebra-0.11.2
-> same error as nalgebra-0.15.3
nalgebra-0.12.3
-> same error as nalgebra-0.15.3
nalgebra-0.13.1
-> same error as nalgebra-0.15.3
nalgebra-0.14.4
-> same error as nalgebra-0.15.3
nalgebra-0.15.3
-> I think it's an instance of the 2PB-expansion "feature request" #51915
pear_codegen-0.0.18
-> known ICE broken MIR plugin registrar, and instances of buggy url-1.7.0
phf_macros-0.7.22
-> known ICE broken MIR macro registrar
rs-graph-0.14.0
-> One of the errors feels like an instance of the 2PB-expansion "feature request" #51915 : src/maxflow/dinic.rs:146
.
The other one is a bit weird to me: it both feels related to #52078 (maybe they share a root cause; it feels related because we're going through a reference to an associated type) and could also be seen as a "fixed by NLL" bug in the crate, where this one time they do not follow their other patterns of GAT-workarounds (e.g. adding an outlives annotation to the associated type, or using &'a self
references; both of which fix the error, in addition to the one the MIR borrowck diagnostic offers).
Reduced repro here – note that AST borrowck rejects this repro, it was not made to highlight the differences between the two, just show this error.
rusttype-0.2.3
-> part of this crate (the BTreeMap) looks copied from liballoc
's collection
module, and has the same problem as bootstrapping rustc. And indeed, adding outlives annotations as niko has done in PR 51914 fixes the errors.
(When this is fixed, the examples and unit tests of this version 0.2.3 still don't build anyway, because of resources missing from the repo and which have been since fixed in later versions; of course this doesn't matter for downstream crates, and all the following would build had the annotations been there already, or if we inferred them, as I think we will / at least some of them we will).
shred-0.7.0
-> error about missing outlives annotations. When adding the constraints rustc proposes in the error, the crate builds.
Maybe it will be fixed under the current plan, but the infer_outlives_requirements
feature doesn't currently fix this specific case (tracking issues for RFC 2093)
specs-0.10.0
-> likely a rustc bug, filed as #52078
-> fixed in master by PR #51959
syntex_syntax-0.39.0
-> this feels like a bug in AST borrowck/the crate, that is "fixed by NLL", reduced repro.
This repro is not minimal as I found interesting to show that going through the parse_sess
reference in cx.parse_sess.err_count
is what "confuses" AST borrowck into accepting the code: if the method call was on cx
directly, AST borrowck would catch it.
syntex_syntax-0.41.0
-> same error as syntex_syntax-0.44.1
syntex_syntax-0.42.0
-> same error as syntex_syntax-0.44.1
syntex_syntax-0.44.1
-> known ICE broken MIR syntex_syntax
url-1.2.4
-> same error as 1.7.0
url-1.6.0
-> same error as 1.7.0
url-1.7.0
-> 276 dependent crates marked as root regressions, fix merged in url
master, marked for release url-1.7.1