Add a meeting Rate this page

A

Recording now.

B

uh

A

Should we look at the project board.

C

Yeah, do you want to share the screen.

A

Sure why don't you share yours um all right one. Second, since you're gonna have the better sense of the update for each item.

C

Can you uh and have screen sharing.

B

Oh.

A

Stupid I'll just make you a co-host.

A

Or something.

A

Okay, now your host.

C

Now uh that looks about right, so we have first part of the migrations merged in which is our basic first pass uh I'll, be creating a pr for precise migrations. Hopefully today, so I've been.

A

Working on.

C

Precise migrations.

A

Okay, that.

C

Means uh basically, if food.x is captured and food artix is the only thing that needs to be dropped. uh Then we don't do migration.

D

Okay,.

C

So it's implemented, I've just been caught up with the reborrowing and I haven't got a chance to just switch over and build that and just yeah. um So hopefully that goes in uh reborrowing is in the works. I have a question around uh I'll I'll I'll.

C

uh Let's do that later after this after the update uh roxanne's working on this, I think there is some basic things working uh so yeah she's working on getting the fake reads in.

A

Mm-Hmm she's not here today.

C

This is not like failing to.

A

Let her in.

C

No, no, no! She is yeah. She has another meeting uh with her school compiler course stuff at the same time, so this was blocked on the pr that got merged in recently, which was the immutability one, because it was generating fake warnings, well incorrect warning. So hopefully this goes in soon. uh Chris is working on diagnostics, on updating that bug and uh actually updating the bottle checker to use the diagnostic information. That's now available, so yeah first this and that and uh throws going to start working on uh looking into what. Where is this?

C

Oh, oh sorry, uh basically doing significant uh drops and dealing with insignificant disruptors. So that's what those gonna start working on, and he also has just adding some more test cases to our test suite with this feature yeah. So after that, I think the main thing that will be left is a little bit around unsafe.

C

uh This should not be hard to implement and then adding checks for uh specific, auto drives.

A

Yeah, that's the most tricky one.

C

Yeah so hopefully in the next couple weeks we see a lot more of these just closing and coming to an end.

B

uh Yes,.

A

Okay: okay: this is really cool. Yeah, okay,.

C

Okay, now let me just show you about the bug I was talking about.

A

At what point I'm just thinking my biggest fear still is that we're gonna find out that everything works from a like correctness, point of view, but we wind up creating closures with way too many fields or something, and I'm wondering at what point? Are we going to be ready to do an analysis to figure out? If that's the case, I guess we probably.

C

What we can uh do, okay, so I don't see, what's stopping us from doing that, right now, right, because what do we like? Okay, so we can do two things either we can use our first pass of migration analysis to just give us a basic sense of idea as to what needs to be dropped. uh What might on like? What's the basic difference in size, difference and second, question is: do we really need that?

C

Because all we need is results of min capture analysis when this feature is enabled, and um basically that will tell us the number of things we're capturing and we can compare it to the size of upwards mentioned.

A

I think that's right and we could even run this like we could write a custom branch that doesn't even turn the feature on right. It just runs min capture, analysis and warns. If it's you know.

C

Exercise.

A

I.

C

Don't know.

A

We should pick some ratio, but let's say more than ten percent bigger or something, and then we could do a crater run. You know see. How often does that even happen.

C

Yeah like since we yeah that's not going to be hard to.

A

File an for that uh I can do it if you want but yeah. If we, I don't, think it's urgent, it's just. I would like to track it.

C

Okay, yeah, that makes sense. Also, let me move the one you just added onto the board.

C

Unless I don't yeah.

A

One more issue then, um assessing size overhead from this feature, uh let's see as discussed today, we should create a custom lint that checks how big a closure is when using this feature, this can be done by looking at the results of min capture analysis.

A

Even if the feature is disabled and compares it to the size of a closure using only up far as mentioned, the lint could flag and I could trigger if the size increases by more than n percent, and we can create a run to get a sense of how often that something like that.

C

Okay, yeah, it would be. I I feel like this is going to be an interesting problem because for small closures even like, like let's say you have a closure that prints the x and y corners of a point now earlier was capturing just p. Now it's going to capture p dot x, beta y, which is 2, which is 100 increase.

A

Well but note that I said the size, I would prefer to um not measure the number of fields, but the number of bytes.

C

Okay, which.

A

Actually, wouldn't probably be different in that case,.

C

Yeah and this game won't be.

A

So but yeah I don't I don't know we may have to refine it. It's just something to keep in mind.

C

Okay, uh let's just add that to the board as well is that here, okay.

C

Okay, so yeah, I guess that's the update. uh One thing I was curious about was when we, so we have something like this. So what happens if I not uh yeah? I think this was another issue, but I guess this question is sort of similar is what happens? uh What do we want to do if this is a copy type, when we do do a dereference in case of a clause or a move lawyer.

C

So what we talked about was like this is essentially star b dot zero.

C

So, since it's getting moved, we will drop this to b, regardless of this being a move closure or not. uh Now, if I drop the drop this down to b, why is this getting moved.

D

0 will.

C

Be well, it's not going to be moved. It's. It looks like it's a copy.

A

It's going to be a shared reference today.

C

uh Yes, today, it will be a shared reference. You are right, you'll.

A

Have a shared reference rb.0.

C

Yes, but now, if we look at uh if this was moved, then that will create a move for b right.

B

If it would move yes.

C

Okay, so let's just try to, but I was working.

D

On.

C

Okay, it's uh it's. A copy b is not a copy type, but star b dot. Zero is a copy type. I.

A

Know but I'm saying the only reason are you saying if it were a move closure.

C

uh Let's consider both cases because I'm like I would have to handle both. So let's just kind of write this out: okay, so a non-move. This is, I mean.

A

That's an interesting point of oh, it only moves cut off at d refs. Yes, so if it's, if you just wrote the closure literally, as you wrote it now, it's gonna borrow star b, zero.

C

No, it's gonna bottle b. I don't think so because.

C

Actually, you might yeah, I think, you're right, because that's that's what I was testing.

A

Because there's no move, so it's not gonna! Oh.

C

Yeah, because uh yes, because uh we just we can just copy this and an immutable bar, will suffice for that.

A

Right yeah, but if you make.

D

A move.

A

Closure that's different.

C

Yes, that will, oh sorry,.

C

And listen nicely.

C

Yeah, so it will then capture.

A

Yeah.

C

What happens if I just put.

A

But I think if you used our algorithm, that I proposed.

A

A move closure here would still.

A

Borrow b.0.

C

um This shows up, uh so that's that's what I'm trying to figure out what needs to happen there, because when this shows up, we see it as a consume of b.0, but a copy type right. So this is consume.

C

Star b.0 and copy, so it's not an immutable thing now, since it's a dereference and we do want to consume it, that their question is, do we drop the dereference or do we just store star b dot zero as a immutable.

A

I.

C

Would treat.

A

That as if as if it were a shared reference, so if you see a star b, dot, zero.

A

Okay, sorry, I know I'm understanding your question. It's a d reference not of a maybe we didn't talk in enough detail about what happens with box yeah, because.

C

Box will now need to get moved into the closure if we drop the data off.

A

Okay, give me one: second, I have to run to the bathroom. Okay, all.

A

Right.

A

You.

A

um Do you have the link to the hack md we we uh we had before? Yes, one second.

C

Because.

D

I want to heal it up and start it's just.

C

It's open.

D

Hours, wait: I'm okay, I'm not gonna! Probably.

C

One second, is, uh I always lose weight. I can see things like where's chat. Okay, I don't know, uh zoom shows to windows and it always confuses me. Okay, I sent it in the link and if you want to share, I'm gonna reclaim.

A

Host.

C

Okay,.

A

Well, I don't actually care which one of us shares the screen, but.

C

Might be there for you to because typing it along so I'll.

B

Stop to new window.

B

Share.

B

Okay,.

A

So, okay, so your example: let's put a little note to the bottom here.

C

Let me share this one. Second, uh I I added the.

A

Paste your example that would be awesome, but otherwise yeah yeah I'll I'll. Do that.

C

That's a link but I'll copy. It.

A

So what we said before, if I scroll up here right as we said.

C

So if we look at.

A

This, if you have ref access to a place p, that involves a draft of an ampersand reference.

A

You will have a ref up bar for p, um so right- and here I guess this is what I was really looking for. uh This was our previous algorithm right.

A

This is still familiar to you.

D

Yeah.

A

Okay, so what I'm realizing? Is we didn't these? These cases don't apply to your example, because it doesn't contain a drf of a reference. It contains a draft of a box.

A

um I mean there is also the question of what the mode is here, but, let's yes, let's say that we treat a consume of a copy type as mode equals, ref, okay, even so it still doesn't apply.

A

Because there is no draft of a ampersand t only a draft of a box, but my belief is that we actually want that algorithm to apply. I think we probably want this to be a even though it's a move closure.

A

We probably want it to be taking a reference to b.0 just like it would if it weren't a move closure. This is maybe debatable, but this so.

C

There's other things, I guess so, my okay. If it takes a reference, I guess that's fine as long as it doesn't move.

A

Yeah I'm debating now because so I'll tell you what we don't want. Let's look at a few examples.

A

I think we do so nico's hypothesis, previous example. Let's call this e.

A

Zero wants to capture star b 0 by ref.

A

Is that really true? Now? Actually, that's probably just not true, so no.

C

I I feel like.

A

We need to, I think this is wrong, because the reason we don't want to do that is.

A

um It would limit the closure to not outlive the local variable b and that's the whole point of a move. Closure is not to have that limit um right.

C

There will be a distinction between copy versus move type, sorry copy versus not copy type as well. I think because if we just do star beta0 by ref, we cannot, if this was let's say instead of an integer. This is a string. We cannot just get around by having a reference right.

A

Well, it definitely would do that too, and that's that's not great also, I guess, but that's maybe okay, because there may be other distinctions, but regardless this is absolutely not what we want so so, in that case, I think yeah. The behavior here just is going to be capturing b. That's all.

C

uh Okay,.

A

So behavior just capture b, the algorithm above, is correct um if they wrote it like.

A

I guess, there's another interesting quest. No, it doesn't really matter the only if you didn't want that. You would have to do something like this.

C

um Oh, I'm sorry! I actually are you sh, I don't. Oh yeah, you are machine. Okay, zoning, weird.

A

I mean really, you just remove the move, but if you didn't that's the right thing, but if you didn't want to capture beep, I move you have to make a reference outside. This is the way it is.

C

Yeah that makes sense I'm trying to also this would also mean that the closure is now so a thing about copy type here would be, then disclosure we want to make sure is not fn. Once one more.

A

Cuz.

A

Okay, sorry uh yeah, but I don't think this closure will be fn once.

C

Like if you look at e0 the day, we thought we mentioned that uh I guess with the move, yeah, even with the move. If the closure captures just b, actually no it will, it should still be fn. Once then.

A

No, it's not going to be fn once under any version.

C

uh So here's my thought process, and so it's specific to the fact that uh the type that's being used here is a copy type. We are moving the b box to the closure and closure never gives up b away. It just gives up the value b, dot zero, which is copied into underscore b.

B

Correct.

C

Which you can do as many times as you want, because the ownership is not given away every when the function call happens, correct or sorry. Closure call happens, correct yeah, so this should be. It is not fn once no. This is f in one. Send right. No.

A

Oh sorry,.

C

This is not fn one sorry. This is oh, I I'm meaning to say this is not fn. Once okay, sorry, I've been okay, I've been misspeaking, sorry.

A

Yeah I figured we were having a boolean error here, yeah and and what that tells you is- and I think we said this the last time, but if not, this is a good example of it in order to decide if something is fn once or not you don't look at the things it captures. You look at the full places that it actually.

B

Uses.

C

Yeah, okay, yeah, so I think this is what I have and we can go into discussing about the macro. If you want to do that today,.

A

Sure, there's not that much to say about it really, but um just that we should add one. We decided in the lang team meeting, we'll call it capture.

A

uh I think we probably want to start with the simplest possible macro, which is probably something like.

C

uh Where are you adding? This is that on the.

A

Issue, I'm sharing my screen about issue number 40.. Okay, sorry yeah! I think the simplest possible macro is something like uh you know.

A

This isn't great because it doesn't support a trailing uh trailing.

A

um Now I forget how you do this syntax, ampersand parentheses, dollar parentheses, x,.

A

The comma, something like that: okay.

D

I will we'll try to figure this out something like this anyway. uh I think I put.

C

No, no there's equal number of brackets no brackets.

D

Match I think this is right um yeah, but the re.

A

The reason I bring this up is uh I I know the main thing is I'm using ident here, which means that you can. You can write capture y, but not like capture zero or something.

C

Oh, I see yeah.

A

I actually think the latter is an interesting extension um because, and I think it would actually just work like if you were, if you had, if you were using. Let's say you were using.

A

uh Like given this example,.

C

That would just capture.

C

X.

A

Right.

A

This is not a very exciting example, except to say that um you might have one where you use a bunch of subpaths, which would otherwise be three different fields, but we capture only the.

C

Essentially, an optimization the user can make.

A

Yeah exactly.

C

um I have only one concern here is when we say the word capture. uh It doesn't indicate that we are forcing a move here. It could just be, but we're not forcing a move.

A

Sorry we're not forcing a move.

C

Oh right we're forcing bye-bye: okay, yeah, nevermind, sorry.

A

That's we're just saying what path gets captured, not the way that it gets captured. Basically,.

C

Yeah, that's fair.

A

um Anyway, I I think we probably start with just identifiers, maybe, but it's kind of interesting, though.

C

Like the change would just be to change iron to expert right unless.

A

Yeah, basically, basically I mean, if you have arbitrary experts, it's a little weird because you can put stuff like you know things that are not places I would sort of prefer. We don't have a place and we don't have like a expert that that forces it to be a place, but that would be my preference. um You could write the macro. I mean if you wanted to get all ambitious.

A

It seems a little unnecessary I'd, probably.

C

Leave.

A

It this way now. I would like at some point to be able to write like I I'm kind of interested in extending this macro to support modes like this, I don't know if that's the symptoms.

C

I would want.

A

But you know something that does I capture this, but I don't I clone it. I capture a clone, but more about that later I don't know what that looks like yet.

C

Yeah yeah, I think I mentioned it- has a sim. Well, it does like it supports these features like you can alias things and stuff as well.

A

Right.

C

So yeah.

A

I know c plus plus capture clauses. Are, I don't really know all the details, but I know they're got more more power. um Yeah.

C

Okay, I think that is that I just had the box question. Hopefully next yeah, hopefully I'll create two vrs by the end of the day or.

D

Locked on anything.

C

Reviewer later I don't think so, I think everything is now. We have this long list of finished tasks right, yeah, all right issue, yeah the issue account has, I wasn't expecting to get to 40 plus issues but okay. This is.

D

Yeah, this makes sense.

A

Yeah once you start.

C

You.

A

Start to find yeah.

C

This repo has worked.

A

Out really well for us, I think.

C

Yeah, I think so all right.

A

Thank you thanks, aman we'll see you next week then ping me with.

A

Reviews.
youtube image
From YouTube: 2021-02-03 RFC 2229 Sync

Description

No description was provided for this meeting.
If this is YOUR meeting, an easy way to fix this is to add a description to your video, wherever mtngs.io found it (probably YouTube).