Add a meeting Rate this page

A

So we're coming in a few minutes: late, that's okay!.

B

You're driving this mutant, yeah or I mean it not sure he's like. Let's see a little.

A

Bit so, okay, here's a paper for taking live minutes. um Well, I, don't know I, don't know because you guys already started so I. Don't wanna like interview too much, but.

C

I would.

D

Be.

A

Curious to see yeah.

A

There's I guess two: there was the three proposals right and it seems like the most interesting thing is to discuss I.

E

I think the difference is between one and two are sufficiently minor, that we can just not worry about them for now. So it's really an edge case on whether you're allow, whether you can long jump across C unwind and whether this is guaranteed to always work but I. Don't think anyone's really going to do that in practice for using C n wines you're almost going always going to be calling code that throws exception is rather than long jump.

F

In particular, that the very slick claim that was stated start before the video is restarted, recording started was that proposal to is strictly better than proposal one, and we spend a little time discussing the details. There.

B

The.

E

More interesting question is the difference between a purple zone. Two and three.

E

With proposal to.

E

Extern C means no one wins, and if you try to unwind out of an extern see you get, you be.

A

um

E

However, long jump out of an extern see so long jump out of an extern, see bait always works under all proposals. As long as you have no destructors on the frame that is gets.

E

Ya.

E

So with proposal we add a separates C unwind, a bi which says this may unwind and if you compile with panic, equals abort, C unwind will generates a small wrapper function which will catch the exception and abort.

E

So this ensures that, if an exception somehow escapes into Russ code and Paul's with panicles Awards, we get an abort instead of you, B.

A

We would not work for a first unwind and.

B

We do that I.

E

Mean you could argue that all all proposals are sound and it's the users fault for not catching exceptions at the source. Oh.

C

No, this is.

B

All.

E

F F, I and.

B

If any.

E

Oh, yes, also you're right, sorry, if a rust right, panic right. So this is the first line of the table in the blog post. If a rust panic reaches a an extern C boundary and we turn it into an abort with N equals and whines yeah.

B

In that respect, if you human of non ones and then it's fine, it sounds like your boards yeah.

E

So I'll give a quick overview of proposal. Three basically proposal: three works.

E

The idea of proposal three is that we keep things simple. We just keep extra and see when you have pan equals unwind you're allowed to unwind through it when you have an equals, abort you're not allowed to unwind through it, and it's your responsibility as the user to make sure that if you call code that full throw exceptions back to you, you must compile an equals and whines. This is basically the same thing as if you write C code that cause you cuz cause that made through an exception. You need to use F exceptions.

E

Otherwise you have you be.

B

Did you do any size, comparisons on future.

A

We did but they're not really relevant because they are well and all of these proposals.

A

If, if you use external C, we don't do we basically don't do anything. If you just pinnacles of work, an extern c, we don't add unwinding tables or machinery. um There were some earlier drafts where we were considering. What would it be like if you did have like a shim to intercept unwinding and things like that and.

C

In.

A

Particular the question was because, if we were one of the advantages to having C unwind is that you can only insert that you have a narrower set of places to insert shims like that. So we were considering what, if we put the shims at all C sites, how bad would that be and I did make a version of the compiler that did that, but we didn't end up going with that proposal.

A

Behind remember all the reasons why, but that would not be this. That would be a different version and this like, if we say that it's UV, then you don't need to have a shim. So there's really no overhead. You can still a him as a debug mode or something to help people catch it in practice, but in release at least it.

E

Would be done, I think the only size difference would be that with proposal you could it's optimized waste, some landing pads if lbm things there and reachable.

E

Because we mark externally is no unwind.

G

So that would also be possible if proposal 3 was extended with an no unwind attribute right, yes, III I think is mentioned in the blog post. No.

E

It's not mentioned a blog post, but we did discuss it. It's yeah.

D

It's send the heck, M denotes how that yeah. That's what I saw so.

A

Wait, let me make sure interesting what you're saying you're saying: if you have panic, equals unwind yeah and you call some C functions and we're saying that they then nowadays they might have a no unwind attribute.

A

That would allow us to optimize the waste and landing pads potentially, but in proposal 3, for example, they wouldn't have that attribute unless some other mechanism were added and therefore we would keep landing pads right, yeah, okay, that seems right, but I do also think that, like for fuchsia, for example, the people who care the most about that are compiling obtaining support in any case, so they.

C

Don't have my knee pads in.

A

The first place to be optimized away.

E

So in the last meeting we went into a bit of discussion of what would it take so if you open up the hack indeed back in D, you can see some examples.

E

You get there's a code block for proposal, 3 code block with proposal to with proposal 3. If you call so we with proposal 3, we added some some attributes.

E

These are not part of the proposal, just an exploration of what we might want to add in the future.

E

There's a no unwind attribute, which is basically C++, no no accept and then abort, if n equals a board, which basically is this equivalent to the wrapper we have in proposal to so.

E

You can see base B you if you have also.

E

Proposal to has a slight advantage in that it allows us to mark function, pointers as not the morning and to get bats in proposal. 3 you'd have to add attributes on types which is not possible yet.

B

Not very difficult, you have to run yes, and then there.

E

No unwind function the function pointer of no one will actually, it isn't exactly the same type as a normal function pointer, so it's a whole other mess. This is all like hypothetical I mean.

A

But like you're saying, if we added attributes to functions to declare them as no except not throwing exceptions, then we could do some optimizations, but they wouldn't propagate through function, pointers unless we extended it to the type system.

A

Okay,.

B

Right: okay! Well, you can also reason about well. This function cannot possibly line so I can I can use that in my reasoning for examples not just for optimizations, yes,.

E

So the main difference is if, if you just have an extern see so the conclusion we reach is that proposal two is better if the user gets his annotations right. That is, if the user properly marks functions that actually do throw an exception as C unwinds, then everything works. Fine on you get because you get you be F next receive under proposal under proposal. You get you be if an external C function and whines.

B

Mostly you get on the boards.

E

It so it depends on platform, I think on Linux you're, probably going to get an abort because well no actually with panicles know. What's most likely to happen is that your code will continue on winding, but your destructors will get run, which is terribly unsound.

A

Can you spell that out a bit more I'm against which thing here saying proposal two is better than what first.

E

Of all.

A

So.

E

Proposal two is better if the user has properly annotated all the functions that might throw a foreign exception as unwind you're.

A

Saying proposal to ISM it's it's better than having like a C unwind a separate, see. Online API is better than just unified, C API and yeah I'm. Okay,.

E

Because so under proposal, three it's simpler because we just have a single, a single API, where and and the user it's easier for users to just decide. Okay, my suppose my signals code that I'm calling might throw an exception so I just need to make sure it's compiled with panicles unwind and it will just work I. Don't need to worry about annotating. My FFI calls correctly.

A

I was hoping we could make I'm making a little confused. Can we make better a little more precise, like Sen, mind ABI.

E

Is less less.

A

Error-Prone, I think.

E

We're.

A

Prone to have to.

E

A be either one so I feel it's less error-prone.

E

If.

E

It's okay, so if the user makes a mistake, accidentally leaves and accidentally calls a function that does for an exception, but calls it via extern C. They will get you be under proposal to, but not under proposal. Three.

B

If you have excellent excellent C function that you are exporting to B and then C calls that one.

B

We are to it words.

E

No notice I'm talking about you calling C++ code in that C++ code rings and except an exception. Oh.

B

Into you yeah, so we're talking about in words. No, it's not exports. Yes,.

E

It.

A

Seems like we're saying oh I,.

A

Mean we're basically talking about this.

B

Is a foreign exception I.

A

Think you are calling the previous meeting. We discussed some cases where there was surprising foreign exceptions as well. We're like sources of this happening like.

E

C++ code runs out of memory. It throws a bad, a log exception which tends to come as a surprise, because so in what in this particular rust bug, we had the C++ exception, just unwinding all the way through dress codes and causing the seg fault, because catch on one couldn't handle foreign exceptions properly. This is fixed now, but the point is, you can sometimes get surprise exceptions where you do you don't expect them to.

B

Take.

B

Seems no one I.

E

Did respond to that I think it's possible to change catch and whine to actually catch foreign exceptions. Can.

A

We say that in more detail where what was.

E

Basically, code may rely on catch and whine to actually catch exceptions, to do some fix up, and then we throw that exception. It's the same thing you do with a drop guard, but it's done with catch a mine. Instead.

A

Okay and at the.

E

Moment, catch and wined ignores foreign exceptions. It just lets them unwind through, but this is relatively easy takes.

B

Does that relate.

E

Related issue: okay, yeah.

A

Okay, this, it seems like to me like the heart of this matter, is if we, if we adopt a unified ABI, then.

A

In some sense, it's easier to tell people what to do. On the other hand, the consequences of failure- I, don't know you have to make sure your panic equals online and Panik aboard things are lining up with F no exceptions that you're expecting um if you're linking against foreign code and we're what are the other like. What is the we're giving up some kind of optimization opportunity in the case of panic unwind, although I consider that pretty minor, because it's probably an either it will still have landing pads.

A

It's only around these narrow areas where you're only calling.

E

We lose the ability yeah, it's baby.

A

I mean I think they like sea panic. It seems like there's a reasonable concern that if you do see panic equals aboard, you can have some libraries there that are like due to their use of foreign exceptions, are kind of incompatible with sea panic, equal support, and we just won't know essentially.

E

Right, yes, because this is the panic mode is not reported in any attributes. I think it's not available in Co G.

A

Right so like they invoke C++ code will throw an exception and compile it with C panic equals a board at C++. Code throws the exception. Instead of catching it, we we now have UB, and so you really don't want to use really don't want C code or C++ code and panic equals abort. Unless the C++ code is combined, proud with F no exceptions which or.

E

You've written the proper catch clauses around all your entry points, yeah.

G

And I know I've made this point before, but just like coming from the world of integrating C and C++ and rust in embedded situations and whatnot like that is exactly the behavior. That I would expect is that I would need to make sure that my rust compiler options line up with my C and C++ compiler options.

G

So it may feel like a bunch of rules and special cases, but I think it will line up with a lot of people's expectations.

A

Right and when really when we say compile with a few exceptions, what we really mean is don't throw exceptions like it's also I'm sure you'll be and C++ liam to compile, with f no exceptions in form. Yes, yeah.

G

If you're lucky, the the compiler will throw an error but not guaranteed.

A

The upside, then, is that it's just we haven't gone it all into like some of the annoying well I, don't know how many corner cases there were I guess the main thing I was thinking of I. Guess we kind of sized up the corner cases around like mmm calling Reed and having pthread certain platforms when it read is canceled they'll throw an exception, but I guess those are all forced unwind cases. Yes,.

E

Basically, the consensus with force and wine is that, while the cake is no consensus but we're proposal, three for stand, wines will just work. If you compile with an equals and wines.

E

Otherwise, they will only work if you have no destructors.

E

It's it's, it's a mess and you really shouldn't be using Peter cancel with Russ code now.

A

Arguably, a tall order.

E

That, yes,.

A

But I don't know, I I mean I. Think that's I, think it's okay, that it works. If you don't have destructors like that's, some people may need to use it for specialized reasons and or other. If you use panic, equals online.

E

I.

E

Don't think this much else to to say really.

E

There are the advantage of proposal, too. Is that if you get your extra annotation right, external annotation is right, then your codes works, whether it's called with an equals on one of N equals boards I.

B

Think that's very good.

B

Ideally, switching this wing Bowflex shouldn't suddenly make your own : son.

B

Another advantage area, like the amount of functions that we have to make that unwinding, behavior, defying 4 or the strategy, is smaller, because we Accord enough the functions to a special C on an island ABI.

B

So there are a few fewer functions that would be effective if we switch things for the same respect. That one needs me to use.

E

The most, however again, the downside here is that, if you get a surprise exception from C++ code, like we had in that issue, where suppose was code runs out of memory throws a bad a lock exception that honestly, nobody was expecting it unwinds into your US code and you've got you be.

E

Arguably it's programmer because you should have caught the exception or something, but it's the sort of thing that would happen.

A

Central I didn't quite hear what you said before: you're just saying that there's a space advantage to not having unwind or something.

B

So so, if so, presumably, if we have the SE unwind API, then then we have have to sort of define I want the image to be the native.

B

C unwind, then this year's remind API which I still use has more freedom to change the strategy.

A

One has more freedom to change the.

E

Strategy, the CAGR so I think what central is saying is that if Russ decides to use a different unwinding of the implementation, we only need to add translation ships on C and wine entry points. Although extra C and entry points nicely right, yes,.

B

Not not so few word, but the amount of functions that use online with my guess is they would be fewer okay, and so it would impact keyword, function using less code.

A

Yeah, that's an interesting twist.

B

So right now favoring those old one stuff.

A

I'm gonna try to collect the famous I, don't know what I think but I think that's an interesting point. So, like.

A

The other I mean.

A

He's gonna skim.

B

Our notes from.

A

Before.

A

Kind of do you remember we had when we came up with this like proposal, one two: three we had like a long hacking, D or something it.

E

Was a paper you see if I can find it.

D

Oh, where I got the table from yeah? Yes,.

E

I think.

D

It's this one.

E

Okay found it.

D

It's a bit confusing because I think proposal, one and two who might have gotten switched from how we're.

E

A yes yeah, so I think proposal. One is option. One see that.

B

Shoe is option one for the original version yeah thanks for simplifying that they would like very much understand.

A

The thing I thought: okay, one of the things we did before was to talk over some of the scenarios like long jump, error recovery and how? How would you handle each one C++ exceptions that propagate.

E

So long Chum, the idea of long jump, is that if you don't, you can long jump over externs teachers, fine under all proposals. The only requirement is that there must be no destructors in the frame that you're skipping. Otherwise it's you.

A

Be.

E

So if you're.

A

No than this library.

E

That uses long jump, Lua somewhat library.

B

Is mostly about legs, mostly.

E

About sorry, let.

B

Me say: quote:.

E

It's used quite extensively in Lua and you'll often have callbacks that get long jump over.

E

But, for example, the same rule applies to P thread exit. If you call P bed exits your you can only do that if there are no active D structures on the frame on the thread stack that you're exiting and.

D

That's only true on that's that's.

E

True, everywhere, you're freeing the stack without running these structures. So it's it's as if you long jump over this whole stack got.

D

It only one thing: has it as a unwind, but okay I.

B

Used like raising system explores incredibly strange.

B

Okay.

E

Yes, we're really supporting it, because some C libraries and um it's I.

A

Think I also think Ruby does there's.

A

So the other thing would be if anyone's ever asked for this, but C++ exceptions propagating and well you kind of already covered this, but we said you would use.

A

The unwind puzzles 1 & 2, you would. You would use C unwind avi to signal that.

E

Whether it's a simple, closed exception on running through yo code, or if you want to let a rust panic leak out into C++ code.

F

In this cute case, here, Carly on describe the you're. Describing are you including the case for allocation from syphilis or an exception or retreating that, like a separate case, we're like that's a.

C

Tree we're saying that.

F

You should be checking like sepia separate means and not relying on that exception mechanism.

E

It's it is included because he must posts. The bad dialogue exception is just a normal surface, what's exception. So from that point of view you really Shh. Ideally you should be handling it before it reaches your rest code right. Oh, it.

F

Was not rich be him way. First, okay,.

E

Translated into an error code or something or just use, C unwind and Lydians unwind through the rest code as well, yeah.

F

I guess the point of my questions: I've been in other software shops, where their approaches to say well, it was such a nightmare to handle that they said the official policy was. You should be monitoring your memory usage, yes ever means and like avoiding calling allocating functions. Humph rather never had this arise. So I was curious.

F

Whether this is that scenario, but it sounds like you're saying no, we should treat it as something that's may happen, but rather it's these c++ jobs to either handle it within the foreign code, or you should used to see online api close cases and if you use the C API, you get what you pay for that sort of fun hearing. Yes,.

E

A few C unwind, and if your component with n equals abort, this will automatically get caught in turn into an abort on the rest side.

B

One thing I'm hoping for soon seeing is that people who write from macros to handle these cases better so I seen some people in incremental crates for inflation. Since then,.

E

What kind of crop records you have not.

B

So handling trans, they mainly around serialization between why and what not humbling funny so funny stuff, I opened.

C

Em.

B

Into error, codes, yeah.

B

Anything either whatever mine but I.

B

Think I've.

E

Seen you seen it before so so cm wine could be an alternative to that. Just let let it done wine through and not be a problem. Yeah. Maybe.

B

Maybe.

A

Procedural macros work on the rest side or they generate C, pose questions to intercept the exceptions.

E

What I think it's mostly for catching Ross panics and turning them into error codes before passing them back to C or C++.

A

Okay,.

A

So that would be the other thing I'd like to do before we leave. Maybe it's worth talking over I loved any of those scenarios that are irrelevant well, Adam, the scenario you're thinking about. Maybe we should write that when I was like.

G

Yeah, so just as a refresher, we are generating native code from web assembly, and then we are hosting web assembly modules and with that code, in a runtime, that's implemented in rust and the nature of a web assembly execution is that you use web assembly import functions to do anything useful.

G

The the web assembly code itself is just purely computational, and so we have rust on sort of the outside of the program. It's like the the entry point for the executable setting up the instance and whatnot and then running the web assembly.

G

But then the web assembly can call back into rust for these import functions, to do things like write to a file or open an HTTP connection, and things like that and the issue that we have is wanting to be able to have the rest code that implements those import functions, be able to panic unwind through our generated native code and come out the other side and be caught by the like entry point side of our runtime setup for the purposes of our like for the narrowly focused purposes of our application.

G

I think any of these proposals would be suitable for us, because we have, you know complete control over the the ABI string used for the web assembly, functions that we're loading and running and I'm trying to think. If there are there any other wrinkles, we mentioned the proposal. Three had some interactions with function: pointers because we don't have attributes in text for function, pointers and while it would be it would be a big deal for us if an attribute was required to mark a function as unwind.

G

It doesn't appear that that is part of any of these proposals. At that point. At this point, it seems like the attribute is only the table to mark something, no unwind which would be fine for us, even though we are dependent on using function, pointers, wait I.

B

Assumed in proposal 1 & 2 that function pointers are well it's it doesn't matter. If you, if you use the CDC API, it doesn't matter if it's a function, pointer or another function, question that's.

G

Right, my read on is that attributes are completely irrelevant to proposals. 1 &, 2 I bring up function, pointers because it was part of the discussion around proposal 3 and the possibility of having a no unwind attribute I.

E

Think for your particular case for proposal to you just use C unwinds, yep proposal 3, you just make sure it's compile with an equals and whines that's right and so.

B

In that's really, you would even use C on wine.

B

That's right as.

A

It happens in your code. You don't have any desire to intercept this rust panic, but I guess the only kind of interesting twist on that would be like. If you had a c++ frame, I mean right now. The destructors would run first key post bus values because we are converting to the native panic conceptually at least I guess, there's some amount of we're defining a little bit. What our panic string looks like or whatever on those platforms, or at least it's observable. Let's prove that way.

A

You can leave it a little undefined I think that's fine! That's just sort of true for all these proposals. I guess, ok and.

G

So looking forward, I don't expect we're going to have C++ frames in the mix with destructors, but the webassembly extensions proposal or sorry extension exceptions proposal is, is moving forward and it's somewhere between likely and possible that we will want to use the native unwinding mechanism to implement that in the native code that's generated from webassembly. So that would basically look the same as though we were wanting our rust panics to unwind C++ frames and run destructors. Potentially, okay,.

A

Cool about covers, although I guess, the only other conceptual scenario would be kind of C code, invoking rust in a book like the same situation, but the sandwich is is reversed and that that's already sort of what we said about well. What if you wanted to have C++ errors that propagate through your s code? That's.

G

Yeah and to the extent that that would be an interesting case for us, I, don't think it's ever gonna be the case that, like we'll, need to explicitly catch the foreign exception, it's more a matter of will the foreign exception unwind and run destructors in the frames in between like we would definitely have like some sort of shim to translate between the foreign exception and an error code when it's finally time to clean that up.

A

Okay, the last thing I thought gave only a few minutes left so feel free to steer me differently, but I thought it might be useful to just narrow down for each of the proposals like what do we have to do at the different spots so that we understand this clearly proposal, three, nothing right so proposal. Three, we we generate normal function calls the same. Basically C and rust calls are the same.

F

So, in other words, and we promise never to put no unwind on C functions right, it's like we.

E

Didn't think, but no one whine when compiling the sequel support pen equal supports, oh of.

D

Course- and we stopped not for panic, googles, unwind, yeah,.

B

But this is in the compiler, not suspect resume of the well.

E

We have to I mean it's, you be if you unwind into Russ code compiled with panicles board, let's not interact with that.

A

Definition for lob I'm already exempts forced exceptions or something.

E

Sort of.

E

Forced exceptions are or forced on why indivisible yeah they're a bit magic I.

E

Would I would not worry about forced in mind at the moments when deciding between proposals two and three in practice? I, you just long Chum just works as long as you don't want you just as long as you don't have these structures. P three exits just works as long as you have no disruptors right, and this is orthogonal to the whole and it just works whether you have an equals on mine. Open equals, Ward's, okay. So it's.

A

So for proposal, one.

C

Or two there are basically.

A

Three possibilities right or four sorry, four scenarios that are going to be interesting.

A

Because sometimes we get drawn I know like, for example, here we had talked about on panic.

E

Equals unwind: we need to catch Russ, panics and turned him into into boards right so forward for that. Third, one, the third yeah we need to with N equals unwind. We can't let Russ escaping externa, see cuz. That would be you be. Oh I, see what you mean. Yes,.

A

See panic people support, we don't have to because it already aborted, because panics.

E

Don't exist, we don't create exceptions for them and invoking a seat unwind. We don't actually have to do that because it's just.

A

You be weak and if we choose right, which.

E

One here like it's only to panic through an extern sea boundary yeah, but you can do this with the phony safety code, so we have to catch.

B

Okay, it's unsound! If we don't catch it, that's the case that started all of this.

E

For invoking a sea unwind with panic was aboard, we need to catch, for an exception is entered into boards.

A

So for invoking see unwind recap so only with penny Eagles Awards, we catch a foreign exceptions.

A

Basically, we catch non-forest exceptions right, yeah,.

A

Okay and we're gonna leave it as you be if there's destructors in scope. So yes.

E

Forced exceptions, work have the same rules, whether you use c or c unwinds right. It's just. You cannot have destructors.

A

And with invoking a c ABI function, we do nothing, nothing matter. What we mark them is no unwind non wind. Yet.

B

And.

A

Generating the body here.

B

You basically do nothing.

A

Nothing.

A

Okay,.

B

Well so see online if we have a scene minded guy, that's strictly more context of the specification sorted because the proposal was all so. Students.

E

I think proposal three is basically what's implemented right now, sort of by accident. In that we currently don't emit known wined. We do we do yeah.

F

That was part of.

D

The thing the events leading up to the formation of the working group.

E

But the project group- my name- is proposal. Three, yes, is very simple to implement so.

A

This concern about where you can panicked. Oh I, see what okay.

B

It doesn't feel like.

A

Yeah.

A

It's not too difficult.

B

All right we're out of time, but I think that he sort of helped to do it in any case because of the and why not tributes I.

A

Mean it seems clear so introducing and the unwind ABI is more work to implement, but not a lot I think it's not totally clear to me whether it's like more or less work for the humans who write the code. It's kind of simpler on the one side, but on the other, you've got the the fact that when you switch to panic equals abort, you know you know, there's like extra considerations.

A

My.

G

My sense is that the the learning curve is higher with proposals one and two, just if I'm thinking about like introducing this concept to my teammates, there will be a lot more explanation required than just like. Okay, you might get more landing pads with proposal three, but there's an attribute that might help with that later on. Are you familiar with I know.

D

And I think and I think in general, more people will be familiar with see, post pluses know, except than with Opium's know unwind, and if we introduce an attribute, it sounds like can be analogous to know, except probably.

F

Just to be totally clear to the plan is still at there's no subtyping relation at all between the two, a function, pointers, the to a be is right. That's they're, not introvert, okay, yes, but in.

D

Any case a conversion can be made can be written as just you know, a wrapper function, I'll always be an implicit conversion.

D

Not coercion. Conversion like.

B

Anything I might mention the difference.

B

Conversion is it oz versus implicit, I. Think.

D

That I meant it's not a typed relationship at all. Just like you can write a function that calls a function with a different ABI, and if you want to interoperate you just do it via function calls rather than types depending.

A

Right.

D

Mike users.

A

Can work around the lack of a coercion by in cou.

F

You.

A

You.

F

Know the compiler is for you, oh yeah,.

B

That wouldn't be subtyping images like for including for function, pointers.

F

This would all be hypothetical future work, not part of the initial deployment I soon right.

A

It's kind of orthogonal to which one we do, but we should. You could consider that in debug mode we might add more.

A

Shims and things so like for panic, equals a board. There are places where we introduce you be in a debug movie. Might consider that.

B

Makes sense I mean you can I.

B

Mean we don't provide guarantees, so we can. We can treat things as we as we go.

A

I'm not sure where exactly I would apply it, I guess for the total three. It would be pretty clear if, if you.

E

Are under so you could add catch clauses to every single function under pen, equal two boards, just in case an exception, does happen to unwind out of FFI code and catch it. There is.

F

That so you're just.

E

Inserting aboard ships on every X turn see right.

A

I'd like to I, don't know that we have to see it it just it's an idea kind of like we do for energy overflow, it's very different, since we haven't defined behaviour. In that case,.

B

I can get it for in this case, unlike unlike in sterile, though we would not define the neighbor, but I could provide some so anyways just to be nice.

A

So I think the biggest thing is.

A

You already said, but using C unwind lets us identify rust libraries that are sort of expecting unwinding but and handle it more gracefully versus, but it requires people to annotate correctly and that can that's something. I have to learn and that's something they might misuse.

A

Alright I have to go. This was cool. You should figure out how we're gonna I think we should ponder and I guess try to reach.

B

A decision in.

A

The next week or two it's time to be done with this discussion.

B

Well, you know just so I know.

A

No I'd rather not try to reach a decision in the meeting anyway, a little stressful.

D

We want to do. We want to try to take a quick straw poll asynchronously like put a link to some polling thing in. Do it and just see where everyone stands, that seems: okay, yeah.

E

I, don't actually know do we have a tracking issue or something for this I.

B

Don't know if we do I don't know there is. There are a few issues. There's only one issue.

D

So that we should at least yeah, we should probably have an issue.

A

Where I gotta.

D

Go.

A

Fight Thanks.
youtube image
From YouTube: Lang Team Design Meeting 2020-03-16: ffi-unwind

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).