Uh oh!
There was an error while loading. Please reload this page.
Implement RFC 1679 - #36340
Conversation
e4cdd6a to
26f5c2eComparealexcrichton
commented
Sep 8, 2016
Nice! Could you also add tests that are exercising these new abilities as well? |
26f5c2e to
dcb3b42Comparesfackler
commented
Sep 9, 2016
@alexcrichton updated |
alexcrichton
commented
Sep 9, 2016
Ok so I finally got around to actually running this on crater, and the result was three regressions: https://gist.github.com/alexcrichton/0c44e2a95044ae9f4d364496bbd0a388. One of those is spurious but the other two look legitimate.
These seem kinda worrisome :( |
sfackler
commented
Sep 10, 2016
The gilrs failure looks like the kind of breakage we'd expect from our back compat guarantees and should be easy to fix. The rss-rs issue is way weirder - not sure what's going on with that. |
alexcrichton
commented
Sep 11, 2016
I'm guessing this is all because the output type is now generic, so there's cases where there's just not enough inference to figure out what it should actually be |
alexcrichton
commented
Sep 12, 2016
Ok, minimizing the rss-rs case a little further: fnfoo<'a>(split:&[&'a[u8]]) -> (&'a[u8],&'a[u8]){(unsafe{ split.get_unchecked(0)},unsafe{ split.get_unchecked(1)},)}On stable that compiles and with this patch it yields That help message seems pretty suspicious for what might be happening here/ |
sfackler
commented
Sep 12, 2016
@alexcrichton do you see the same error using normal indexing with/without the patch? |
alexcrichton
commented
Sep 12, 2016
@sfackler interestingly, no! If I change the return value to |
sfackler
commented
Sep 12, 2016
That's bizarre. It is a difference between parameterized impls and parameterized methods, but I wouldn't have expected that to matter in this way. |
bors
commented
Sep 15, 2016
☔ The latest upstream changes (presumably #36491) made this pull request unmergeable. Please resolve the merge conflicts. |
aturon
commented
Sep 26, 2016
cc @nikomatsakis, see #36340 (comment) in particular. |
nikomatsakis
commented
Sep 27, 2016
Hmm. I have some theories but no concrete idea. I think I'll have to dig in a bit. |
nikomatsakis
commented
Oct 21, 2016
I spent about an hour digging into this case today. Got to do a few other things now, but I'll try to come back to it. I haven't yet gotten to the bottom of what's going on, but I am going to leave myself a few notes here:
|
sfackler
commented
Oct 21, 2016
Thanks for looking into it! @alexcrichton Given that the weird breakage seems to be something that "should" work modulo compiler bugs, I'd lean towards fixing the two crates that regress and landing this. Thoughts? |
alexcrichton
commented
Oct 21, 2016
Hm this is a change to such a core type I'd personally prefer to wait for the compiler bug, if any, to get fixed. |
nikomatsakis
commented
Oct 25, 2016
I'd be more comfortable waiting; I'll try to dig in a bit more asap On Fri, Oct 21, 2016 at 10:04:18AM -0700, Alex Crichton wrote:
|
nikomatsakis
commented
Oct 31, 2016
OK, sorry for the delay, last week was crazy, but I dug in some more and I understand the problem. In particular, we have this bit of cleverness called In this case, though, we know that the return type like be I'm not entirely sure what's the best solution here. I have to kind of bring this coercion bit back in my head, and in particular under what circumstances it is required to commit region edges; it may be that we can apply it in more limited circumstances, or avoid committing all of the region inference edges. I suspect region edges are only needed when they affect new region variables that get created during the coercion -- e.g., the edge here, if it were truly needed, would be recreated, I believe. cc @eddyb who wrote the code originally |
eddyb
commented
Oct 31, 2016
Yeah, the region stuff was never great. We only truly care about "type skeletons" - as long as the coercion is triggered, having more freedom around regions (i.e. even replacing them all with fresh vars) shouldn't break anything. |
nikomatsakis
commented
Nov 1, 2016
Do you remember why we had to commit the regions? I guess I can remove that step (and perhaps replace them with fresh vars) and see what happens. |
nikomatsakis
commented
Nov 8, 2016
OK, I have a provisional fix for the compiler bug in question. Doing more testing now. |
brson
commented
Nov 9, 2016
Thanks @nikomatsakis! |
dcb3b42 to
8c3e80cComparesfackler
commented
Nov 25, 2016
Rebased - can we run crater one more time now that niko's fix is in? |
eddyb
commented
Nov 25, 2016
Starting crater run. |
sfackler
commented
Nov 25, 2016
Thanks! |
There was a problem hiding this comment.
tidy failed, line longer than 100 chars (should not impact the crater run though).
8c3e80c to
3446a94Compareeddyb
commented
Nov 25, 2016
Crater report shows one root regression ( |
sfackler
commented
Nov 25, 2016
Well that's easy! rust-postgres/rust-postgres@11f1186 |
sfackler
commented
Nov 26, 2016
@alexcrichton I think this is good to go now? |
There was a problem hiding this comment.
As per travis:
error: error pattern 'assertion failed: self < slice.len()' not found!
3446a94 to
5377b5eComparealexcrichton
commented
Nov 26, 2016
@bors: r+ Nice! |
bors
commented
Nov 26, 2016
📌 Commit 5377b5e has been approved by |
bors
commented
Nov 27, 2016
Implement RFC 1679 cc #35729 r? @alexcrichton
bors
commented
Nov 27, 2016
Fix more breakage similar to rust-lang/rust#36340 and 11f1186
cc #35729
r? @alexcrichton