Stream: wg-traits

Topic: chalk-integration


scalexm (Nov 16 2018 at 15:04, on Zulip):

so @nikomatsakis the TraitEngine trait uses ty::ParamEnv and ty::Predicate. I'm wondering what would be the best solution to enable the use of our parallel types for chalk traits::Environment and traits::Goal

nikomatsakis (Nov 16 2018 at 19:55, on Zulip):

@scalexm hmm

nikomatsakis (Nov 16 2018 at 19:55, on Zulip):

a good question =)

nikomatsakis (Nov 16 2018 at 19:55, on Zulip):

maybe TraitEngine approach won't work, seeing how far we've split things

nikomatsakis (Nov 16 2018 at 19:56, on Zulip):

although almost always

nikomatsakis (Nov 16 2018 at 19:56, on Zulip):

the PAramEnv comes from a DefId

scalexm (Nov 16 2018 at 19:56, on Zulip):

That was my thought for the param env indeed

nikomatsakis (Nov 16 2018 at 19:56, on Zulip):

maybe we could give it an Option<DefId> or something

nikomatsakis (Nov 16 2018 at 19:56, on Zulip):

and when it is None we fallback to the old system for now or something, that's quite rare

nikomatsakis (Nov 16 2018 at 19:56, on Zulip):

translating a predicate to a goal seems easy

nikomatsakis (Nov 16 2018 at 19:57, on Zulip):

at least...much of the time :)

scalexm (Nov 16 2018 at 19:57, on Zulip):

We even have a trait for that in librustc_traits

scalexm (Nov 16 2018 at 19:57, on Zulip):

Not as clean as I hoped but I guess this will do for a start :)

nikomatsakis (Nov 16 2018 at 19:58, on Zulip):

sounds like a plan

blitzerr (Nov 16 2018 at 20:12, on Zulip):

Is there a list of PRs I can look at to see how we are doing this? This is interesting to me.

nikomatsakis (Nov 16 2018 at 21:14, on Zulip):

hmm not sure

scalexm (Nov 23 2018 at 01:01, on Zulip):

@nikomatsakis successfully type-checked the chalk initial program (https://gist.github.com/nikomatsakis/95d11e8112bb80c9e862e0a6800a4dea) with "-Z chalk"

Alexander Regueiro (Nov 23 2018 at 15:55, on Zulip):

@scalexm wooh!

Alexander Regueiro (Nov 23 2018 at 15:59, on Zulip):

@scalexm PR coming up soon? :-D

scalexm (Nov 23 2018 at 16:03, on Zulip):

@Alexander Regueiro I’m actually building my work onto one PR which has not landed yet, and another one which isn’t even up yet (because it also builds on the former) lol

scalexm (Nov 23 2018 at 16:04, on Zulip):

plus I think I’d need niko’s universes PR to get region constraints to work properly

Alexander Regueiro (Nov 23 2018 at 16:54, on Zulip):

I don't even know what "universes" are, but fair enough :-)

blitzerr (Nov 23 2018 at 17:15, on Zulip):

@scalexm would you mind posting a link to your first integration PR here?

scalexm (Nov 23 2018 at 17:28, on Zulip):

@blitzerr sorry not sure what you meant

scalexm (Nov 23 2018 at 17:28, on Zulip):

my WIP branch can be found here: https://github.com/rust-lang/rust/compare/master...scalexm:chalk

scalexm (Nov 23 2018 at 17:28, on Zulip):

the beginning of the history is basically https://github.com/rust-lang/rust/pull/55921

scalexm (Nov 23 2018 at 17:29, on Zulip):

plus some unification things, which I'll push in a separate PR for easier reviewing

blitzerr (Nov 23 2018 at 17:48, on Zulip):

@Alexander Regueiro I’m actually building my work onto one PR which has not landed yet, and another one which isn’t even up yet (because it also builds on the former) lol

Sorry, for the confusion @scalexm . My comment was related to the above quote of yours. I am guessing that you were referring to your WIP branch. Thanks for the link. :slight_smile:

scalexm (Nov 28 2018 at 21:06, on Zulip):

@nikomatsakis list of things that need to be fixed

scalexm (Nov 28 2018 at 21:07, on Zulip):

also the whole setup of creating a ChalkContext etc is not very efficient for now, basically because of coherence but we may discuss that later since at least it works (I have some ideas to fix that)

nikomatsakis (Nov 28 2018 at 22:39, on Zulip):

@scalexm is your chalk integration work existing on a branch?

nikomatsakis (Nov 28 2018 at 22:39, on Zulip):

is there a PR?

scalexm (Nov 28 2018 at 22:52, on Zulip):

@nikomatsakis https://github.com/rust-lang/rust/compare/master...scalexm:chalk?expand=1

scalexm (Nov 28 2018 at 22:52, on Zulip):

no PR yet (waiting on unification PR)

nikomatsakis (Nov 29 2018 at 13:58, on Zulip):

@scalexm sorry, I tried to review yesterday but wasn't up to it. Hoping to do so right now this morning

scalexm (Nov 29 2018 at 18:27, on Zulip):

@nikomatsakis Ok I'm basically hitting this bug where two answers to one goal have identical substitutions but different lifetime constraints, but actually these lifetime constraints should be identical, it's just the way they are treated in unification that triggers that

scalexm (Nov 29 2018 at 18:28, on Zulip):

so in nll_relate when we see two regions e.g. '?0 and '?1 we just push two region constraints '?0: '?1 and '?1: '?0

scalexm (Nov 29 2018 at 18:28, on Zulip):

but in my case, I have two different ways to prove a goal, say Implemented(T: Sized)

scalexm (Nov 29 2018 at 18:29, on Zulip):

I have in my environment: FromEnv(T: Sized), FromEnv(&Option<T>)

scalexm (Nov 29 2018 at 18:29, on Zulip):

both imply Implemented(T: Sized)

scalexm (Nov 29 2018 at 18:29, on Zulip):

however when using FromEnv(&Option<T>), we will basically push two useless region constraints as described above

scalexm (Nov 29 2018 at 18:30, on Zulip):

and in turn the solver believes that there are two different answers

nikomatsakis (Nov 29 2018 at 19:13, on Zulip):

@scalexm er, just saw that

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

but I just completed a review of your PR and I had one question here

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

I've got to run now but I'll be back in ~1hr or so and try to read your comments here + respond

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

(really have to go now though)

scalexm (Nov 29 2018 at 19:22, on Zulip):

but I just completed a review of your PR and I had one question here

@nikomatsakis yes that was a mistake on my part

nikomatsakis (Nov 29 2018 at 21:22, on Zulip):

@scalexm ok r+

nikomatsakis (Nov 29 2018 at 21:22, on Zulip):

I .. actually didn't notice if you applied the other nits

scalexm (Nov 29 2018 at 21:23, on Zulip):

@nikomatsakis I did :p

scalexm (Nov 29 2018 at 21:40, on Zulip):

@nikomatsakis related to bullet point number 2 in my above list, I opened https://github.com/rust-lang-nursery/chalk/pull/191 in chalk

scalexm (Nov 29 2018 at 21:41, on Zulip):

(also there is https://github.com/rust-lang-nursery/chalk/pull/184 which has been there for some time, I had forgotten about it)

scalexm (Nov 29 2018 at 22:07, on Zulip):

bullet points 3 and 4 can be left as follow-up items, as well as my above comments regarding region constraints: I'm basically ignoring all region constraints for now

scalexm (Nov 29 2018 at 22:29, on Zulip):

Regarding bullet point 1, I'm adding a simple error message ("type ... not well-formed") for now in the presence of -Z chalk

nikomatsakis (Dec 17 2018 at 20:24, on Zulip):

@scalexm left a review -- curious to hear your thoughts! Beautiful btw.

I should probably get a local build going so I can play around with it, actually.

scalexm (Dec 17 2018 at 20:25, on Zulip):

@nikomatsakis so about the def-id I saw this was @eddyb ‘s concern already with the Reveal field or something

nikomatsakis (Dec 17 2018 at 20:25, on Zulip):

well, Reveal is different

nikomatsakis (Dec 17 2018 at 20:26, on Zulip):

but let me look, are you referring to comments on the PR itself?

scalexm (Dec 17 2018 at 20:26, on Zulip):

Yes

scalexm (Dec 17 2018 at 20:26, on Zulip):

But I indeed did hit some problems with queries

nikomatsakis (Dec 17 2018 at 20:26, on Zulip):

I don't see any such comments

scalexm (Dec 17 2018 at 20:26, on Zulip):

Err

nikomatsakis (Dec 17 2018 at 20:26, on Zulip):

the reason I think that the reveal field is different

scalexm (Dec 17 2018 at 20:26, on Zulip):

Sorry I meant the comment you left

nikomatsakis (Dec 17 2018 at 20:27, on Zulip):

is that indeed the answers to queries are actually different

nikomatsakis (Dec 17 2018 at 20:27, on Zulip):

based on whether things are revealed

nikomatsakis (Dec 17 2018 at 20:27, on Zulip):

or they could be anyway

scalexm (Dec 17 2018 at 20:27, on Zulip):

probably I don’t remember

scalexm (Dec 17 2018 at 20:28, on Zulip):

I just remember that eddyb hacked something in a const-related query

scalexm (Dec 17 2018 at 20:28, on Zulip):

const_eval / const_eval_raw etc

scalexm (Dec 17 2018 at 20:29, on Zulip):

But anyway yes I agree the def-id is an issue for caching

nikomatsakis (Dec 17 2018 at 20:29, on Zulip):

I saw you were clearing the field in const-related caches

nikomatsakis (Dec 17 2018 at 20:29, on Zulip):

presumably in part for this reason?

scalexm (Dec 17 2018 at 20:30, on Zulip):

Yes because otherwise the query was called twice, so it shouldn’t really be an issue but this query emits diagnostics :)

scalexm (Dec 17 2018 at 20:30, on Zulip):

So this was to avoid duplicate errors

scalexm (Dec 17 2018 at 20:30, on Zulip):

Ah and that’s why the query was separated in two halves by eddyb I remember

scalexm (Dec 17 2018 at 20:30, on Zulip):

So that it does not output the error twice when you call it with both Reveal values

scalexm (Dec 17 2018 at 20:31, on Zulip):

About sub-typing I left some comments in a Zulip stream some time ago

scalexm (Dec 17 2018 at 20:31, on Zulip):

But basically: https://github.com/rust-lang-nursery/chalk/pull/191

scalexm (Dec 17 2018 at 20:32, on Zulip):

Me using EqGoal to perform sub-typing was just a hack to get things to work

scalexm (Dec 17 2018 at 20:32, on Zulip):

Since we were not using EqGoal in rustc for now

scalexm (Dec 17 2018 at 20:32, on Zulip):

I was planning to rebase when the chalk PR lands

scalexm (Dec 17 2018 at 20:45, on Zulip):

@nikomatsakis I gave an example of an issue with region constraints in this stream actually

scalexm (Dec 17 2018 at 20:46, on Zulip):

This message

scalexm (Dec 17 2018 at 20:46, on Zulip):

« @nikomatsakis Ok I'm basically hitting this bug where two answers to one goal have identical substitutions but different lifetime constraints, but actually these lifetime constraints should be identical, it's just the way they are treated in unification that triggers that »

nikomatsakis (Dec 17 2018 at 21:05, on Zulip):

@scalexm ok I see you are way ahead of me

nikomatsakis (Dec 17 2018 at 21:05, on Zulip):

shall I land that chalk PR and publish a new version then?

nikomatsakis (Dec 17 2018 at 21:05, on Zulip):

sorry for being so behind :)

scalexm (Dec 17 2018 at 21:05, on Zulip):

Lol np

scalexm (Dec 17 2018 at 21:05, on Zulip):

Yes, I’ll rebase my PR to use that chalk PR

nikomatsakis (Dec 17 2018 at 21:22, on Zulip):

@scalexm ok I'm publishing chalk-engine 0.9.0

nikomatsakis (Dec 17 2018 at 21:22, on Zulip):

in a minute

nikomatsakis (Dec 17 2018 at 21:38, on Zulip):

@scalexm done

scalexm (Dec 19 2018 at 17:33, on Zulip):

@nikomatsakis I’ll update the PR tomorrow

nikomatsakis (Dec 19 2018 at 17:34, on Zulip):

great, I was not trying to put pressure on you

nikomatsakis (Dec 19 2018 at 17:34, on Zulip):

was just nothing for my own sanity :)

scalexm (Dec 20 2018 at 18:56, on Zulip):

@nikomatsakis ping

nikomatsakis (Dec 26 2018 at 18:07, on Zulip):

@scalexm png

scalexm (Dec 26 2018 at 18:11, on Zulip):

@nikomatsakis pong

nikomatsakis (Dec 26 2018 at 18:11, on Zulip):

you rang? :)

nikomatsakis (Dec 26 2018 at 18:11, on Zulip):

I guess pertaining to your PR perhaps?

scalexm (Dec 26 2018 at 18:11, on Zulip):

So I updated the code to use the new chalk version, and to set a DefId on ParamEnv only with -Z chalk

scalexm (Dec 26 2018 at 18:12, on Zulip):

So I thought maybe we should talk about the lifetime issues I encountered

scalexm (Dec 26 2018 at 18:12, on Zulip):

(Lifetime issues regarding the trait solver I mean)

nikomatsakis (Dec 26 2018 at 18:18, on Zulip):

which lifetime issues are you referring to, @scalexm ?

scalexm (Dec 26 2018 at 18:19, on Zulip):

@nikomatsakis I mean the reasons why I deactivated region constraints in rustc’s chalk code :)

scalexm (Dec 26 2018 at 18:19, on Zulip):

Which you asked about on the PR

nikomatsakis (Dec 26 2018 at 18:20, on Zulip):

ah :)

nikomatsakis (Dec 26 2018 at 18:20, on Zulip):

I'm skimming the PR comments now to refresh my memory

nikomatsakis (Dec 26 2018 at 18:21, on Zulip):

I guess you mean this:

 // FIXME: restore this later once we get better at handling regions

=)

nikomatsakis (Dec 26 2018 at 18:22, on Zulip):

you mentioned there were some earlier comments in this topic

scalexm (Dec 26 2018 at 18:22, on Zulip):

@nikomatsakis yes

scalexm (Dec 26 2018 at 18:22, on Zulip):

I’ll be at home in 5 minutes

nikomatsakis (Dec 26 2018 at 18:26, on Zulip):

ok

scalexm (Dec 26 2018 at 18:30, on Zulip):

@nikomatsakis ok so I remember there were two problems

scalexm (Dec 26 2018 at 18:30, on Zulip):

the first one occurs when unification pushes lifetime constraints

scalexm (Dec 26 2018 at 18:31, on Zulip):

@nikomatsakis Ok I'm basically hitting this bug where two answers to one goal have identical substitutions but different lifetime constraints, but actually these lifetime constraints should be identical, it's just the way they are treated in unification that triggers that

scalexm (Dec 26 2018 at 18:31, on Zulip):

so in nll_relate when we equate two regions e.g. '?0 and '?1 we just push two region constraints '?0: '?1 and '?1: '?0

scalexm (Dec 26 2018 at 18:31, on Zulip):

but in my case, I have two different ways to prove a goal, say Implemented(T: Sized)

scalexm (Dec 26 2018 at 18:31, on Zulip):

I have in my environment: FromEnv(T: Sized), FromEnv(&Option<T>)

scalexm (Dec 26 2018 at 18:31, on Zulip):

both imply Implemented(T: Sized)

scalexm (Dec 26 2018 at 18:32, on Zulip):

however when using FromEnv(&Option<T>), we will basically push two useless region constraints as described above

scalexm (Dec 26 2018 at 18:32, on Zulip):

and in turn the solver believes that there are two different answers

scalexm (Dec 26 2018 at 18:32, on Zulip):

(this one problem was the one I evoked earlier in this channel)

nikomatsakis (Dec 26 2018 at 18:41, on Zulip):

the ?0 and ?1 in this case are variables created as part of unifying with &Option<T>, I guess?

scalexm (Dec 26 2018 at 18:41, on Zulip):

@nikomatsakis right

nikomatsakis (Dec 26 2018 at 18:41, on Zulip):

in chalk proper, we do a bit more equality unification on regions, which might help address some cases like this, but doesn't seem like a general solution. I was pondering this plus the ?T: Sized question a bit

nikomatsakis (Dec 26 2018 at 18:42, on Zulip):

in particular I was thinking a bit about the "deferral" mechanism that SLG offers for handling negative cycles

nikomatsakis (Dec 26 2018 at 18:42, on Zulip):

anyway, that's only semirelated

nikomatsakis (Dec 26 2018 at 18:42, on Zulip):

so one thing that I could imagine

nikomatsakis (Dec 26 2018 at 18:42, on Zulip):

is introducing a some kind of "or" constraints, so that we can union together two answers with distinct regions

nikomatsakis (Dec 26 2018 at 18:42, on Zulip):

but it's probably a good idea to push first on figuring out when constraints don't matter or are equivalent

nikomatsakis (Dec 26 2018 at 18:42, on Zulip):

just because it'll be more efficient etc

nikomatsakis (Dec 26 2018 at 18:43, on Zulip):

e.g., in chalk, if we see ?0 = ?1, we actually go ahead and unify those variables, which we don't do in rustc

nikomatsakis (Dec 26 2018 at 18:43, on Zulip):

so in this case the constraints in question would I think just not exist

scalexm (Dec 26 2018 at 18:44, on Zulip):

@nikomatsakis when you say "in chalk", you mean in the rustc's unification code used with chalk-engine?

nikomatsakis (Dec 26 2018 at 18:45, on Zulip):

no, I mean in chalk's unification code

scalexm (Dec 26 2018 at 18:46, on Zulip):

ah sorry

scalexm (Dec 26 2018 at 18:46, on Zulip):

I misread your sentence, I thought you were proposing a solution

nikomatsakis (Dec 26 2018 at 18:47, on Zulip):

well, I sort of am

scalexm (Dec 26 2018 at 18:47, on Zulip):

yes that's what we do in chalk indeed

nikomatsakis (Dec 26 2018 at 18:47, on Zulip):

that is, I'm saying, if we adjusted rustc to behave in this way, it would help with this specific example I think

scalexm (Dec 26 2018 at 18:47, on Zulip):

yes right

nikomatsakis (Dec 26 2018 at 18:47, on Zulip):

I'm going to have to go soon, but I have a question -- do you believe the PR is "ready to land" as is?

nikomatsakis (Dec 26 2018 at 18:47, on Zulip):

(I don't see why not, but maybe i'm forgetting something)

scalexm (Dec 26 2018 at 18:47, on Zulip):

there was some sort of implicit question in my quotations which is "why are we not doing that in rustc" :)

scalexm (Dec 26 2018 at 18:48, on Zulip):

@nikomatsakis I think lifetime constraints can be left as a follow-up for now indeed

scalexm (Dec 26 2018 at 18:48, on Zulip):

about ?T: Sized I was actually thinking that, since we do multiple passes in select_where_possible until we cannot make anymore progress, we could maybe just have ?T: Sized :- CannotProve

nikomatsakis (Dec 26 2018 at 18:49, on Zulip):

well

scalexm (Dec 26 2018 at 18:49, on Zulip):

so this would trigger an ambiguity immediately, but hopefully the next pass with resolved type variables would succeed

nikomatsakis (Dec 26 2018 at 18:49, on Zulip):

I don't think this will actually work quite like that

nikomatsakis (Dec 26 2018 at 18:49, on Zulip):

but one simple thing we could do

nikomatsakis (Dec 26 2018 at 18:49, on Zulip):

is provide some way for the engine to help guide which subgoal is selected first

nikomatsakis (Dec 26 2018 at 18:49, on Zulip):

actually we can do this via sorting now I Think

nikomatsakis (Dec 26 2018 at 18:50, on Zulip):

if we just defer ?T: Sized goals so they are selected last

nikomatsakis (Dec 26 2018 at 18:50, on Zulip):

and perhaps add a CannotProve rule for the case where ?T is unconstrained

nikomatsakis (Dec 26 2018 at 18:50, on Zulip):

I think that would more or less be fine

scalexm (Dec 26 2018 at 18:50, on Zulip):

@nikomatsakis yes, and then we should change rustc's code to aggregate all obligations into a big And goal I guess

scalexm (Dec 26 2018 at 18:50, on Zulip):

which I'm not doing right now

nikomatsakis (Dec 26 2018 at 18:50, on Zulip):

I think if we just make it return CannotProve, that will be reported as a sol'n effectively

nikomatsakis (Dec 26 2018 at 18:51, on Zulip):

I was considering though revisiting that mechanism

nikomatsakis (Dec 26 2018 at 18:51, on Zulip):

this is what I meant earlier when I said something about deferred goals

nikomatsakis (Dec 26 2018 at 18:51, on Zulip):

I also may just not be remembering properly

nikomatsakis (Dec 26 2018 at 18:51, on Zulip):

but I think that CannotProve will wind up adding a "deferred constraint" that can never be discharged..?

scalexm (Dec 26 2018 at 18:51, on Zulip):

@nikomatsakis CannotProve in chalk-engine automatically sets ambiguous flag on the solution

scalexm (Dec 26 2018 at 18:51, on Zulip):

yes that's right

nikomatsakis (Dec 26 2018 at 18:52, on Zulip):

right now we don't have a notion of a delayed literal that is a positive goal

nikomatsakis (Dec 26 2018 at 18:52, on Zulip):

but it could be added

nikomatsakis (Dec 26 2018 at 18:52, on Zulip):

the idea would be that when you reach a sol'n with no further literals remaining

nikomatsakis (Dec 26 2018 at 18:52, on Zulip):

you remove the delayed ones

nikomatsakis (Dec 26 2018 at 18:52, on Zulip):

this is however more-or-less equivalent to altering the selection order I think

scalexm (Dec 26 2018 at 18:52, on Zulip):

@nikomatsakis I see

scalexm (Dec 26 2018 at 18:53, on Zulip):

yes ok

nikomatsakis (Dec 26 2018 at 18:53, on Zulip):

and so the latter might be a cleaner feeling way to do it

nikomatsakis (Dec 26 2018 at 18:53, on Zulip):

though maybe not

nikomatsakis (Dec 26 2018 at 18:53, on Zulip):

I think all of these incidentally (technically?) invalidate the "completeness proofs" of the SLG solver, which assume a "fixed selection order", but I doubt it matters

nikomatsakis (Dec 26 2018 at 18:53, on Zulip):

(at least it's not obvious to me how that would actually lead to incompleteness)

nikomatsakis (Dec 26 2018 at 18:54, on Zulip):

I'm also not sure really it's not like I reviewed said proofs in detail, I just remember some notes about it in some papers

nikomatsakis (Dec 26 2018 at 18:54, on Zulip):

that is, I don't really know what "fixed" means

nikomatsakis (Dec 26 2018 at 18:55, on Zulip):

anyway I think that choosing a going selection order is going to be somewhat crucial in controlling explosive runtimes in certain cases

nikomatsakis (Dec 26 2018 at 18:55, on Zulip):

e.g., if you have unconstrained type variables, you want to look for trait references that are not going to wind up generating tons and tons of solution for them

scalexm (Dec 26 2018 at 18:55, on Zulip):

right

nikomatsakis (Dec 26 2018 at 18:56, on Zulip):

?T: Sized being a good example of a very bad choice :)

nikomatsakis (Dec 26 2018 at 18:56, on Zulip):

I imagine in practice we might have some simple heuristics that look at the impls for other traits and try to judge similar qualities

nikomatsakis (Dec 26 2018 at 18:56, on Zulip):

in my ideal world those heuristics live in chalk and are quite general

nikomatsakis (Dec 26 2018 at 18:56, on Zulip):

but I haven't given it much thought

nikomatsakis (Dec 26 2018 at 18:56, on Zulip):

there has to be prior work on this

scalexm (Dec 26 2018 at 18:56, on Zulip):

yeah probably

nikomatsakis (Dec 26 2018 at 18:57, on Zulip):

I talked some to Will Byrd (of Minikanren fame) about this

nikomatsakis (Dec 26 2018 at 18:57, on Zulip):

the tl;dr was we'd have to gather more data about what happens in Rust before we could figure out what would be best

nikomatsakis (Dec 26 2018 at 18:57, on Zulip):

which seems sort of obvious

nikomatsakis (Dec 26 2018 at 18:57, on Zulip):

anyway, I'll go ahead and r+ your PR

nikomatsakis (Dec 26 2018 at 18:57, on Zulip):

I'm going to disappear till tomorrow soon, still on vacation

scalexm (Dec 26 2018 at 18:57, on Zulip):

I don't think we are in a hurry merging this PR, + it does not seem to be affected often by merge conflicts

scalexm (Dec 26 2018 at 18:58, on Zulip):

we could wait a bit until we have more time experimenting with things

nikomatsakis (Dec 26 2018 at 18:58, on Zulip):

ok; regardless, it feels like it'd be great to get it landed as a foundation to build upon

scalexm (Dec 26 2018 at 18:58, on Zulip):

I'm fine with both

nikomatsakis (Dec 26 2018 at 18:58, on Zulip):

but we do have to figure out how to track all the FIXMEs and things most effectively

nikomatsakis (Dec 26 2018 at 18:58, on Zulip):

I am hoping to that we can create a kind of "roadmap" for further work

scalexm (Dec 26 2018 at 18:58, on Zulip):

yes

nikomatsakis (Dec 26 2018 at 18:58, on Zulip):

I might put some time into that over next few days, trying to figure out what that even means :)

Alexander Regueiro (Jan 02 2019 at 16:22, on Zulip):

@scalexm so is work to integrate lifetime bounds into Chalk on the way?

scalexm (Jan 02 2019 at 16:23, on Zulip):

@Alexander Regueiro not yet

scalexm (Jan 02 2019 at 16:23, on Zulip):

We need to open issues first, and to have some kind of roadmap

Alexander Regueiro (Jan 02 2019 at 16:33, on Zulip):

@scalexm ah okay. waiting for Niko on that, or just plodding along, and haven't got to it yet?

scalexm (Jan 02 2019 at 16:34, on Zulip):

Both actually :)

Alexander Regueiro (Jan 02 2019 at 16:46, on Zulip):

okay ;-)

nikomatsakis (Mar 22 2019 at 21:40, on Zulip):

@scalexm, long ago you wrote:

I saw that there is (in the TraitEngine trait) now a normalize method -- did you do something to resolve this? I imagine there still exist a lot of explicit normalization steps

nikomatsakis (Mar 22 2019 at 21:40, on Zulip):

I'm kind of trying to pull together a comprehensive look at next steps

scalexm (Mar 22 2019 at 21:41, on Zulip):

@nikomatsakis I did not try to remove any of the explicit normalization steps

nikomatsakis (Mar 22 2019 at 21:41, on Zulip):

OK.

nikomatsakis (Mar 22 2019 at 21:42, on Zulip):

Well, I gotta run, but I have some hand-written notes, and I'm going to try to pull them together

scalexm (Mar 22 2019 at 21:42, on Zulip):

The normalize method was ore-existing to my set of PRs, introduced in @csmoe’s PR

nikomatsakis (Mar 22 2019 at 21:42, on Zulip):

ok

nikomatsakis (Mar 22 2019 at 21:42, on Zulip):

I figured as much

nikomatsakis (Mar 22 2019 at 21:42, on Zulip):

but just wanted to confirm

scalexm (Mar 22 2019 at 21:42, on Zulip):

Was it clear to you what the problem was with lifetimes in unification?

nikomatsakis (Mar 22 2019 at 21:42, on Zulip):

yep, I remember now

scalexm (Mar 22 2019 at 21:42, on Zulip):

Ok good

nikomatsakis (Mar 22 2019 at 21:43, on Zulip):

I'm going to think about it over the weekend and on Monday and hopefully have some proposals :)

nikomatsakis (Mar 22 2019 at 21:43, on Zulip):

I mean the options are basically the same things we wrote before I thnk

nikomatsakis (Mar 22 2019 at 21:43, on Zulip):

at least in short term

Last update: Nov 12 2019 at 15:30UTC