Thank you to John MacFarlane for chairing the meeting. You did a great job. Here are the notes and attendees:
Attendees:
image.png
13:51:16 I can see the transcript.
13:51:50 Hi, Paul, How you doing.
13:51:55 Hi, I'm fine.
13:51:58 I'm, I'm a, I'm a bit sad that I seem to have missed the,
13:52:07 the SG or the WG 121 meeting this Monday.
13:52:16 Oh that's.
13:52:18 Don't worry, that's not much really happens there.
13:52:34 Because that's mostly just a plenary. There's no technical, it's just it's just a bunch of straw polls and vote that it's pretty much already been pre decided, you want to see drama. That's about the only thing you might see see there.
13:52:57 Some people even skip the plenary This is the plenary that would normally happen on the Saturday morning, I think, of the opposite a week of work, just to find out what votes are going through and because when we, because that didn't happen there's no
13:52:55 face to face their own that huge amount of votes that happened and most of them most votes at this early stage and not controversial.
13:53:04 Okay, let's just really annoyed with myself for not being aware of it. Well, you won't dumb.
13:53:14 Well, you can still do it again because I suspect we will still be virtual, by the time they do the October one, there's another one in October. Just make sure you put a calendar.
13:53:26 And then, not miss it.
13:53:27 It was, It was mostly for the deprecating a paper.
13:53:34 I thought that was where I was supposed to, you know, defended or whatever you might say, or defending on these calls on those virtual on those plenary calls they just they just very fast set of votes that happens, and a bunch of admin stuff.
13:53:53 Yeah, if you want to see how the how the other machinery imports work, then you can certainly be.
13:53:59 And I can send some people interested in calling in and seeing what actually happens and then you can just see it.
13:54:09 Never. Just do it on the next call which is October.
13:54:09 Okay.
13:54:11 I never went to a meeting. I know this is your chance so if you want to go to one of these when they go back to the physical, because you know it's going to be money and a lot of things and I think we're going to stay virtual at least for the October
13:54:27 one, and then maybe 2022 February one will be fifth will be physical.
13:54:35 So I don't know if you know about the October ok so the one in May was one where things actually got decided and this was just a plenary.
13:54:45 I don't know which one in may have talked about there's so many of them.
13:54:48 Yeah, okay, they're always meetings going on right but they're not the one that decides things, they just things that they just mean that are preparing things to be decided.
13:54:57 Okay so nothing's getting decided at all or. Pretty much, yeah, there's a few things that's decided like you know things are creeping into c++ 23 and things like that but big decisions are hard to make when everyone's is virtual.
13:55:13 Okay, and I'm a lot less work. Yeah, but ya know I do encourage you, if you have access to getting on the call on one of the plenary, go ahead and do it.
13:55:23 And this is while it's still virtual and it's free.
13:55:29 The most the general advice is just, just look and don't say anything unless you're really sure what you're talking about.
13:55:39 Okay, thanks.
13:55:41 You can find all the October when I'm sure on the ICP website.
13:55:48 Yeah, that's the, that's where I found out that I missed the one this month. Yeah, so don't worry the October one was definitely still be virtual.
13:55:58 And then maybe February will be Portland and then, and then we start again.
13:56:03 We'll see what happens. How, how you guys doing are you guys I'm outta lockdown or.
13:56:12 Well Denmark had it pretty tough. In February, so we've had a pretty easy. Since then, and we're quite, quite careful when it comes to all of us locked down and yeah so.
13:56:30 So things have been better in Denmark, then for what I see in the rest of Europe. Okay, and lockdown is almost non existent and everybody's getting vaccines and in all of Europe.
13:56:42 So, okay, hopefully,
13:56:51 that goes, is we just left the longest lockdown in Europe, just a couple of weeks ago.
13:56:53 And more and more people getting, which country is that Peter, Ireland. Ireland. Ireland. Yeah, yeah, yeah so hopefully it's gonna change maybe next couple of weeks but it's been tough.
13:57:09 They actually opened any restaurants that are shops are open just last Monday,
13:57:17 since Christmas, so that's long whereabouts in Ireland.
13:57:29 Any. I'm very i'm john. Yeah, no, I mean Intel.
13:57:34 Gosh. It was me with john, That's how we met with in drag.
13:57:39 Right. Okay, okay.
13:57:41 I'm coming I'm well I'm happy to miss my, my wife's, my father in law's 90th birthday in a few weeks time and we're hoping to visit. But obviously, but he's in Waterford in the south.
13:57:54 And, Yes, giving us a while and spring problematic.
13:58:04 So yeah, we are also in the longest lockdown in North North America, Canada is Ontario anyway where I am, it's been just now beginning to get out of it, because I'm.
13:58:17 We have also been locked down since December.
13:58:26 So today we're going to be doing embedded. And I believe john McFarlane is going to call in, I hope, and he's going to lead this, she will. I spoke with him today.
13:58:38 He will. He's planning anyway.
13:58:40 Okay, so you know john McFarlane.
13:58:44 He's my neighbor actually even
13:58:49 in the building or in the house. No, no, it's kind of we're in the same town so in the in the in the context of this meeting we are neighbors.
13:59:01 That's great.
13:59:02 Well, I hope, Sean can make it if not, I'm going to have to drop Ben sacks to do to chairing for this because this is the today's the embedded session.
13:59:11 And I'm hoping that James Renwick will call in and we can sort out a few things that we need to do with his paper.
13:59:25 And then while we're at it, Ben can also you can announce the CPP con
13:59:35 or put opening up for talks and things like that.
13:59:38 Yeah, that that was mainly why I was making sure to, to be here today.
13:59:44 Right.
13:59:45 I'm interested in the, in the papers and so forth. but yeah yeah that's the sort of the primary thing on my mind.
13:59:54 If James Renwick doesn't come, okay.
13:59:59 john john thank you very much for calling in. All right, no problem. Yeah, you are the chair for the embedded for today. I'm actually in a bit of a quandary because I have to give a talk about some indeterminate time in the next two hours waiting behind
14:00:14 I'm waiting behind a long line of speakers so I will definitely be just least monitoring and paying some amount of attention. So James just got in so that's great.
14:00:24 So the only thing I wanted to do is, did you want to bring up the agenda so you can follow it.
14:00:31 JOHN.
14:00:33 So welcome everyone this is the SG 14 monthly call, which is almost, which is almost always the second week second Wednesday of every month, we rotate between embedded games and finance and I believe next one was back to finance, and low latency.
14:00:52 And I got an I'm hoping that call cook will be coming back he said he couldn't make it this week, but he'll be back next month to talk about low latency he's one of the, the, the guys really know a lot about it so
14:01:07 today we're going to have a talk about a go back to have another discussion about where we are with the, with the paper, I believe that James is working on I think one of the things we have to do is package it up for the standard submission so so that
14:01:21 it can be ready for so that we can put it in a paper form for standards mailing, so I'll, I'll. I'm going to hand it over to john McFarlane, one of the the special interest group chairs for for embedded, and he can walk through the agenda and then I've
14:01:42 tried to chime in whenever I'm not need to give a talk on the other side of this call.
14:01:48 So john, you have the co chair and I'm going to hand it over to you. So thank you very much, first of all for volunteering and help and helping to chair this.
14:01:59 No problem.
14:02:02 By the.
14:02:02 I should point out I'm not really an embedded expert. I'm not technically an embedded developer.
14:02:11 But I, I certainly work alongside embedded developers and. Yep.
14:02:16 So please, you know guide guide me as we go along.
14:02:22 Michael Did you see that the, the author was here, I forgot the right paper by the way this is the link yes he's here, but yeah so it's all good.
14:02:33 Follow the agenda, there's a few items we probably have to go to like CPP con announcements and any future so meetings and things like that.
14:02:39 Okay.
14:02:41 And this is the right, I've got the race, gender here. Yes, this is the one, you don't have to do roll call because I will get the roll call from the zoom on the client.
14:02:51 Okay, and I'm going to try. You don't need to take notes, unless someone wants to but I'm going to try to take it from the live transcript that's going on right now.
14:02:59 Okay, sounds good.
14:03:01 And I noticed it even spelled My name right there so it's coming along leaps and bounds.
14:03:07 Okay, well, that is a big step was named. Yes.
14:03:12 Yeah Hi everyone.
14:03:16 Welcome to the SG 14.
14:03:18 If. Hopefully you received this email with the agenda in it.
14:03:23 The first thing I want to do is draw your attention to the various standing documents related to WG 21 or so, particularly the ISO code of conduct.
14:03:36 And I guess.
14:03:39 Let me know if you don't have a copy of this by the way.
14:03:42 And so okay so we're going to skip the role of participants and is everybody okay with the agenda.
14:03:54 I guess I need somebody to put forward the agenda or or second that yes toes.
14:04:06 Okay.
14:04:04 I go, I'll propose propose okay.
14:04:10 Do we need a second. Yes we do. Okay.
14:04:14 Can I second it.
14:04:16 You may not show the chat any other exempting may indeed Second, the agenda second did.
14:04:21 Okay. Thanks man. All right.
14:04:26 So, right.
14:04:27 Yes, the future meeting so so this is June 9.
14:04:33 I assume everybody can see my screen there, followed by in a month's time, we'll have finance, low latency and.
14:04:42 And then in August, will circle back to games. These all appear to be the same time slot as this one.
14:04:52 So, Michael mentioned upcoming meetings, so I know that the, the, this being the virtual plenary was that this week.
14:05:03 Apart from that, I, I guess there are some calls out for various conferences and STP con and meetings, c++ made some announcements recently also embedded meeting plus, or is it meeting, plus plus embedded.
14:05:27 I think also is possibly looking for people to give talks at the moment.
14:05:34 And
14:05:37 it is Can anybody else think of any events coming up soon, that are worth that are of interest or SG 14.
14:05:47 I can't think of any other ones but I will just chime in. And as the embedded trek chair for CPP con. This year, and say that I, I did send out an email about this yesterday so if you're on the SG 14 mailing list, you should have seen an announcement
14:06:08 about that. And, and that contains some links about where you can get more information, ask questions. And if you're if you're being great about this sign up for to do things like review talks for the embedded track.
14:06:28 If you're, if you're up for that.
14:06:30 So, uh, yeah thanks to everyone who does that if you have any questions, you can reach out to me or you can email embedded underscore track at CPP con.org.
14:06:43 Okay. Thanks, Ben. I believe it's going to be a hybrid conference this year, some people attending in person and some online as well.
14:06:52 Interesting.
14:06:53 Okay.
14:06:55 Oh Is there going to be an sg 14 meeting at CPP con.
14:07:00 Any ideas.
14:07:03 Um, I guess that's me I'm not hosting it yet. Unless it's because we seem to have so many of it because I don't know if I will be there physically.
14:07:15 Okay, I guess, watch this space.
14:07:18 Okay. Anything else before we jump into the paper review. Yes.
14:07:25 Okay.
14:07:27 Regarding this you 14 meeting I should remark that I will, I am very likely to be there physically and I'm happy to chair an sg 14 meeting if there is sufficient interest.
14:07:36 Okay, That's great.
14:07:39 can be there. They can probably help chair this then. Yeah.
14:07:43 And it might even be interesting to try and hold it in a hybrid fashion.
14:07:47 Because I imagine all the equipment will be in place for hybrid meetings to take place.
14:07:55 It's all about having good audio equipment.
14:08:15 It really really really really is. Okay. We should make sure to check on that because my understanding was that part of the reason we didn't have one at CPP con last year was because we legally couldn't that because
14:08:15 insights and the other associated organizations, had declared that there would be no in person meetings for the duration of 2020 at that point.
14:08:29 I thought that we, We actually kind of couldn't do that.
14:08:34 But okay, any something to check on sounds like something we might need clarification maybe from from herb or somebody who is, yes. So I think the thing is if I saw an insight is still banning meetings, then have this face to face as to 14 would fall
14:08:50 into that. And I think that's what Ben is saying, yeah.
14:08:56 And that's slightly to, to be continuing until the end of the year.
14:09:01 I don't know what they're there now current rolling band is, is now up to. Okay.
14:09:08 Yeah, it was to the end of the year as far as I know. Okay, and although they think they did change it to them, you may or. It wasn't a strict, you don't have, you can't last like okay well so one to keep an eye on then.
14:09:26 Maybe there's some alternative format or something that that where maybe it's not strictly a formal, you know, study group meeting.
14:09:39 I don't know, but I believe that have actually does have discretion in this regard, so we should probably raise it with.
14:09:45 There was not right padding nice right i think there is discretion available.
14:09:50 All right. You've had us to the correctly that are two dates actually one from my soul, and one from some unity United States structure and the American one is much longer time.
14:10:06 So I so could have meetings before that, but the other Association could not so they're basically bad for both.
14:10:16 Okay.
14:10:18 I definitely want for her by the sounds of it.
14:10:24 Does somebody want to just shoot him an email perhaps and ask about that. I guess I'll take that. Thank you. Okay, thanks.
14:10:39 Right.
14:10:34 Anything else.
14:10:38 Any other topics. Okay.
14:10:41 Alright so we're looking at
14:10:46 this paper.
14:10:49 And this is said, James present.
14:10:55 Today, I am welcome James.
14:10:59 Hello, good morning and evening, whichever one.
14:11:03 Yes, should say my name is terrible, so apologies in advance.
14:11:10 Your, your connection is terrible.
14:11:14 Yes. Okay. Well, it's playing up today, apparently.
14:11:19 I was going to ask if you wanted to share your screen or whether you're happy for me to scroll through it as perhaps you could try and just basically give a low down on the paper
14:11:36 that Yeah, sure. I think the easier, you share your screen.
14:11:40 Okay.
14:11:51 All right, just tell tell me what if I mean what page to go to
14:11:48 begin.
14:11:48 I think you might some some members who may recall, I think it was last year, we brought this up as well.
14:11:58 In essence, this is about the question of in 2021 hour later, with compilers better doing optimization. Is it possible to implement exceptions, the normal way without requiring any special side channel ways of stack unwinding, basically, can we actually
14:12:20 use the return channel, can we pass information back from functions via additional parameters.
14:12:29 In this case, or, indeed potentially via other API changes that could contain extra state information.
14:12:37 And in so doing, can we re implement sections in a way that is more deterministic is much simpler is much smaller. Really.
14:12:47 The idea behind this concept. And basically I create made a prototype of this, including a number of years ago, and demonstrated that, at least at the time.
14:12:57 Yeah, Absolutely. It was very possible.
14:13:01 And it, the results in very prompt.
14:13:05 In a nutshell.
14:13:12 If you'd like me to go into details I can.
14:13:15 Yes, I mean, I guess if anybody has any questions, I think Michael has his hand up at the moment. Yeah, so for some people this is a retread because we did talk about this paper both at the prod meeting, and then a month later last year in 2020 probably
14:13:30 in April.
14:13:32 And since then, you know, the pandemic has different effects on different people and it's all understandable. So, we haven't done anything about this because you know obviously events overtake whatever.
14:13:43 So I think the thing to decide here there's no problem going through this paper again for some of you I'm sure it's useful.
14:13:51 And the thing I think I'm hoping that we come to is a two things I believe one was to repackage this paper possibly with any updates or changes as a and resubmit as a standard paper.
14:14:05 It's already been published so that steady state itself shouldn't be too much of a problem, so that it's out there as a p paper. And the other thing is, of course, the last thing we did from the last time was trying to cultivate a group to help with the
14:14:20 GitHub changes that could be used to experiment with this paper.
14:14:26 So I think those are the only thing that I'm looking for. In that way, it doesn't hurt to go through this paper again, and if it doesn't annoy anybody.
14:14:33 I'm happy, I'm, I love to have a haven't done again so that's it that's why I wanted to say thanks.
14:14:40 Okay, thanks Michael. Yes.
14:14:43 Yeah, I'd certainly appreciate
14:14:48 a talk about this and if anybody has any questions, please raise your hands as we go along, if that's okay James Can you. Yeah, would you like to.
14:15:00 Yeah, sure thing. Let me know if my voice breaks up completely. Okay. Okay. yeah And I'll just repeat what I've said.
14:15:11 So I think the best thing to do really is just a scroll to the diagrams and find the first diagram.
14:15:20 Yeah, I was just going to ask.
14:15:23 Michael mentioned to that this, we were talking about making this AP paper, and I was curious that since this is describing a possible implementation, I'm assuming something that we wouldn't want to make normative text in the standard or things like that.
14:15:41 What would this look like as a, as a p paper Can you talk a little bit about what that might mean in this case,
14:15:53 I can answer but Jen's may already have that answer so he's has. Yeah.
14:15:57 Yeah.
14:15:59 Hi. So, um, I think, first of all, I don't think it is useful to repackage a sort of scientific paper that was meant for that sort of format, as a paper proceed.
14:16:21 P papers are, in principle, papers that describe desired changes to the c++ standard.
14:16:27 And it's a journey to get there to actually get the change approved.
14:16:32 It's certainly a journey of a year or so. But that's the, if you wish, the sole purpose of a pea number of paper
14:16:41 that we know that certain changes to the c++ language are are described.
14:16:48 Such a or to the library such as you know add new library facilities or change the core voting to introduce a new keyword for Medicaid or whatever. And I'm not sufficiently familiar with the paper on the plate.
14:17:02 What changes, exactly, it would it would describe it would it would want so far.
14:17:11 If all it does is describe a new way of implementing exceptions. Within the, the framework of existing syntax and semantics of c++ exception so it's purely an implementation choice to do certain things different differently, then there is nothing that
14:17:34 comes from this paper in terms of changes to the language standard. All you can do is walk around compiler and mentors and tell them that you are a customer of them, and that you would feel that their compiler would be much better if they would be doing
14:17:49 if they would be doing exceptions your way as opposed to the old way.
14:17:54 That's why we have a standard multiple implementations are possible.
14:17:57 If however your paper proposes to change the semantics of exceptions in c++ to enable a more efficient implementation in some area, then, then we need to then that needs to go through the, you know, it was a committee and the committee needs to form an
14:18:16 opinion on whether the change in an exception semantics, in this at that corner case is justified or and whether they want it, or whether they don't want it.
14:18:29 And that's what we do.
14:18:33 Yeah, I speak to both of those.
14:18:35 The first thing is yes it does propose both it proposes a change out there's three elements to this. The first thing is there's still some unresolved stuff to do with API's and keyboard, like for example her current proposals on value exceptions.
14:18:53 So there's some kind of tie in there, but I think that's kind of some way secondary, there's a proposed change to some of the handling for the, the gardening session object, I forget I forget exactly what it's called because long afraid.
14:19:09 There's a, there's a there's a function within the standard library allows you to get the current pointer, it kind of transparent.
14:19:17 Even pointer to the current exception. Yes. And the way that that is worded, and it will have this discussion last time as well. My belief is the way that that is word it makes it very difficult exception to not exist on the heap.
14:19:37 Basically awesome heap like structure so if you stack. There are lots of challenges to do with managing the memory there, so there was some element. And the other thing is this proposed introduction of the new kind of more or less, sort of implementation
14:19:45 type version of that effectively.
14:19:52 Yeah, so that needs to be. That's where we need to look from our standards perspective.
14:20:00 I think that the problem there with the problem there is I think what it what it could benefit from is more input really from various people.
14:20:10 I think that the.
14:20:12 If we have this one prototype implementation which I I'll be honest, I haven't released on the basis that I haven't listened to people who are specifically emailed me.
14:20:29 working on a separate another implementation which is a lot better. Currently, which is much easier to work with. And more importantly, has support now for aligning.
14:20:38 Every piece, basically. So you can actually keep everything on the stack for small enough exception objects, which is obviously have a great effect so while all of this, you know, unwinding quote unquote in otherwise returning is going on, we can just
14:20:52 keep everything on the stack.
14:20:54 And it said, obviously, not only apply certain things but it's much more efficient.
14:21:00 And I think much more suitable for bed.
14:21:02 So there's various things that I've wanted to do optimization wise which I've now in progress, and are showing lots of positive results.
14:21:12 And once that's done, I think the idea was to experiment and the wall that I've hit here is to do with the sea interrupt basically trying to compile a c++ standard library with things that messed around with the API in such a way that there's a, there's
14:21:41 interface, see, as you might imagine is a bit of a nightmare, the c++ library limitations are largely based off the standard library implementations. And that's kind of where there's been an issue with experimentation, so I have also been trying to figure
14:21:45 out some of these teething problems there as well before trying to get some real applications using this, basically.
14:21:53 Yeah, that's all nice and great experimentation and all that, and it certainly feeds into the decision of what to do with exceptions if anything there are other exceptions like proposals floating around for visitor has, for example.
14:22:12 So, so that certainly needs to factor into the decision at some point in the larger context, not the study group. But what to do about exceptions in general.
14:22:25 I guess sorry if I, if I may interrupt just one second to say, I guess my point is that before wanting to make any more. How do I put this concrete decisions on the perfect API changes, wanted to have something that was more realistic, rather than just
14:22:37 some examples. That's why there's more of a holdup is why do you say a bi, or do you say API, because a part a, p i, okay, because a bi standard standard library, because a bi binary interface.
14:22:56 We are officially not really concerned with except that that we are because if we're breaking large quantities of API then we we get that night sleep but but from a standards perspective, API doesn't exist.
14:23:12 So, Yeah, I guess what I wanted before making serious proposals. I wanted to be able to say, this is just more than a silly thing, and that there's actually some potential real world here and here it's a real world use case and a real world application.
14:23:25 And that's a bit more tricky when there's still these some of these teething problems with the standard library and some such.
14:23:33 So that's I guess why the. There are things in this paper, and there are things have been hinted at other things are in progress.
14:23:41 So, yes, that's the motivation line.
14:23:46 If there are specific problems with a specification of exception under bar PR, for example, that make it unfriendly with your proposal, or was it was the implementation strategy that you're pursuing here, then, then, then, that is certainly something
14:24:03 I would like to hear about rather specific terms.
14:24:27 Okay.
14:24:19 Is there any particular part of the paper that we should
14:24:22 go to now.
14:24:27 So I think this is just talking about existing implementations. So I think we could try going into the next set of diagrams.
14:24:37 Okay, basically trying to find one that gives a good
14:24:41 overview of what the proposal looks like, Okay, well, stop me when you get to the point.
14:24:50 Oh yeah, there you go. There you go, is a good comparison.
14:24:53 Okay.
14:24:59 Yeah.
14:25:00 Sorry I'm getting a bit like there are three, three different things. Yeah,
14:25:16 the challenges of remote.
14:25:19 Hopefully that's rolling out. Excellent. Yes.
14:25:23 Yeah.
14:25:24 Good. Yes, exactly. So, in other words the general idea is that the each kind of introduce a concept of effectively exception context, and that would be some basically anything that is, no, no, except for the main function, or even when you add a new
14:25:43 block, you have this new exception prospectively an area, a kind of concept that describes where we will allocate some space on the stack to store the potential exception that might be thrown.
14:25:59 An exception context propagates up the stack viral pointer, somehow, now that could be by register, it could be viral function parameter here it's by or a function parameter you might understand that, for example, I think.
14:26:13 Host proposal suggest using registers for doing something similar except, just with, you know, a kind of a peek pointer.
14:26:22 This this is this is similar except I use a parameter purely some implementation could be in period entirely in the front end of the compiler.
14:26:32 The general concept is having some space on the stack, into which to allocate some exception state, and that basically tracks exception that may or may not be thrown and contains a pointer to the exception data, and the general idea behind this is that
14:26:46 we can keep the existing syntax and we keep the same kind of standard library, and we don't necessarily have to change the implementations, there are a couple of points, which I think I mentioned, but a lot of them are kind of teething issues, not necessarily
14:27:04 breaking changes. And basically by keeping everything on the stack and by doing using normal function returning, instead of doing start
14:27:16 winding, we can, it's a lot simpler.
14:27:19 The problem of course comes with the fact that currently the way the standard library and the way that you know assumed collectively, is that the exception object lives on the heat somewhere or on a special here somewhere.
14:27:30 Whereas with this implementation. It does have it can sometimes end up in a special, something for the exception object buffer, except for the fact that it's just that the exception object itself is only moved there during the old wind process will return
14:27:45 process. So it's a temporary thing. And in many cases it's possible to determine explicitly how much space you might need. And worst case analysis basis.
14:27:56 Because this is all just standard function control flow.
14:28:00 There's nothing you know special will suck channel going on there's no register modification. It's just standard chocolate.
14:28:08 The only thing that's interesting. Aside from that, is the fact that if the exception object itself is small enough, it can be stored within the exception state.
14:28:20 And that of course is great beneficial. So we can actually just do a normal return on the exception object. So for example, if your implementation was such that you were using error codes that were just naturally be stored on the stack, and then it would
14:28:36 flag inside the exception state that indicates whether the exception is active, was a function called, which could throw returns that flag is then checked.
14:28:47 And once upon a time that would have been a major deal. And in many cases today. And a lot of the investigation that I did as part of this paper showed.
14:28:57 Actually, it's not such a big deal anymore, to have to have this function returns.
14:29:01 And then he said,
14:29:06 it actually opens up lots of natural compiler optimization here, purely by standard optimization passes.
14:29:15 So, yeah, I think there are some details in terms of implementation going down here and I, there's an example of what the exception state data structure look like.
14:29:30 If you scroll down, you can see there the coach him age number.
14:29:51 Outside, yes. Yeah, that right there. Yeah, I think it made it shows a new kind of exception context so there's an exception t being put on the staff that they represent the exception state.
14:29:52 And that's effectively what's going on behind the scenes.
14:29:56 And if you go to the next page, I think.
14:30:02 Okay.
14:30:11 life away from like crumbling yeah so so that gives an example of the sort of things that are stored.
14:30:18 Alongside the exception state that basically appointed to the pointer to the runtime type information, or it directly embedded things like the size the exception objects and whether it's active and so on so forth, and this is stuff that's been iterated
14:30:31 on sense, though, I have a number of different implementations of this to kind of do a kind of cost benefit analysis for different layouts of destruction.
14:30:41 The general idea though is that it should be as small as possible, and it sits on the stack symbolize really.
14:30:53 Obviously the biggest, the biggest problem with this or the big kind of the interesting part about this is it draws a distinction, a concrete distinction between c++ functions and C functions in that it changes the expected API.
14:31:08 So either way, no matter how right if it's by register if it's by you know explicit parameter or, rather, implicit function parameter injection, then there is a difference now between C functions and c++ functions, whereas before that wasn't.
14:31:23 And it turns out that one theory this should be okay compilers make lots of assumptions and in any place we, you know, things like function pointers for example, it's.
14:31:33 Many, I found that clangs implementation at least at a time when I was looking at this does not actually ascribe whether a function pointer could be pointing is declared within a c++ kind of language context, or whether it's declared within a C language
14:31:50 context.
14:31:51 So we don't actually have information about things like function pointers. So, the kind of interfacing between C and c++ become very tricky to deal with.
14:31:59 And I think that's why we have this these keywords like like throws, for example, which can may indicate the change and make working between C and c++, more realistic.
14:32:12 I think when I brought this up last year.
14:32:15 Basically what we said was, we should not think too much about the see element but I.
14:32:22 My concern is that for real world applications that's a real thing. And mostly in terms of the fact that people might need two implementations of the sea standard library, without see standard by which I guess is something that herb is finding, or has
14:32:37 has found and is pursuing right if what I remember. Recently reading is correct.
14:32:51 I just going to Jen says his hand up.
14:32:48 Yeah, hi. So, instead of a new decoration, there is a way to differentiate c functions from c++ functions and that method is called language linkage. And so, all the C library functions should be decorated by x y and z, and c++ functions are on decorate.
14:33:10 And I understand that there are a lot of competitors out there that do not differentiate. For example, the function pointer type between C language functions and c++ language limited functions.
14:33:24 but some implementations do and rightfully do so, and it would behoove, everybody else to give a hard error. If people confuse function types. When forming pointers to functions and similar like that language language was exactly invented for different
14:33:41 calling conventions for different programming languages and to allow some sort of interoperability for C and c++ in space, in particular, there was no difference in in calling convention so far so compilers have been negligent on enforcing the boundary.
14:33:57 But, but, but yeah, that's, that's what we have and compilers doesn't don't implement that properly is not an excuse for not at least, saying that this is the way to go, and go from there.
14:34:15 I mean if, in some way.
14:34:18 The second aspect of exception throwing is propagating exceptions, through the very few c functions that actually take a call back which is research and research I think doesn't work as well to certain cues or Does, does, very much so.
14:34:35 User takes a competitor, and that compared to my throat. And then what do you do with the ccq sort function, but that is a very much smaller concern than all the rest of Jewish.
14:34:53 I guess I find it. The problem is that in practice again that one kind of hits up against that, if you're if you're trying to actually prove that this is useful and isn't a complete, you know, red herring.
14:35:06 You kind of have to have a working standard library implementation, and to have a working standard library foundation need to compile it with one of the, you know, common compilers, and if all the common compilers are assuming that the same call a convention
14:35:17 in practice.
14:35:30 It makes it kind of difficult so I, you know, obviously defer to your, your knowledge on this matter but in terms of the practical reality it's very challenging at current at, you know, currently in order to actually derive anything useful is that, you
14:35:35 know, going forward.
14:35:38 That's fine.
14:35:39 From an experimentation standpoint, I'm just saying that a proposal that duplicates language linkage functionality was in as something new is not
14:35:50 probably not helpful.
14:35:53 Right.
14:35:55 I understand your point.
14:35:57 Okay.
14:36:02 Any other questions. Keep going.
14:36:05 Yeah, carry on.
14:36:08 Yes, I'm trying to think if there's anything else in particular to mentioned To be honest,
14:36:18 I don't think so. I think the only interesting thing is this this this, there are plenty obviously of interesting elements to this in, including handling multiple exceptions and handling propagation where the exception state has to then be copied back.
14:36:35 But generally, you know again we've gotten pretty good at dealing with problems like this, you know, we've been past you know returning structures for very long time now, and the kind of the, I think the performance results that I took speak for themselves.
14:36:50 I wish they had been more thorough and that's definitely part of this project in getting more variants and getting more testing and using real world stuff.
14:37:00 And again, one of the reasons why I didn't release my existing implementation, to the world as it were.
14:37:07 Because the reality is it doesn't, it's very difficult to get it working with existing programs. I think that's the point. So you can't just drop it in and then use it because of the standard library situation.
14:37:21 But in general. Turns out, cutting out all the unwind library is a massive size when as a one off.
14:37:29 And I have indeed made great strides. I can say, so far, I don't have the finished results.
14:37:34 But I haven't even made great strides in putting down the instruction cost of using these as well. Per, you know, function call and PR can throw expression, and so on, so on arm on x86 there's a massive difference because we don't we don't seem to mind
14:37:51 so much that the unwind library is huge. On arm of course there's a lot more effort put into it.
14:37:58 And did you see a significant reduction for smaller systems but it's still a one time, hit kind of thing.
14:38:12 In addition to that there are changes to RTI, which are proposed, and obviously are, how do I put this.
14:38:15 There are ways of doing RTI which can be made easier by this proposal, which, in order to actually reduce their size. I guess is my point.
14:38:27 And as a result, effectively you see both the reduction in terms of one time, you know removal of the online library, but also a reduction per kind of individual exception object used, and what would you say, kind of catch handler.
14:38:49 So, with the original exceptions there's various different types of RTI and methods and other kind of necessary Glue Code, which doesn't have to exist in my implementations.
14:39:02 Instead, it's just the standard stack return mechanism. Right.
14:39:07 And in terms of additional ICT I, there's very little that actually needs to be kept or retained specifically for exceptions, or we need to actually do is have some mechanism of comparing such that we can do, you know, catch block filtering.
14:39:22 So, with the ITT I even smaller.
14:39:28 We can actually cannot do it a like for like comparison in a way where we have more than just a one time reduction in size, but also as the binary grows.
14:39:39 There's also a chance to have a reduced binary size if you see what I mean.
14:39:44 On x86.
14:39:53 Start yeah I just say pulls out his hand up a little while ago. I actually didn't find this interesting, the one thing that struck me when I read this paper I guess about a year ago now, was to explicitly call out a place where the.
14:40:08 This approach has some failings in regards to how the exceptions are currently being used, I don't remember if it was handling multiple exceptions, or what it was really throwing something like that.
14:40:27 But it's explicitly called out in your paper on one of the fan ish pages.
14:40:36 Is that has that been fixed or addressed in some of these new work, because that really seemed like a showstopper to me at the time.
14:40:47 Yes, I do remember this I think this was effectively taking me.
14:40:53 What this was as I recall, was being able to re throw or grab the exception point for re throw fire a either a note set function or via another function I think it was Byron know except function.
14:41:07 So the idea is you can get the current exception pointer fire some kind of nested function call effectively.
14:41:15 Absolutely. And in fact, I think that this was discussed at length, I particularly remember a conversation with our two with with Ben at the time, and I think yes we, I think the point was that, since this has been identified.
14:41:34 It has been thought about. And there is a potential implementation which would solve this. Yes, I suspect that by the time I get to the final performance results.
14:41:44 that is definitely going to be in there.
14:41:47 Absolutely, I mean it's not, it's not a.
14:41:50 It's not an implementation or technical challenge in the same way to see interoperability is it's, it doesn't seem to me to be a showstopper. It's just something else that needs to be considered.
14:42:03 Basically, the real challenge, as far as I understand it is kind of how I put the selectively applying it, because this is kind of cost to tracking these objects and managing that which you might not always want.
14:42:18 So, I wouldn't say that it's a showstopper. But I would say that it's added additional complexity, which, as I said wasn't covered in this paper but yes yeah, if that answers your question.
14:42:33 I like how much fun. Thanks, super vague answer I appreciate.
14:42:39 But yeah, I guess all I can say is I don't consider it a showstopper. I think it was an interesting case that was brought up last time.
14:42:53 Other Any other questions.
14:42:59 I mean, I guess we could dumb.
14:43:02 Unless you want to look more at maybe the results or any particular section, we could perhaps I don't know look a bit more, maybe what might go into AP number paper
14:43:18 or indeed whether we, whether that's the way to move ahead.
14:43:26 So yeah, there's fights, where you've paused is an example of two is the proposed additions to the standard library, I think,
14:43:42 as I recall, but I think that this plenty of, as I say, I mean this was.
14:43:49 I don't put this, this was kind of, I don't want to say made up everything's made up, but
14:43:55 I don't think this has been informed or thought about enough to justify taking too seriously. I think that would, I would personally want to consider that more detail about what makes sense, and how people would actually use this and so on and so forth.
14:44:16 Yes.
14:44:18 Yeah, so any changes to the exception mechanism.
14:44:23 The mechanism itself being a non local thing is, of course, touches all of c++ and potentially makes for example independently component libraries incompatible with each other and stuff like that.
14:44:37 So,
14:44:39 we have to tread a little careful here.
14:44:45 So what I most interested in terms of the number of paper first is of course.
14:44:55 Where did you find that your implementation approach was not able to implement the requirements that the c++ standard imposes on an implementation.
14:45:10 And one thing you mentioned, and where therefore you would want relaxation of rules or changes of rules or something.
14:45:27 And.
14:45:22 And that's, that's what what would be most interesting for a p number of paper.
14:45:28 And because that's where you want actual changes to the standards, and for example you claim that exception pointer intends to be on the heap.
14:46:03 And intends to be a shared something like a shared pointer implementation. Yes, that was one possible implementation strategy that was
14:45:53 expected or planned for. When this facility came in, but it was also planned for that exception pointer just copies. The exception to someplace.
14:46:05 And, and it is essentially does not do reference counting but just copies the exceptional object and then it's there, and it's yours to keep. If you wish.
14:46:21 And so, if that wording was expressly done, I think Microsoft at that point needed that. When oh it's been ages when I drafted the voting for a certain point, so.
14:46:30 But if there is something more you want to do with the facility that exception pointer wants to provide ie the ability to extract, an exception from one threat and essentially be able to reach forward on another threat or stored away somewhere or something
14:46:47 like that, if, if you need more facilities, and the current allowances for Executive Order don't cover what you need to do, then I would like to know about that and very much detail.
14:47:02 Preferably, of course, and a p number paper.
14:47:11 Dude, do we think that maybe a p number paper might be a good way to solicit feedback and iterate on a design is maybe a little too much concern that that you're committing too much by writing a piece of paper and perhaps would just be a good generator
14:47:29 good forum for for solidifying some of these ideas.
14:47:37 I don't know what you mean. I mean, either. This is just presenting information to the committee, look here is an alternative implementation for exceptions.
14:47:46 We all look at it and say, Yeah, nice try it. boom. Go.
14:47:51 Next item next customer please, or, or there is some. And that is one very viable and possible result from looking at this academic exercise here, or we say we want.
14:48:04 We want an actual change to c++ and then I want to will need to understand what the changes.
14:48:11 And during the evolution of this project here I have understood that certain requirements that the c++ standard imposes in some.
14:48:20 Not very obvious ways ways have been have been looked at and have been implemented, or happy, or the author is looking into implementing those.
14:48:33 And that's good and yeah it's it's some of these requirements are a bit of a pain I understand that. And, but, and certainly the the the default handling of exceptions was this personality crap is kind of sub optimal.
14:48:50 But, yeah, whatever.
14:48:51 So yes, but but that is obviously a process so at some point probably there was a desire to remove that requirement from c++ that certain corner cases work a certain way.
14:49:03 Now that has been implemented.
14:49:06 So now we can maybe say okay yeah, it's not pretty but but it works and it probably doesn't doesn't make the whole scheme performed worse. As long as it's a lot of costs, we don't really care too much I guess so, yeah.
14:49:23 Of course it's part of the evolution here.
14:49:29 Sorry.
14:49:36 Okay, I mean.
14:49:38 So it sounds like a paper might might be helpful here then.
14:49:44 Again, if the desire, is that the c++ standard changes. That's the whole point of writing a paper. If there is no such desire, we don't need to paper.
14:49:56 And I'm sorry, we don't need to pee number paper to present research results were very capable of reading PDFs stored as well.
14:50:05 Okay.
14:50:12 Anyone else have any comments.
14:50:19 Okay so, so my understanding was that there were changes being posed here now I suppose if what we're saying is, James is uncomfortable proposing them, then maybe someone else needs to step up and champion this paper if we want to start getting some of
14:50:36 those changes reviewed by the committee.
14:50:39 But my understanding is that there are some, there are proposed changes being made here and if we.
14:50:52 And certainly this material a lot of this material would have to be in the paper as clear motivation to explain why things need to change. I would think.
14:51:05 Yeah, I can't help thinking that, yes, some of the implementation details or choices will help provide the context for understanding what potential changes to the, to the standard are being considered.
14:51:23 I think it's not the way I would word it myself is it's not that I'm uncomfortable proposing the changes, it's more that I, my concern is that Yeah, I'll be honest, I say, Be perfectionist about it.
14:51:35 I think that that's the. I wanted to have something realistic and working, which I could give some sort of backing to. Yeah, foundation to to what I was proposing.
14:51:47 And this does work.
14:51:49 To be clear, but it doesn't work with.
14:51:52 It works with example applications and it works with heavily modified standard libraries, and it doesn't work real code, so I couldn't take a real world application and then swap it out and say well this is how we would change this, so this is how people
14:52:04 use it, you know.
14:52:07 So I think that's the that was the main motivation so perhaps I guess what you're saying is, just get something out there anyway.
14:52:15 So there is a path towards a p number that involves a draft, or we call it the number, which isn't published in the, in the mailing, but can be shared around and feedback can be provided on that.
14:52:34 I always get the, the exact steps on how to do this wrong, but I think we maybe want to get a number, perhaps.
14:52:43 Well, before we dig into the details.
14:52:47 There is. I mean, we have. I should remind people that we do have a multi stage process in handling changes to the c++ standard. So, we can certainly iterate on a real p number of paper, for example, in this forum, which is probably a bit more cozy than
14:53:08 some other forums that the papers eventually needs to go through
14:53:13 and improve that paper and make it better and improve the motivation and make sure the presentation is so that people think this is a great idea since the greatest idea since sliced bread and all that kind of stuff.
14:53:25 And that can very, very well be done within the P number paper frame it's it's not unheard of that the first version that is seen by the rest of the comedy is revision seven or eight have a paper, because it has been iterated on a study group for a while
14:53:40 until it was good enough.
14:53:45 So, I see no problem with with doing so. And yes, There is also the number scheme, just so that drafts between mailings are clearly identified as not being the bitwise, the, the pattern of the paper that is in the mailing so that people are not confused
14:54:04 because we want the P numbers to be unique identifiers for a specific bit pattern that happens to render as a PDF or HTML.
14:54:14 Or perhaps at least for some of the more the details the boilerplate, you know, just so that it is looking roughly, roughly like up number paper that that's, yeah, that's what we have options.
14:54:31 Certainly, but that is best done by a someone relatively familiar with the process of just getting together with the actual person writing the paper and in a one on one setting and just whipping it to the right shape.
14:54:47 Okay, perhaps somebody would like to.
14:54:53 Well, I mean, I guess we should first.
14:54:56 See you. James if you're interested in willing in pursuing a paper and then perhaps we could see if anybody would like to maybe help out of it provide some early feedback, perhaps, um, I would.
14:55:12 Sorry to interrupt again.
14:55:15 I would also like to point out that this is very unlikely to happen in the c++ 23 timeframe, just because of timing and, therefore, we're not under a particular deadline rush we are usually or not anyway.
14:55:29 So if the, if James believes that he wants to make more progress on the implementation front to have more convincing arguments and all that and maybe reconsider.
14:55:44 Some of the.
14:55:46 Oh, we need to change the language like this to make it work better, the kind of things, then there is no particular rush to get a proposal out this week or next month or something, we might as well, wait for a year until things are solid solidified more
14:56:02 if people think that it's more helpful
14:56:08 to say, Yep, no that's good feedback.
14:56:12 Okay, so I wonder if there's there's maybe any feedback that you were looking forward to help guide you in your ongoing research.
14:56:25 I think the.
14:56:27 I think I would be very interested on people's opinions about the seed problem.
14:56:32 I think that's the that's the main thing, because that continues to be it.
14:56:37 I think to me that's the biggest issue, both in terms of the implementation in terms of the theory and I understand that in theory according to the standards that you know that's that shouldn't be a problem but in practice it is and if people have any
14:56:50 kind of thoughts. in addition to.
14:56:53 How do I put it in addition to the you know the fact that it shouldn't be this way, which is a very obviously very valid and important point.
14:57:01 If there are any other opinions people have around this, I'll be very grateful. And
14:57:09 I guess, for people to generally consider the algorithm. And what that might mean in terms of their own code or how they might change their behaviors, but just as a kind of like, you know, over a coffee kind of thing.
14:57:29 I think for me the meat and bones will be being able to take real applications and playing around with those. And that's why I'm working very hard towards that, in what little spare time I have.
14:57:39 But requiring some tax changes, such as the throws annotation for c++ functions that want this extra exception context parameter is of course, slightly incompatible with applying this to real applications because real applications will need lots of changes
14:57:58 to sprinkle throws around.
14:58:02 Excellent point yes that's why I have a flag in my implementation that defaults everything to or removes the throats the net necessity for, basically, it's only really there because we discovered that this was an issue.
14:58:15 It's not necessarily there because we think it's a good idea.
14:58:19 So implementation doesn't mandate, it
14:58:24 sounds like, okay, so.
14:58:26 Okay.
14:58:29 So just to clarify, just like in everything else in c++, if it is not marked as no throw, then it is throws.
14:58:39 This this correct actually throwing Yes. Yeah.
14:58:43 Yeah.
14:58:51 Yeah. But of course, then the challenge is identifying Well, what if it See,
14:58:58 see function conference.
14:59:04 rather wouldn't accept the API change in any case,
14:59:11 I think there was previously some discussion that it might not be such an issue in the embedded case because you might not necessarily be mixing code bases, but I feel like that's not the strongest argument.
14:59:30 Yeah I at least mix code bases all the time when I'm doing low level.
14:59:41 Anyone else have any thoughts.
14:59:46 Any questions.
14:59:50 So, I'm, I'm curious, is you were talking about one of the hurdles that you are facing is a standard library that lives up to these
15:00:07 demands that you're setting.
15:00:11 Would it help getting this moving forward, to have someone do a, an attempt at modifying the standard library for clang or GCC in a way that conforms to these requirements, or is it still just whether or not it's C or c++, Colin convention.
15:00:38 I think it's almost entirely that the latter is the fact that this, for better or worse the foundations of the c++ standard library or the city standard library.
15:00:52 So getting it. I've tried many times and fat around and made it a bit of an effort to try and make that happen. But
15:01:01 yeah, the, the truth of the matter is, is the senior issue.
15:01:09 I just noticed a couple of things in the chat Ronan a ways back asked if the exception is not only does the suggested implementation support infrastructures supports infrastructures that manage or delay or redirect exceptions, with particular interest
15:01:30 in sister. I'm not sure what see stars.
15:01:36 Does that question. I saw we don't have the context for that now does that.
15:01:43 Do you understand the question.
15:01:47 Not entirely that's an interesting idea right that
15:01:53 for managing or redirecting exceptions redirecting yes to laying I'm not sure.
15:02:01 That's a very sorry.
15:02:05 If I can chime in.
15:02:17 I'm using this system it's an infrastructure that is based on the
15:02:17 scheduling program using into multiple blocks that some something that code is not exactly that.
15:02:33 The Lamb does that are scheduled in day with continuation.
15:02:36 I think in the standards we are growing and gaining, there are some efforts in creating similar things based on continuations. I think when you're talking about continuation.
15:02:49 I mostly I want to pass centers, I want to pass the exception that that was created in one such is one block or one lambda whatever to the next sometimes in the future.
15:03:04 When the exception will accrue, it will be transferred to another block, and so forth.
15:03:10 And for this currently we are using what they are using Cisco is using the exception pointer.
15:03:20 In, is this something that can be implemented with your suggestion.
15:03:26 Absolutely, I mean the exception state is effectively is an object that is just movable, there's nothing special about it. There's no special semantics it just exists as an object that's one of the kind of nice elements of baited kind of semantically.
15:03:40 So yeah, you can just pass it around, you can move it around, you can pause it through function so you can store it somewhere and then we throw it later.
15:03:49 And the, the idea is that there's a proposed actually there's a proposed ability for you to provide your own alligator. So, while the exception object itself ends up being stored in the stack within a catch block.
15:04:05 And once it's pulled into scope. So once the unwinding is complete it sits inside your catch block so if you if you catch by, by, elbow elbow reference.
15:04:14 Then effectively. It sits inside your cache block on the stack. And so you actually, there's a proposed extension here in this paper whereby you can actually take exception objects and say I want you to copy this and I want you to copy the exception object
15:04:28 itself to some alligator. Basically, or to some location.
15:04:34 No matter what the exceptions yourself is what type it is.
15:04:37 So I think it's actually very easy, so you can specify custom alligator to make that happen.
15:04:43 And you can you carry around, in addition to the exception object is metadata, so you know what type of Was there some sort of identifier for the catch block filtering and all of the other exception state.
15:04:55 So yeah, it's not only very possible that a very serious use case, potentially for this.
15:05:01 Thank you.
15:05:06 There was another question from Connor wasn't using thread local storage for exception state previously explored.
15:05:19 Hello.
15:05:22 I take it to the rim at large.
15:05:27 or.
15:05:28 Okay.
15:05:31 Does anybody.
15:05:34 Recall, talk about als for
15:05:39 was this in was this in relation to exceptions in embedded specific, you're
15:05:48 right, I see. Yes. I think that
15:05:55 it's possible.
15:05:56 Yes.
15:05:58 All right, just possibly decide to see a big issue.
15:06:10 That's a very interesting idea. I think that's a.
15:06:10 It would be interesting to see how the optimizer would deal with that, I think, a big kind of motivator for this was that it was standard control flow.
15:06:18 And it was just, you know, all the basic abstractions of data and functions.
15:06:23 And there was nothing necessarily needed side channel The only thing was instead of returning a value that you expected as your return type, you would get something else which was affected with the exception state, right.
15:06:36 So, this would be still side channel but it's not necessarily such an egregious side channel as a whole kind of virtual machine doing it, you know register pokey unwind.
15:06:52 says interesting thing to try.
15:06:56 Sounds like there's a fair bit of interest in in seeing the reference implementation.
15:07:02 Yes.
15:07:05 By all means don't don't feel that something has to be perfectly formed before it's presented the committee as Jen said, plenty of iteration can occur.
15:07:15 Often proposals will be transformed quite dramatically. Sometimes, multiple times before they fully proceed.
15:07:24 But yes, I don't know if it would be helpful but there is a, an sg 14.
15:07:32 github space as well.
15:07:35 Possibly we could clone something into there if there is a.
15:07:39 If there's a repo somewhere online
15:07:46 Paul.
15:07:50 Yeah, I'm just I'm just thinking of technicalities you said that the problem is that the CC library is more or less wholesale copied into the c++ library.
15:08:05 As far as our calls CCE that the c++ standard actually dictates that everything from the C library lives in namespace std, which would make it possible to have a wrapper of the c++ over the C library to, to make a track as a buffer.
15:08:35 In order to converge colon conventions.
15:08:39 Would that be a possibility.
15:08:44 As a really good idea.
15:08:51 That's really good idea because the big problem I have is linking and effectively, a lot of platforms come with a standard library as well. So, you would end up effectively having to have to build this thing.
15:09:02 And that was something I hit somebody messaged me was interested in using my implementation and I sent it to them and I said but you know the problem with you're going to have is that you need to see standard library builds effectively but a rapper might
15:09:12 solve that nicely.
15:09:21 Of course effectively nobody uses the STDs namespace but then that's a problem for another day.
15:09:30 I do, what it's worth.
15:09:32 Yeah, I expect the, the c++ code guidelines for example probably encourage people to do that, and I certainly
15:09:41 nag people in code review.
15:09:44 To add the namespace qualification so you might be surprised.
15:09:55 Sorry, going back to the GitHub. I think that this new implementation that I'm doing, which is the effects of the old one, but what I basically done is instead of instead of implementing directly in the compiler front end as a silly university student
15:10:09 might do. I've actually implemented in a separate c plus plus, and source files, and I basically just have kind of entry points into that in the compiler instead, or to clarify it kind of, you know, almost like built ins are intrinsic or something along
15:10:27 those lines where it will actually just call out to these external symbols that as humans are implemented very much and similar kind of a big way right.
15:10:35 And that means that the implementation is a lot more direct so you're not going around the compiler from the final bits, and it's very easy to actually implement change.
15:10:45 So I think if I wanted to make a public implementation which I do it would probably be that one because I think it, it's much more presentable. And people can actually hack on it very easily and iterate with it.
15:10:55 and that's kind of the purpose of the rewrite, in that sense, and bringing it up to spec spec with a modern client as well say modern you know everything changes every year but
15:11:05 as the old, the old implementation does work.
15:11:08 But there you have to kind of put a bit of effort into get it, doing what you want, really.
15:11:14 And it's not, it's quite difficult to actually change and work with because it's distributed and embedded in the front end.
15:11:27 But certainly when I have a good when it when I haven't even vaguely working. I do have it vaguely working when I have it in a state which I think is easy for other people to kind of work with 100%, I would be happy on on sharing that there.
15:11:41 And I think if people messaged me and they'd like take a look The old implementation, I'd be happy to really start on a kind of, you know, individual basis.
15:12:03 I'm just checking yeah so yeah you have an email on the paper, just in case anybody wants to get in touch directly.
15:12:10 It might not be that email. Really sorry, that's not my fault, it's the university's. Okay.
15:12:18 Yes, because I left the university. It's now deactivated which is excellent.
15:12:25 But thankfully my co authors normally for emails to me so.
15:12:29 But if you're interested, I'm happy for someone to distribute my email address or I can write in here as well.
15:12:40 If that's appropriate to share information on, and I c++ chat.
15:12:47 I'm sure it's been done before.
15:12:50 Let's say you probably relatively safe.
15:12:54 Excellent. And then there's always the reflector as well.
15:13:03 Then if you're on the mailing list or the reflections, we call it. There's that as well.
15:13:07 Right. Yes, yes.
15:13:09 Okay, definitely some interest drummed up there, some good feedback,
15:13:17 whether any other
15:13:20 things anybody wanted to comment on or what questions to ask.
15:13:28 Daniel. Yes, the hand up.
15:13:31 Yeah.
15:13:34 I just wanted to say that definitely I think this see compatibility would be kind of a deal breaker for people in my area because we definitely mix, C and c++ C and c++ code quite a bit disturbingly large amount of mixing and did.
15:13:56 It's like a risk averse behavior you know if you if you said, Oh, you can't do that anymore, they'd be like, Well, we've used this code for 20 years and it's been an x y z release product so we want to keep using it right because we know it works.
15:14:11 So anything that were to break that would be like instant. Now we're not doing that.
15:14:18 Plus there's already the normal resistance to exceptions to their history, whereas I'd like to see more of them because I think they're very useful error handling tool.
15:14:27 So, anything we can do to cut out those instant knows is a good thing for me.
15:14:36 Yes, I yeah I totally agree and that would be my point of view as well which is why I'm so hesitant about it.
15:14:49 I think the thing I was going to say is I think like the rapper idea in general, I think this has been talked about before but I hadn't thought about in the context of the standard library.
15:14:54 But yes, so in theory you could have c++ wrappers for everything but obviously you know create a facade for your entire see interface seems like a giant pain.
15:15:07 The thing that I personally think is good about this implementation is the fact that with the cup with that kind of external allocation religion, you end up in a situation where if you are just throwing error codes, you're just throwing error codes, with
15:15:23 some additional information for cash flow block filtering.
15:15:30 So that's a, it's a pleasant element, I think, for that helps make sense of this in the embedded space as well.
15:15:40 So you can kind of, you can kind of draw direct comparisons between this and an error, kind of error code approach. The only difference hopefully being was slightly more stack space required.
15:15:52 And the fact that, which I think also was brought up last time as a slight to break from very small embedded systems, although I have, you know, for what limited testing I've done on the smaller ones now, it hasn't been too much of an issue but maybe
15:16:03 I'm not smart enough.
15:16:07 Yes.
15:16:09 So that's, that's kind of the. So I think the big difference here is that that because the compiler is directly using this, it can do all optimizations necessary to say you know what this is, this isn't just unlikely.
15:16:20 this is called path like go away.
15:16:23 So it is effectively a better implementation of error codes with exceptions on top and maintaining the existing syntax of try and catch.
15:16:37 Okay, thanks. Any anyone else.
15:16:41 Before we move on.
15:16:46 If not, thank you very much James for the presentation.
15:16:52 I think we've got some good ideas going there.
15:16:55 And so,
15:16:58 very interesting avenue of exploration.
15:17:02 I look forward to seeing how this comes along. Thanks.
15:17:14 It's okay, it's fine. July just drop off now. I'm not.
15:17:15 Almost, 14, or job.
15:17:27 If, If you want to leave, that's fine.
15:17:32 That yes thanks again.
15:17:34 And, Yeah, good, good luck with it all.
15:17:41 Okay. Alright.
15:17:45 So, moving on.
15:17:49 Are there any other.
15:17:52 So are there any of the papers, people wanted to look at and then nothing else was I guess mentioned in ahead of the meeting, but is anything, sort of fair cropped up.
15:18:06 Very recently.
15:18:07 If not, we can just go on to domain specific discussions, Paul.
15:18:14 Yep.
15:18:17 Yeah, that was just a question.
15:18:22 If anyone who is currently here because it's an embedded talk.
15:18:29 That was not hear any of the earlier times. Regarding the deprecation of volatiles paper as any comments on that.
15:18:42 I'd like to hear them otherwise. Let's just move on.
15:18:46 Can you just remind me quickly what the number is for that.
15:18:55 I'm sorry I can't slightly this calculate. So, I don't remember numbers.
15:19:03 Okay.
15:19:06 That would be a two three to seven.
15:19:12 Oops.
15:19:15 Yep.
15:19:17 And this is one of the other kind of hot off the press papers.
15:19:22 At the moment, yeah so just so everybody's aware, this is another
15:19:27 paper, kind of reversing the decision to deprecate some of the operations related to follow tile.
15:19:37 And, yes, see Paul for any questions or comments on that.
15:19:44 Okay.
15:19:48 So, moving on. Are there any.
15:19:52 Is there any other papers anybody wanted to mention.
15:19:55 Are there any domain specific discussions, I guess we should give particular emphasis to any topics related to an embedded embedded programming.
15:20:10 Was there anything anybody wanted to bring up
15:20:20 I know Ben can't make it I'm not sure if it is here, or Odin, but.
15:20:30 Failing that, it's going to be, finance, next time around is there anybody from finance here.
15:20:38 Maybe somebody could bring up topics that we want to discuss next time.
15:20:46 Hello.
15:20:48 Yeah, it's just Jeff Smith, Social Security's. Um, I think it's my ideas I can put them on the reflector for things I've kind of my grab bag wish list stuff but nothing on lines of a paper proposal, quite yet.
15:21:04 So, okay, well um yes I mean, next month if you, if you have some some ideas or to float around or even a beginnings of a paper by all means.
15:21:18 Share them or put the suggested the they'd be put on the agenda for the, for the next meeting, that would be great.
15:21:26 Thanks john thanks.
15:21:30 How about games
15:21:37 guy here. Any, any news from the world of games.
15:21:41 Nothing here.
15:21:42 Okay. No, nothing is some is one of the big conferences was GTC or the other one coming up soon.
15:21:54 Do you see us coming up soon. Yes. Okay.
15:21:58 I've been asked to live on that one though.
15:22:02 Okay. Yeah, i mean i don't have.
15:22:05 I mean, I think it's just cdc.com, or GC gt comp I don't remember.
15:22:12 But anyway, yeah it's up. It's all virtual, I believe it's promote this time around and, yeah, we're not, we're actually not sending any one because most of the benefit for the game developer conferences, doing contacts and it's just really not possible.
15:22:29 Right, yeah, we have a few people that create some assembly we're giving talks but they're busy recording them at the moment in their homes.
15:22:38 Right.
15:22:38 Okay.
15:22:40 And then linear algebra, I believe there's a meeting tomorrow.
15:22:45 Is that right, there's an sg 19 meeting tomorrow But Bob and I have made no progress in the paper for a variety of reasons over the past few months.
15:22:55 It's still, it's still gonna happen. We're just we've, we've turned we're transitioning to
15:23:04 single matrix type rather than matrix and better type in treating a matrix as a simple specialization of a, of a matrix.
15:23:15 And I've taken a bit of us taking a bit of implementation.
15:23:19 But to was still rolling along with it.
15:23:24 Okay.
15:23:25 And I believe there's some, some free functions some statistical functions are going to get some interesting functions cropping up this Mean, Median median modal, all those kinds of things are good of discussion tomorrow I believe.
15:23:41 I'll certainly be there myself.
15:23:51 But, as I say, No, no linear algebra. Okay, in particular.
15:23:50 Hello. Hello.
15:23:58 Okay.
15:23:57 Okay, um, I believe exceptions will be one of the topics discussed, and maybe the quite the question of whether they're the right
15:24:07 method of of handling some of the runtime cases. So, so, moral exceptions if you didn't get enough discussion of exceptions. Today, I don't see that on the, I don't think that's on the agenda.
15:24:21 Okay. So 2376 was mentioned a few hours ago.
15:24:34 Oh yes.
15:24:34 And I think that's that's just a pretty good, like a recurring conversation where where where error handling was sort of perhaps contract violation and error handling are
15:24:48 intertwined fair in the US.
15:25:03 It's really interesting two or three years before we get contracts isn't it. Yes. And until then, just frequently Yeah, every now and again.
15:25:00 People will propose an API where, if there's a if there's a bug on the call aside that an exception his throne, and then somebody has to write a paper saying no that's maybe not a good idea.
15:25:12 But, yeah.
15:25:14 Okay, contacts, please, please.
15:25:18 All right. Yes, Allah.
15:25:20 I'll pass on your request, thank you john.
15:25:24 Okay.
15:25:26 Anything else from the special interest groups.
15:25:31 Before we move on.
15:25:35 I think I have sort of covered it other papers.
15:25:41 Perhaps if there are other things going on in WG 21, that people might think are of particular interest to SG 14 but that haven't been raised already.
15:25:54 Yeah.
15:25:57 Do let us know.
15:26:00 And then, future face to face meetings I think also has been covered, probably unlikely in the near future.
15:26:10 And.
15:26:11 Yep.
15:26:15 Also, future standards meetings, again this this this agenda is maybe doesn't doesn't gel perfectly with the way that we do things but they are just continuous and ongoing.
15:26:30 These days, I guess.
15:26:32 Okay. So, moving on to any other business.
15:26:37 Is there anything else to discuss Oh cool.
15:26:44 Yeah, I'll just in the chat it says, How is progress on freestanding stuff I've been slightly out of the loop from Kim.
15:26:55 And if you look through the latest mailings you'll see that there is a, an update to the proposals regarding some of the freestanding stuff and it is moving slowly since Ben is more or less the only one writing any papers.
15:27:15 But it is moving forward.
15:27:18 And I still think the offer to pick up any of the papers described in the overview paper is open, so you can just pick a people you want to right Kim and bring it all forward.
15:27:37 Right, yes.
15:27:39 Bed would dearly love more help with that.
15:27:41 It's all, it's all going to happen but it's going to go at a quicker pace if there's more input.
15:27:45 So please feel free to get in touch with them directly, I guess.
15:27:51 If you're looking for direction on that.
15:27:53 But yes, presumably you're talking about this. This revision here.
15:27:58 Paul, when you talk about the, the latest mailing or.
15:28:04 Yep, I'm not sure yes yes but yeah, okay.
15:28:08 But that's right how mentioned the preview the other day. Okay.
15:28:12 All right.
15:28:14 Anything else, a short summary of contracts sometime, maybe 10 minutes and the next embedded meeting.
15:28:21 If someone can arrange it.
15:28:24 Okay.
15:28:26 I certainly be happy to.
15:28:30 Yes, give an update on contracts, there hasn't been an awful lot in there recently.
15:28:39 I think the last possibly was a paper.
15:28:46 See yes it's.
15:28:57 You have to remember exactly what study group is now.
15:28:54 Yeah, it's
15:28:57 okay yes I think defining contracts was the last thing to come up.
15:29:01 Regarding contracts, and that was because people were kind of talking past each other.
15:29:09 It seems that different developers have very different ideas about what contracts are. And so, Jessica very kindly put together a list of songs like a glossary list of of terms to use that aren't confusing or too controversial to help us talk about contracts
15:29:31 in a more constructive way going forward. But then I know one or two other papers were in draft form but didn't make it into the last mailing yet so not a lot on that in the last month or so but certainly this year there's been a lot of discussion which
15:29:50 is sort of helped and it's maybe not got us closer to a solid proposal but has helped us understand some of the, the differences and direction.
15:30:02 That may be affected the original decision to withdraw contracts from c++ 20.
15:30:11 That's, that's maybe all i have i but i can i can go into detail on some of the newer papers. Next time, if that would be.
15:30:20 That'd be appreciated. And I do think it is of particular interest to to our study group, because the kind of contracts that go into the standard will greatly affect the how we think about the zero overhead principle and, and various other things to do
15:30:42 with performance and latency. So, yes, I'd be more than happy to talk about that next time.
15:30:48 Hope that hope that answers your question, Henry.
15:30:54 So going back to the agenda.
15:30:59 Anything else, And by the way, if you've got any suggestions for next time. Please just mention that in the reflector and it will be added to the to next month's agenda.
15:31:12 And it doesn't have to be.
15:31:17 Financial. I frequently trip, I Frequency Trading specific that obviously will be the, the, the main focus. Anything low latency via, we can chat about.
15:31:30 Okay, the topics, I'd like to maybe touch on, or shaving off costs for a thread local in some cases which probably has people beyond finance caring about so.
15:31:41 Okay.
15:31:43 Yes. Could you make sure to add that to suggest that in the agenda for next time, I'm sure.
15:31:54 Frank is being written up that's, you know at least passable before that point and you guys can decide it's where the further discussion or not.
15:32:01 Sure, please do that would be great.
15:32:03 Thanks.
15:32:05 From the finance side, we're always sort of scrambling for specific things to look at. So the more the merrier is my view.
15:32:18 Well, as always.
15:32:27 The. There may be some interesting stuff coming up in the, in the mailing every month, sure there'll be some new material. By the by the time we meet next.
15:32:32 Okay.
15:32:34 Alright.
15:32:51 So, let's see.
15:32:42 Did we okay this is links to whatever date now.
15:32:48 I don't know if there's been any activity in the, in the GitHub group at the moment I don't really follow that very closely.
15:32:55 But perhaps that that could be a somewhere where we share some of the ideas on the embedded exceptions.
15:33:05 prototype.
15:33:08 Okay,
15:33:13 moving on.
15:33:15 I'm not sure what I took action items there are, if any, I'm not sure if Michaels gone on to his, his presentation that he had to give.
15:33:26 But, yes, I guess.
15:33:29 Yeah, there's some good suggestions about things to talk about next time.
15:33:34 Let's, let's reply in in this thread with suggestions for those because I think nobody's taking notes.
15:33:42 As such, right now, if that seems like an okay idea.
15:33:48 And, yes, that's that's the right date right, July 14 say when it comes up here.
15:33:55 July 14 will be our next meeting, same time, same place.
15:34:01 And so unless there's anything else anybody would like to add.
15:34:10 Okay, I think we're. I think we're good.
15:34:14 All right.
15:34:21 Thank you everybody for showing up.
15:34:18 Look forward to seeing you next time, and have a good evening or morning or middle of the night.
15:34:27 Thank you for sharing. Thank you very much. Thank you. My pleasure. Yeah, see everyone knows you're right. Right. Okay. Take care.
15:34:34 Bye. Bye.

On Tue, Jun 8, 2021 at 10:05 AM Michael Wong <fraggamuffin@gmail.com> wrote:

Topic: SG14 Low Latency Monthly

This meeting is focused on Embedded.

Hi,

Michael Wong is inviting you to a scheduled Zoom meeting.

Topic: SG14 monthly
Time: 2nd Wednesdays 02:00 PM Eastern Time 1800 UTC (US and Canada)
    Every month on the Second Wed,

    June 9, 2021 02:00 PM 1800 UTC

Join from PC, Mac, Linux, iOS or Android:
https://iso.zoom.us/j/93151864365?pwd=aDhOcDNWd2NWdTJuT1loeXpKbTcydz09
    Password: 789626

Or iPhone one-tap :
    US: +12532158782,,93151864365# or +13017158592,,93151864365#
Or Telephone:
    Dial(for higher quality, dial a number based on your current location):
        US: +1 253 215 8782 or +1 301 715 8592 or +1 312 626 6799 or +1
346 248 7799 or +1 408 638 0968 or +1 646 876 9923 or +1 669 900 6833
 or 877 853 5247 (Toll Free)
    Meeting ID: 931 5186 4365
    Password: 789626
    International numbers available: https://iso.zoom.us/u/abRrVivZoD

Or Skype for Business (Lync):
    https://iso.zoom.us/skype/93151864365

Agenda:

1. Opening and introduction

ISO Code of Conduct
<
https://isotc.iso.org/livelink/livelink?func=ll&objId=20882226&objAction=Open&nexturl=%2Flivelink%2Flivelink%3Ffunc%3Dll%26objId%3D20158641%26objAction%3Dbrowse%26viewType%3D1
>

ISO patent policy.
https://isotc.iso.org/livelink/livelink/fetch/2000/2122/3770791/Common_Policy.htm?nodeid=6344764&vernum=-2

WG21 Code of COnduct:

https://isocpp.org/std/standing-documents/sd-4-wg21-practices-and-procedures

1.1 Roll call of participants

1.2 Adopt agenda

1.3 Approve minutes from previous meeting, and approve publishing
 previously approved minutes to ISOCPP.org

1.4 Action items from previous meetings

2. Main issues (125 min)

2.1 General logistics

Future meeting plans

    June 9, 2021 02:00 PM ET/1800 UTC: Embedded

    July 14, 2021 02:00 PM ET/1800 UTC: Finance/Low Latency

    Aug 11, 2021 02:00 PM ET/1800 UTC: Games

2.2 Paper reviews

Deterministic Exception for Embedded by James Renwick
https://www.pure.ed.ac.uk/ws/portalfiles/portal/78829292/low_cost_deterministic_C_exceptions_for_embedded_systems.pdf

Freestanding?

2.2.1 any other proposal for reviews?

SG14/SG19 features/issues/defects:

https://docs.google.com/spreadsheets/d/1JnUJBO72QVURttkKr7gn0_WjP--P0vAne8JBfzbRiy0/edit#gid=0

2.3 Domain-specific discussions

2.3.1 SIG chairs

   - Embedded Programming chairs: Ben Craig, Wouter van Ooijen and Odin
   Holmes, John McFarlane

   - Financial/Trading chairs: Staffan Tjernström, Carl
Cooke, Neal
Horlock,
   Mateusz Pusz, Clay Trychta,
   - Games chairs: Rene Riviera, Guy Davidson and Paul Hampson
   - Linear Algebra chairs: Bob Steagall, Mark Hoemmen, Guy Davidson

2.4 Other Papers and proposals

2.5 Future F2F meetings:

2.6 future C++ Standard meetings:
https://isocpp.org/std/meetings-and-participation/upcoming-meetings

-

3. Any other business
Reflector
https://lists.isocpp.org/mailman/listinfo.cgi/sg14
As well as look through papers marked "SG14" in recent standards committee
paper mailings:
http://open-std.org/jtc1/sc22/wg21/docs/papers/2015/
http://open-std.org/jtc1/sc22/wg21/docs/papers/2016/

Code and proposal Staging area
https://github.com/WG21-SG14/SG14
4. Review

4.1 Review and approve resolutions and issues [e.g., changes to SG's
working draft]

4.2 Review action items (5 min)

5. Closing process

5.1 Establish next agenda

5.2 Future meeting

 

    July 14, 2021 02:00 PM ET/1800 UTC: Finance/Low Latency

    Aug 11, 2021 02:00 PM ET/1800 UTC: Games

Kind Rgds