Stream: t-compiler

Topic: #54818 weekly meeting 2018-11-01


pnkfelix (Oct 31 2018 at 22:13, on Zulip):

(I'm not sure I will be available to run the next rustc meeting. my son's daycare is closed for a French holiday and his naptime will probably be over by the time the rustc meeting starts)

nagisa (Oct 31 2018 at 22:15, on Zulip):

Okay, I have a holiday as well so some free time on my hands as well.

blitzerr (Nov 01 2018 at 00:09, on Zulip):

I think you son should just run the meeting and you can relax. It might be time to pass on the torch onto the next gen :slight_smile:

nagisa (Nov 01 2018 at 09:41, on Zulip):

Early notice to all participants. For some of you the meeting this week is an hour early due to DST discrepancies. This notably includes participants from EU, some of the Middle East countries, some of the Mexican counties… Do check with your calendar.

mw (Nov 01 2018 at 10:46, on Zulip):

I think you son should just run the meeting and you can relax. It might be time to pass on the torch onto the next gen :)

That should make for an interesting meeting indeed. I-Nominated: what's with the early bedtime already! And can we anchor it to UTC?

nagisa (Nov 01 2018 at 13:17, on Zulip):

/me starts a prepass.

nikomatsakis (Nov 01 2018 at 13:56, on Zulip):

/me files an issue for "more cookies after dinner", nominates for P-high.

eddyb (Nov 01 2018 at 13:57, on Zulip):

can't wait for DST to stop being a thing

nagisa (Nov 01 2018 at 14:00, on Zulip):

@T-compiler hi everyone :slight_smile:

nagisa (Nov 01 2018 at 14:00, on Zulip):

lets begin, I guess.

nagisa (Nov 01 2018 at 14:00, on Zulip):

Since @pnkfelix is having a public holiday, this time around I’ll be responsible for steering this meeting.

nagisa (Nov 01 2018 at 14:00, on Zulip):

Going right over agenda…

nagisa (Nov 01 2018 at 14:01, on Zulip):

Only 1 P-high T-compiler issue. ICE when running cargo doc on typenum at
librustc/traits/structural_impls.rs:178 #52873. Reopened because we never backported the #54199.
Would we want to backport? Small change.

nikomatsakis (Nov 01 2018 at 14:01, on Zulip):

pretty harmless

nikomatsakis (Nov 01 2018 at 14:01, on Zulip):

I can do the backport if needed

nagisa (Nov 01 2018 at 14:01, on Zulip):

okay.

nikomatsakis (Nov 01 2018 at 14:01, on Zulip):

what am I backporting to exactly...? beta?

nikomatsakis (Nov 01 2018 at 14:01, on Zulip):

/me will figure it out

oli (Nov 01 2018 at 14:01, on Zulip):

stable

nagisa (Nov 01 2018 at 14:02, on Zulip):

you’re already assigned @nikomatsakis. So I guess we can move on.

nagisa (Nov 01 2018 at 14:02, on Zulip):

Next on the agenda, list was the RC-2 milestone. RC-2 has been released, so no open issues for the RC-2 milestone. There are quite a few issues open for the 2018 edition milestone, though. Mostly NLL stuff, 1 I-needs-decision issue. Should we look at them?

nagisa (Nov 01 2018 at 14:03, on Zulip):

I guess we could do that at the end of the meeting if we have time left

nikomatsakis (Nov 01 2018 at 14:03, on Zulip):

in general, the NLL team wants to start merging its triage of this kind

nikomatsakis (Nov 01 2018 at 14:04, on Zulip):

however, I would say that @pnkfelix and I can triage those particular issues

nikomatsakis (Nov 01 2018 at 14:04, on Zulip):

mostly they are not release blockers

nikomatsakis (Nov 01 2018 at 14:04, on Zulip):

we wanted to use the milestone only for things we feel need backport, which I think is basically 'nothing' right now

nikomatsakis (Nov 01 2018 at 14:04, on Zulip):

in general, the NLL team wants to start merging its triage of this kind

by this I mean we'll just use the ordinary T-compiler, P-high tracking

nagisa (Nov 01 2018 at 14:05, on Zulip):

hmm, so you mean most of those issues do not belong to the milestone at all?

nikomatsakis (Nov 01 2018 at 14:05, on Zulip):

yes, basically.

nikomatsakis (Nov 01 2018 at 14:05, on Zulip):

We've been moving things from milestone to milestone

nagisa (Nov 01 2018 at 14:05, on Zulip):

If we have time at the end of the meeting, and there’s interest in involving the rest of T-compiler we can do that then, is that fine?

nikomatsakis (Nov 01 2018 at 14:05, on Zulip):

and then -- at the start of a milestone -- reviewing the list and deciding what to do with it

nikomatsakis (Nov 01 2018 at 14:05, on Zulip):

If we have time at the end of the meeting, and there’s interest in involving the rest of T-compiler we can do that then, is that fine?

no objection

nikomatsakis (Nov 01 2018 at 14:06, on Zulip):

just didn't want to bore y'all :)

nagisa (Nov 01 2018 at 14:06, on Zulip):

Okay, then… we have 2 beta nominated PRs. Only one waiting on a decision and somewhat in T-compiler purview.

nagisa (Nov 01 2018 at 14:06, on Zulip):

enforce unused-must-use lint in macros #55569. Small, 1-line change. Well tested. Fixes a stable-to-stable regression. Has not landed into master yet.

nagisa (Nov 01 2018 at 14:06, on Zulip):

Seems like a no-brainer to me.

nagisa (Nov 01 2018 at 14:07, on Zulip):

Any nays?

nagisa (Nov 01 2018 at 14:07, on Zulip):

Marking as beta-accepted.

nagisa (Nov 01 2018 at 14:08, on Zulip):

Moving on, there’s 1 stable nominated PR for T-rustdoc. Nothing to see there for us.

nagisa (Nov 01 2018 at 14:09, on Zulip):

Then, Regressions. we have 3 stable-to-beta. 1 stable-to-nightly.

nagisa (Nov 01 2018 at 14:09, on Zulip):

regression: stack overflow on macosx with xcode 6.4 #55471. Unclear how to approach the issue. There are multiple possible approaches: we can just bump the stack size again, or as @Oli suggests, change how we build mir, or as I suggest make compiler thread stacks growing, solving this problem once and for all, regardless of how we end up writing code.

nikomatsakis (Nov 01 2018 at 14:10, on Zulip):

In general, I'm in favor of using stacker to grow stacks, but I've not looked at this particular issue.

nagisa (Nov 01 2018 at 14:10, on Zulip):

We need to decide on a priority

mw (Nov 01 2018 at 14:10, on Zulip):

what options are there for implementing your approach, @nagisa ?

nikomatsakis (Nov 01 2018 at 14:10, on Zulip):

It wouldn't work on every platform, I think? Not sure.

nagisa (Nov 01 2018 at 14:10, on Zulip):

@mw I have not investigated options yet.

mw (Nov 01 2018 at 14:10, on Zulip):

ok

nikomatsakis (Nov 01 2018 at 14:11, on Zulip):

The stacker crate basically exists to solve this problem

eddyb (Nov 01 2018 at 14:11, on Zulip):

I remember having that on my TODO list for ages Q_Q

nikomatsakis (Nov 01 2018 at 14:11, on Zulip):

But we'd have to insert a call into locations where we recurse with arbitrary depth

mw (Nov 01 2018 at 14:11, on Zulip):

any downsides to using it?

nikomatsakis (Nov 01 2018 at 14:11, on Zulip):

Not really

eddyb (Nov 01 2018 at 14:11, on Zulip):

I think we could attach it to the query engine

eddyb (Nov 01 2018 at 14:11, on Zulip):

at the very least

nikomatsakis (Nov 01 2018 at 14:11, on Zulip):

Indeed, some central place like that would make sense

oli (Nov 01 2018 at 14:11, on Zulip):

doesn't help here

nagisa (Nov 01 2018 at 14:11, on Zulip):

If we only grow the stack, then the memory usage will never get reclaimed for very recursive parts of the code.

nikomatsakis (Nov 01 2018 at 14:11, on Zulip):

Though it's not necessarily sufficient

nikomatsakis (Nov 01 2018 at 14:12, on Zulip):

Yes, sorry, I guess I should have clarified: @mw the downsides are basically potentially performance cliffs around stack growth edges, but that would only occur in extreme cases presumably.

nikomatsakis (Nov 01 2018 at 14:12, on Zulip):

That is, "the usual" when growing stacks I geuss

nikomatsakis (Nov 01 2018 at 14:12, on Zulip):

the alternative though is to move everything into the heap, certainly not always convenient, has its own costs, and sometimes not even possible (because borrow check)

oli (Nov 01 2018 at 14:13, on Zulip):

Even I don't like my own suggestion anymore :P let's do the stacker thing

nagisa (Nov 01 2018 at 14:13, on Zulip):

Well, I’d really love to avoid having to reimplement MIR on external stack.

mw (Nov 01 2018 at 14:13, on Zulip):

it seems like stacker is what you come up with when optimizing: heap too slow -> stack -> stack to small -> stackker

nikomatsakis (Nov 01 2018 at 14:14, on Zulip):

if you recall, we used to do it automatically; stacker is basically the "only where you need it" alternative

nagisa (Nov 01 2018 at 14:14, on Zulip):

I was a proponent of non-recursive algorithms for e.g. cleanup scope construction, but that was not a thing that benefited from being recursive as much as MIR building does.

nikomatsakis (Nov 01 2018 at 14:14, on Zulip):

indeed

mw (Nov 01 2018 at 14:15, on Zulip):

I think it's good to have the option of writing things in a recursive way

mw (Nov 01 2018 at 14:15, on Zulip):

so if there's no blocker for stacker, I'd be for using it

mw (Nov 01 2018 at 14:15, on Zulip):

however the immediate issue here is determining the priority, right?

nagisa (Nov 01 2018 at 14:15, on Zulip):

Okay, it seems that we have some consensus on stack growing, perhaps using stacker. An implementation effort will obviously be necessary. P-high? P-medium?

nagisa (Nov 01 2018 at 14:16, on Zulip):

Since it is a regression, I’m partial to P-high

nikomatsakis (Nov 01 2018 at 14:17, on Zulip):

seems reasonable

mw (Nov 01 2018 at 14:17, on Zulip):

yeah

nikomatsakis (Nov 01 2018 at 14:17, on Zulip):

this problem has been dogging us for some time

nagisa (Nov 01 2018 at 14:17, on Zulip):

Anybody wants to be the assignee?

nikomatsakis (Nov 01 2018 at 14:18, on Zulip):

@Oli ? :)

nikomatsakis (Nov 01 2018 at 14:18, on Zulip):

what precisely are we making P-high :)

oli (Nov 01 2018 at 14:18, on Zulip):

sure

nikomatsakis (Nov 01 2018 at 14:18, on Zulip):

that is, we are looking to solve this particular problem, I imagine, but there are probably other places where stacker could be used

nikomatsakis (Nov 01 2018 at 14:18, on Zulip):

I don't think we should block on "finding them all" or something

nikomatsakis (Nov 01 2018 at 14:19, on Zulip):

though it's not a bad idea to start accumulating some lists of possible candidates? (e.g., @eddyb mentioned the query system)

varkor (Nov 01 2018 at 14:19, on Zulip):

is this relevant to all the parser recursion problems too?

varkor (Nov 01 2018 at 14:19, on Zulip):

there's a meta issue for those

nikomatsakis (Nov 01 2018 at 14:19, on Zulip):

if they are causing stack overflows, seems relevant

mw (Nov 01 2018 at 14:19, on Zulip):

@varkor if they involve running out of stack space

oli (Nov 01 2018 at 14:19, on Zulip):

I'll build a list before tackling the issue

varkor (Nov 01 2018 at 14:19, on Zulip):

ah, actually, it's this one: https://github.com/rust-lang/rust/issues/40161

eddyb (Nov 01 2018 at 14:19, on Zulip):

did someone say "parser" :)

varkor (Nov 01 2018 at 14:19, on Zulip):

not just parser problems

nagisa (Nov 01 2018 at 14:19, on Zulip):

I assume that once we have stacker integrated at all, it will be trivial to add the "stack grow check" to more locations.

oli (Nov 01 2018 at 14:20, on Zulip):

we even have https://github.com/rust-lang/rust/issues/41884 open already

eddyb (Nov 01 2018 at 14:20, on Zulip):

(GLL runs in constant stack space. it's basically a VM kinda-interpreter loop :P)

nagisa (Nov 01 2018 at 14:21, on Zulip):

Is there anything else we should cover /wrt this specific regression?

nagisa (Nov 01 2018 at 14:21, on Zulip):

If not, and moving on…

nagisa (Nov 01 2018 at 14:21, on Zulip):

Rustc panics on nightly with crate interpolate #54654. @pnkfelix failed to reproduce this 8 days ago. No progress since. No reason to get back to this I think.

nagisa (Nov 01 2018 at 14:22, on Zulip):

[1.30 beta] Compiler hangs when compiling primal crate for armv7-apple-ios #54627. We discussed this a few times before. Workarounds available. No intent to fix on our side and no progress since. No reason to come back to this either.

nagisa (Nov 01 2018 at 14:22, on Zulip):

stable-to-nightly Toolchain 'nightly-x86_64-apple-darwin' missing from nightly 1.31.0
(de9666f12 2018-10-31) #55571. T-infra thing. Does not seem that input from T-compiler would be necessary.

nagisa (Nov 01 2018 at 14:22, on Zulip):

With that, all the regressions are covered.

nagisa (Nov 01 2018 at 14:23, on Zulip):

Waiting for T-compiler. Empty!

nagisa (Nov 01 2018 at 14:23, on Zulip):

I-nominated T-compiler. 4 issues. 1 (#55471) has already been discussed today.

nikomatsakis (Nov 01 2018 at 14:23, on Zulip):

wow

nagisa (Nov 01 2018 at 14:23, on Zulip):

compare compiler performance with hashbrown #55514. Amanieu released a crate that implements faster hashmaps. There might be something to gain by using them in the compiler.

nagisa (Nov 01 2018 at 14:24, on Zulip):

It seems to me that there is some progress on attempting to integrate hashbrown, right, @nikomatsakis?

eddyb (Nov 01 2018 at 14:24, on Zulip):

why are they faster?

eddyb (Nov 01 2018 at 14:25, on Zulip):

I couldn't find any information on the official page of the thing hashbrown is a port of

nagisa (Nov 01 2018 at 14:25, on Zulip):

A different algorithm and it uses SSE apparently. Unclear how much influence SSE has on it being faster though.

nikomatsakis (Nov 01 2018 at 14:25, on Zulip):

I was just skimming the issue

nikomatsakis (Nov 01 2018 at 14:25, on Zulip):

looks like @Amanieu was motivated to pursue this

nikomatsakis (Nov 01 2018 at 14:25, on Zulip):

and has produced some sort of branch?

nagisa (Nov 01 2018 at 14:26, on Zulip):

A branch of hashbrown crate that compiles with stage0

eddyb (Nov 01 2018 at 14:26, on Zulip):

my question would be "can we generally improve upon libstd's hashmaps using these new insights?"

nikomatsakis (Nov 01 2018 at 14:26, on Zulip):

@eddyb yeah I don't really know :) there is also discussion on that issue of whether it'd be suitable to just use this as the default hash map

nagisa (Nov 01 2018 at 14:26, on Zulip):

It seems like it might be worthwhile to involve T-libs as well?

nagisa (Nov 01 2018 at 14:27, on Zulip):

Perhaps even on a separate issue.

nikomatsakis (Nov 01 2018 at 14:27, on Zulip):

perhaps

nikomatsakis (Nov 01 2018 at 14:27, on Zulip):

seems like it's progressing, I don't know that we want to mark this as P-high or anything

nagisa (Nov 01 2018 at 14:27, on Zulip):

Either way, we need to decide on the P-flag. This doesn’t appear P-high to me

nikomatsakis (Nov 01 2018 at 14:27, on Zulip):

yeah it's ok, I just wanted to bring it to people's attention

nagisa (Nov 01 2018 at 14:27, on Zulip):

So P-medium?

nikomatsakis (Nov 01 2018 at 14:27, on Zulip):

now of course it'll go down the "GH notification rathole" and I'll forget all about it

nikomatsakis (Nov 01 2018 at 14:28, on Zulip):

/me had already forgotten about it by the time of this meeting :P

nagisa (Nov 01 2018 at 14:30, on Zulip):

Okay, moving on.

nagisa (Nov 01 2018 at 14:30, on Zulip):

Other two I-nominated issues (#53859, #38941) were discussed last week and had no apparent activity since.

nagisa (Nov 01 2018 at 14:30, on Zulip):

We still should give them P-flags though

nagisa (Nov 01 2018 at 14:31, on Zulip):

So: run-pass/extern-pass-empty is probably a bogus thing to test #53859

nikomatsakis (Nov 01 2018 at 14:31, on Zulip):

yeah so it's a bit weird that we support #[repr(C)] struct Empty;,

nikomatsakis (Nov 01 2018 at 14:31, on Zulip):

but I think we settled (in the UCG discussion) on the idea that it's not broken -- our behavior for zero-sized structs matches various C compiler extensions

nikomatsakis (Nov 01 2018 at 14:31, on Zulip):

and makes logical sense

nikomatsakis (Nov 01 2018 at 14:32, on Zulip):

so I don't know that the test is invalid

nagisa (Nov 01 2018 at 14:32, on Zulip):

@nikomatsakis what is the behaviour, exactly?

nikomatsakis (Nov 01 2018 at 14:32, on Zulip):

it has zero size but affects alignment when embedded in other structs

nikomatsakis (Nov 01 2018 at 14:32, on Zulip):

I'm not 100% sure about the ABI considerations when passing as argumnt though

nikomatsakis (Nov 01 2018 at 14:32, on Zulip):

now that you mention it

nagisa (Nov 01 2018 at 14:33, on Zulip):

It seems to me, then, that we should first figure out what do we want this to do exactly and document/specify it

eddyb (Nov 01 2018 at 14:34, on Zulip):

and makes logical sense

I take it you haven't been exposed to https://github.com/rust-lang/rust/blob/master/src/librustc_codegen_llvm/abi.rs#L453-L456 yet?

nagisa (Nov 01 2018 at 14:34, on Zulip):

Since it is not a standard behaviour to have 0-sized structs in C (I believe), we at the very least should then decide on exact compiler extension(s) we aim to support.

nikomatsakis (Nov 01 2018 at 14:34, on Zulip):

@nagisa it is documented here, though that's not an "official source" yet

nikomatsakis (Nov 01 2018 at 14:34, on Zulip):

(it's intended to become a kind of RFC recommendation)

nikomatsakis (Nov 01 2018 at 14:34, on Zulip):

in particular, in this section

nikomatsakis (Nov 01 2018 at 14:34, on Zulip):

I'll leave some comments on the issue I guess

nagisa (Nov 01 2018 at 14:35, on Zulip):

Right so, since this issue is more about the test in particular, rather than the behaviour overall, P-high seems inappropriate to me

nikomatsakis (Nov 01 2018 at 14:36, on Zulip):

P-medium

nagisa (Nov 01 2018 at 14:36, on Zulip):

and we cannot make a decision without the UCG becoming an official document

nikomatsakis (Nov 01 2018 at 14:36, on Zulip):

I take it you haven't been exposed to https://github.com/rust-lang/rust/blob/master/src/librustc_codegen_llvm/abi.rs#L453-L456 yet?

I avert my eyes :)

nagisa (Nov 01 2018 at 14:37, on Zulip):

I’ve marked it as S-blocked, will comment that we cannot really make a decision without UCG

nagisa (Nov 01 2018 at 14:37, on Zulip):

The other I-nominated issue is Missed optimization: references from pointers aren't treated as noalias #38941

eddyb (Nov 01 2018 at 14:38, on Zulip):

(my guess about mingw is that they copied the subpar logic from MSVC but forgot that GCC has the zero-size extension and didn't add a special case for it)

nagisa (Nov 01 2018 at 14:38, on Zulip):

Note that #38941 was discussed last week, yet the P-flag has not been assigned

nikomatsakis (Nov 01 2018 at 14:39, on Zulip):

seems like P-medium at best

nikomatsakis (Nov 01 2018 at 14:39, on Zulip):

the real question is how to track these

nagisa (Nov 01 2018 at 14:39, on Zulip):

It seems that no answer has been reached for the question this has been nominated.

nagisa (Nov 01 2018 at 14:39, on Zulip):

Right.

nagisa (Nov 01 2018 at 14:40, on Zulip):

Does anybody want to add anything to the discussion? This issue is the last item on what I have prepared with a pre-pass.

nikomatsakis (Nov 01 2018 at 14:41, on Zulip):

I have a few things I wanted to bring up

nikomatsakis (Nov 01 2018 at 14:41, on Zulip):

First question: do we want to have another "steering meeting"? It seemed like we had a good conversation last time, but also that there may have been other topics we ought do discuss.

nagisa (Nov 01 2018 at 14:42, on Zulip):

(As far as triage goes, there are a number of stable-to-stable regressions we could try and look through as well as the 2018 milestone)

nikomatsakis (Nov 01 2018 at 14:42, on Zulip):

Second, related question: I'd like to begin planning more for the next year and also the Rust All Hands discussions. I was hoping to draw people's attention to this paper document where I've been collecting some ideas. We might want to have a meeting to talk about that.

mw (Nov 01 2018 at 14:42, on Zulip):

maybe we could do the steering meetings more often

mw (Nov 01 2018 at 14:42, on Zulip):

like every 3 weeks instead of every 6 weeks

nikomatsakis (Nov 01 2018 at 14:43, on Zulip):

yeah, that seems reasonable, at least to start

nikomatsakis (Nov 01 2018 at 14:43, on Zulip):

let's say that; I'll post something on the internals thread to discuss a bit in advance which topics to cover

nikomatsakis (Nov 01 2018 at 14:43, on Zulip):

sound good?

nagisa (Nov 01 2018 at 14:43, on Zulip):

I was hoping to draw people's attention to this paper document where I've been collecting some ideas.

I’m unable to edit that, no dropbox acct.

mw (Nov 01 2018 at 14:44, on Zulip):

@nagisa do you have a google account?

mw (Nov 01 2018 at 14:44, on Zulip):

that works too, I think

nagisa (Nov 01 2018 at 14:44, on Zulip):

@mw I do, but its a gsuite one.

nikomatsakis (Nov 01 2018 at 14:44, on Zulip):

would you prefer a google document? I could do that

nikomatsakis (Nov 01 2018 at 14:45, on Zulip):

or maybe hackmd

nikomatsakis (Nov 01 2018 at 14:45, on Zulip):

I guess that's the "new etherpad"

mw (Nov 01 2018 at 14:45, on Zulip):

@nagisa I have no clue what that means :)

nagisa (Nov 01 2018 at 14:45, on Zulip):

@mw google for bussiness thing, where you use a custom domain and have a separate list of permissions, things you cannot or can do etc.

mw (Nov 01 2018 at 14:46, on Zulip):

if hackmd works well, I'd be for that

nikomatsakis (Nov 01 2018 at 14:46, on Zulip):

I'm going to assume @nagisa that you also don't want to have a dropbox account :)

nagisa (Nov 01 2018 at 14:46, on Zulip):

Oh I can create one, sure. I’d rather not have to do that, though.

mw (Nov 01 2018 at 14:46, on Zulip):

not a big fan of Dropbox paper/google docs/online rich text editors

nikomatsakis (Nov 01 2018 at 14:46, on Zulip):

I've found I really like paper for having lightweight conversations and so forth but hackmd will probably also do fine

nagisa (Nov 01 2018 at 14:47, on Zulip):

I recall dropbox paper being used widely for the previous all-hands.

nikomatsakis (Nov 01 2018 at 14:47, on Zulip):

yes, it was the central organizing tool iirc

nagisa (Nov 01 2018 at 14:47, on Zulip):

Might just go ahead and create an acct. then

nagisa (Nov 01 2018 at 14:48, on Zulip):

Okay, so we still have 13 minutes, we could cover some stable-to-stable regressions or a few of those 2018 milestone issues.

nikomatsakis (Nov 01 2018 at 14:49, on Zulip):

is it worth "archiving" stable-to-stable regressions that we basically never plan to fix?

nagisa (Nov 01 2018 at 14:49, on Zulip):

@nikomatsakis since you are planning to triage the 2018 milestone issues, is there any chance that any of those issues might want explicit T-compiler attention?

nikomatsakis (Nov 01 2018 at 14:49, on Zulip):

I guess that might just be closing them :)

nikomatsakis (Nov 01 2018 at 14:50, on Zulip):

well, iirc, the majority are diagnostic nits and we basically don't plan to backport those

nikomatsakis (Nov 01 2018 at 14:50, on Zulip):

the only real question is whether it makes sense to backport some of the remaining "soundness fixes" -- i.e., things where NLL permits code it should not. I think at present the only cases like this are some subcases of user-given type annotations

nikomatsakis (Nov 01 2018 at 14:50, on Zulip):

(we preserve those into MIR, but there are a few cases we don't handle yet)

nikomatsakis (Nov 01 2018 at 14:51, on Zulip):

but that is sort of a hard question that is perhaps better answered using the standard beta nomination process? it probably depends on how hard those questions are to fix

nikomatsakis (Nov 01 2018 at 14:51, on Zulip):

one thing worth discussing

nagisa (Nov 01 2018 at 14:51, on Zulip):

Mhm… and then there’s NLL doesn't check that user type annotations are well-formed in unreachable code #54943 which is I-needs-decision

nikomatsakis (Nov 01 2018 at 14:51, on Zulip):

is how/when to transition Rust 2015 etc to use NLL mode

nikomatsakis (Nov 01 2018 at 14:52, on Zulip):

yes, I was going to raise that one as a bit of "policy question". I think we probably ought to fix, I think I see the right path for doing it now...

nagisa (Nov 01 2018 at 14:52, on Zulip):

NLL is strictly more permissive compared to the old borrowck, right?

nikomatsakis (Nov 01 2018 at 14:52, on Zulip):

is how/when to transition Rust 2015 etc to use NLL mode

my proposal was that we wait until 2 weeks after the next release -- i.e., once NLL hits stable -- and if there have been no major issues, then we switch over Rust 2015 to "migration mode" on nightly and let it ride the trains

nikomatsakis (Nov 01 2018 at 14:52, on Zulip):

NLL is strictly more permissive compared to the old borrowc, right?

well, modulo bugfixes

nikomatsakis (Nov 01 2018 at 14:53, on Zulip):

this is why we have "migration mode", it gives warnings for those cases where we fixed bugs so code that never should have compiled doesn't break immediately

nagisa (Nov 01 2018 at 14:53, on Zulip):

It seems that this question (how do we turn on NLL on 2015) would be better answered via the FCP process of some sort?

nikomatsakis (Nov 01 2018 at 14:53, on Zulip):

so another question is how long to keep that up :) it's basically the same as any other future compatibility warning I guess. I don't recall the crater impact numbers off hand, I don't think they were tremendously high, but there were probably some high profile crates in there.

nikomatsakis (Nov 01 2018 at 14:54, on Zulip):

It seems that this question (how do we turn on NLL on 2015) would be better answered via the FCP process of some sort?

that seems reasonable

nikomatsakis (Nov 01 2018 at 14:55, on Zulip):

i.e., I could open a PR somewhat in advance and do a rfcbot fcp merge?

nagisa (Nov 01 2018 at 14:55, on Zulip):

Yeah, something along the lines.

nikomatsakis (Nov 01 2018 at 14:55, on Zulip):

I like that idea

nagisa (Nov 01 2018 at 14:55, on Zulip):

We can then discuss timing on the PR as well

nikomatsakis (Nov 01 2018 at 14:55, on Zulip):

Yep

nikomatsakis (Nov 01 2018 at 14:55, on Zulip):

I'd prefer to have the discussion in that sort of forum, yes

nikomatsakis (Nov 01 2018 at 14:56, on Zulip):

Should we call it then? 4 minutes left

nagisa (Nov 01 2018 at 14:57, on Zulip):

Okay, unless anybody wants to discuss something else :slight_smile:

davidtwco (Nov 01 2018 at 14:57, on Zulip):

If there's a real want for another small topic - I looked into #54618 a while ago and had a topic here discussing it with @nikomatsakis, but I think we wanted to wait and see if anyone else chimed in on the best solution.

nikomatsakis (Nov 01 2018 at 14:57, on Zulip):

Ah yeah, this was the zulip topic,

nagisa (Nov 01 2018 at 14:57, on Zulip):

@davidtwco can you summarize it somewhat?

nikomatsakis (Nov 01 2018 at 14:57, on Zulip):

I sort of forget the complications now :)

davidtwco (Nov 01 2018 at 14:58, on Zulip):

It's super minor and low priority, but: unless you use something from a crate, it won't be loaded. That means it doesn't show up in suggestions for traits to be implemented (or traits with implementations) .

nagisa (Nov 01 2018 at 14:58, on Zulip):

Would definitely be nice if there wasn’t any distinction between crates bought in via --extern and via path search mechanism

nagisa (Nov 01 2018 at 14:59, on Zulip):

oh, I see.

nagisa (Nov 01 2018 at 14:59, on Zulip):

So the crate from prelude is not loaded entirely

nikomatsakis (Nov 01 2018 at 14:59, on Zulip):

I think I thought @eddyb or @Vadim Petrochenkov would have thoughts on how best to fix

davidtwco (Nov 01 2018 at 14:59, on Zulip):

The issue being if you have a crate in Cargo.toml and use an item from it (like call a function provided by a trait) without having used anything else form that crate then we don't make that suggestion.

nikomatsakis (Nov 01 2018 at 14:59, on Zulip):

ah right I sort of remember now,

nagisa (Nov 01 2018 at 14:59, on Zulip):

What are our current crates in prelude? std, core, alloc… what else?

nikomatsakis (Nov 01 2018 at 14:59, on Zulip):

the problem was that at the time of issuing the error,

eddyb (Nov 01 2018 at 15:00, on Zulip):

I think the solution is to have suggestion code that "lists all traits" to load extern prelude crates on demand

nikomatsakis (Nov 01 2018 at 15:00, on Zulip):

we don't have the right struct around to just go and Load All The Crates, right?

eddyb (Nov 01 2018 at 15:00, on Zulip):

rustc_resolve already has logic like this, for its own suggestions

davidtwco (Nov 01 2018 at 15:00, on Zulip):

The most compelling use case for this is the playground, since it has --extern for tons of crates that won't be loaded unless something is used from them.

eddyb (Nov 01 2018 at 15:00, on Zulip):

@nikomatsakis we do AFAIK

nikomatsakis (Nov 01 2018 at 15:00, on Zulip):

yeah I think the problem was that there is some type — a "crate loader" or something? — that is not available after resolve, though it did not look too "significant"?

davidtwco (Nov 01 2018 at 15:00, on Zulip):

I think the issue was that this suggestion is emitted after rustc_resolve where we can't just call a function to load the crates.

nikomatsakis (Nov 01 2018 at 15:00, on Zulip):

happy to be wrong :)

eddyb (Nov 01 2018 at 15:01, on Zulip):

I mean, rustdoc does it

eddyb (Nov 01 2018 at 15:01, on Zulip):

maybe it needs a bit of plumbing to make it available through a query or something

eddyb (Nov 01 2018 at 15:01, on Zulip):

but I think I fixed the query engine so it can handle crates being loaded after it started

eddyb (Nov 01 2018 at 15:02, on Zulip):

https://github.com/rust-lang/rust/blob/master/src/librustc/ty/query/plumbing.rs#L828-L831

eddyb (Nov 01 2018 at 15:02, on Zulip):

yeah so it'd work, if you did it somehow. that's what I meant, not that it's trivial to do the call in the first place

nagisa (Nov 01 2018 at 15:03, on Zulip):

Couldn’t crate loading be integrated into the query engine entirely?

davidtwco (Nov 01 2018 at 15:03, on Zulip):

Yeah, that was a solution we thought about, but I couldn't work out how to do it.

eddyb (Nov 01 2018 at 15:03, on Zulip):

(IMO we should move towards the query engine being responsible for crate loading and whatnot so I wouldn't mind adding a query for it)

nagisa (Nov 01 2018 at 15:03, on Zulip):

What are the complications there?

eddyb (Nov 01 2018 at 15:03, on Zulip):

@nagisa we're far away from doing that dependency inversion

eddyb (Nov 01 2018 at 15:03, on Zulip):

for now we have to keep things working in two different ways

nagisa (Nov 01 2018 at 15:04, on Zulip):

Oh, think I see what you mean, yeah

eddyb (Nov 01 2018 at 15:04, on Zulip):

(tcx needs hir which is the big elephant in the room. I have some plans but not enough time/funds to have worked on it so far)

nagisa (Nov 01 2018 at 15:08, on Zulip):

Okay, well, it seems that we won’t get much further on this topic today, so I’ll call this meething adjourned. Feedback, if you have any, on my steering would be appreciated. Thanks for being here today!

eddyb (Nov 01 2018 at 15:08, on Zulip):

heh I wanted to ask you to do this edit :))

qmx (Nov 01 2018 at 15:09, on Zulip):

thanks for driving today @nagisa !

nagisa (Nov 01 2018 at 15:09, on Zulip):

@eddyb that interaction felt a lot like a zulip bug lol, I’m sure I was posting to the meeting thread, and yet…

eddyb (Nov 01 2018 at 15:10, on Zulip):

it wasn't a bug, I edited a previous message

nagisa (Nov 01 2018 at 15:10, on Zulip):

Oh, I see.

Wesley Wiser (Nov 01 2018 at 15:10, on Zulip):

@nagisa I think you did great! :thumbs_up:

Last update: Nov 22 2019 at 05:30UTC