CppCast - News and Catch-up

Episode Date: March 21, 2025

Timur and Phil return after an extended break with news and updates News Bjarne Stroustrup on How He Sees C++ Evolving Conferences round-up: ACCU Conference 2025 C++ Now 2025 C++ on Sea 2025 ...C++ North 2025 CppCon New Meetups: Singapore C++ USers Group ACCU Cambridge Links "Contracts and Safety for C++26" - C++ London January event "Not Your Grandparent's C++" - Phil's ACCU Cambridge talk

Transcript
Discussion (0)
Starting point is 00:00:00 Episode 395 of CppCast, recorded 12th of March 2025. In this episode, we talk about what's been happening with C++26, upcoming conferences and two new meetups. Then we talk about why the show was on hiatus for the last four months and what we have been up to during that time. Welcome to episode 395 of CBPCast, the first podcast for C++ developers by C++ developers. I'm your host, Chief Modumla, joined by my co-host, Phil Nash. Phil, how are you doing today? I'm all right, Timur. How are you doing?
Starting point is 00:01:02 I'm not too bad. I'm still recovering, Timo. How are you doing? I'm not too bad. I'm still recovering from a cough. I'm going to talk about that later, but it's been going better lately. So I'm back. I'm doing quite all right. And there's also more daylight here in Finland. I think this is the time when I always talk about the weather. So, you know, it's been, it's been all right. What about you, Phil? What, how, how does the world look where you are? Uh, so we, we had about three days of spring over the weekend. We're back to winter again for now.
Starting point is 00:01:37 So we'll, we'll see how that changes. But, um, no, I've also had lots going on and we're going to get into that a little bit, but we are back for now. So let's get into the show. All right. Let's get into the show. So at the top of every episode, we'd like to read a piece of feedback. During those four months where we were not having episodes, we actually received quite a few emails.
Starting point is 00:02:02 99% of those as always are actually spam. Usually there's one of two types of spam. Type one, which is we can help you grow the audience and revenue of your podcast. And type two is, are you interested in having this random guy who is the CEO of this ultra hot AI startup and has nothing to do with C++ whatsoever? Be a guest on your show. Why not? And we actually get a surprisingly large amount of these emails. So that has been going on. But more importantly, we also got several emails from actual listeners. So that's great. What's not so great is that
Starting point is 00:02:38 obviously those listeners were a bit disappointed that we took a break. Yeah. So we got a bunch of emails. For example, David wrote, Hi, I enjoyed listening to the show in 2024. Is it coming back in 2025? And Andreas wrote, No more episodes. So sad. So yeah, thank you for those emails. It's really heartwarming to know that people have missed our show. Yeah. Thank you. So we're back. And we'd like to hear your thoughts about the show. And while you can still reach us on X, Mastodon and LinkedIn, the best way to give us feedback is by email at feedback at cppcast.com. So today, we don't actually have a guest.
Starting point is 00:03:18 Before we had the CEO from the AI startup. Maybe not today. Right. So we did this once before. I think that was our Christmas special for 23 or something. We did this before where it was just you and me. So we are doing this again. We thought it was appropriate to do this since we haven't done an episode in about four months.
Starting point is 00:03:38 So you wanna talk a little bit about what's been going on, both with us, but also with C++ more broadly. But before we get into that, and we have a couple of news articles to talk about. So obviously a lot of stuff has happened in the C++ community in the last four months. So there have been lots of new libraries and tools and blog posts, etc. that have been released. But we've been away for four months, so we won't really be able to catch up on all of that stuff. So I'll skip all of that for today and just focus on a few kind of high level things that affect kind of C++ as a whole. So the first thing is news about standardization and the upcoming C++ 26 standard. Since the last episode, we actually had not one but two ISO C++ committee meetings.
Starting point is 00:04:27 So we got the one in November 2024 in Wrocław in Poland, and you got one last month in February in Hagenberg in Austria. And a bunch of new features have been approved for C++ 26 at those two meetings. Lots of stuff. Again, no time to cover everything. But the most important are from the November meeting, Statsimd. And the other thing was you can now throw exceptions at compile time. Because why not? And from the latest committee meeting in February, we got contracts, we're going to talk about that in more detail a bit later. We got standard library hardening, which is specified on top of contracts.
Starting point is 00:05:07 So it's kind of a particularly interesting use case of that in the standard library. We've got trivial readability, which has been in the works for quite some time. We've got hash embed. And we've got stdhive, which is a new container for the standard library. So two things I have not listed just now.
Starting point is 00:05:26 One of them is reflection. It's not quite ready yet. So the design is approved, but the wording is not ready yet, but it is on its way. So we expect to approve it at the next meeting in June 2025, which will be the feature freeze for C++ 26. So that will be the meeting in Sofia and Bulgaria. So it looks still very good for reflection to get into 26, but we are not quite there yet.
Starting point is 00:05:49 And the second feature that isn't in the CSS 26 draft yet that people have been looking forward to, that many people have been looking forward to, is pattern matching. And pattern matching, unfortunately, missed the deadline. So it's not quite baked enough yet for consideration with CSS 26 and we're past the design freeze now so unfortunately pattern matching will have to wait for CSS 29 which is unfortunate but that is how it works. And one more feature that also didn't make
Starting point is 00:06:20 it into 26 is profiles. This has been talked a lot about over the last few months. Actually, Bjarne Stroestrup released an article recently, or there was an article involved in Bjarne recently, where Bjarne talks about the future of C++, and he thinks profiles are really important for the future of C++. And that's a part of this whole larger safety, security debate that's been going on. But we just kind of don't yet have a proposal that is ready for standardization in this space. And there's also concerns about some overlap with other features like contracts, for example. So profiles are not in 26 because they're not ready yet, but we have a new process. So in the committee, we used to do TSSS for features that were not quite ready
Starting point is 00:07:06 or didn't quite have consensus yet to be included in the standard. So we did like modules, for example, as a TS and a bunch of other things first. So now we have white papers, which is essentially like a TS, but more lightweight without the whole bureaucratic ISO process behind it. So the committee can just release a white paper and then, you know, compilers can implement it if they wish. And so we have decided at the last meeting to work on a new white paper for C++ safety and security, which will involve various features. And
Starting point is 00:07:38 it looks like profiles will be a part of that story. So profiles are coming in some form, just probably not, definitely not in 26 and a standard, but maybe actually rather soon in some other form. Right. I think it's worth just emphasizing one point that you did make, but easy to miss it if you weren't watching for it, that the last meeting in February was the design freeze for what goes into C++26. So there was a big rush to get some often quite big proposals into at least approved, that can still be discussed further, and into the into the working draft. So some of them like
Starting point is 00:08:21 reflection, start over yet because it did get approved but needs wording, I think you said, the worked on. So that's still going to be more work on that. But those other features, and we're going to dig into some of them in a bit, particularly contracts, standard library hardening is actually, maybe we'll talk a bit more about that, is quite a big deal. Tribial relocatability, that's something that's been trying to get in for many years. As with embed and Hive, this is actually going to be quite a big release and quite an impactful one, which is something we will talk about a bit more. But yeah, if you were at the meeting in February, they were even just observing from the sidelines. It was a really big meeting, some really big, momentous stuff going on. So
Starting point is 00:09:05 headlines was a really big meeting, some really big, momentous stuff going on. So it might not be so easy to appreciate that from the outside. So I think it's worth just pulling out. Yeah, we will talk about this later, but it was certainly the most intense committee meeting I have experienced in my eight years or so. Well, I think for you especially, yeah. But also actually quite a lot of other people have said the same thing, including people who have been on the committee longer than me. So I think this was quite a shared experience that this was a particularly intense one.
Starting point is 00:09:31 Like we always have every three years, like the meeting where the design freeze happens is always the most stressful one. But I think there was just a particular wave of features that had a lot of discussion around them, a lot of concerns being raised over them. So it was just, you know, quite intense. We'll talk about that in a bit. So apart from standardization, I wanted to briefly mention upcoming C++ conferences for this spring and summer season. So we got ACCU, which is coming up in Bristol, UK, from the first to the fourth of April. So that's in just a couple of weeks. There's a really awesome lineup there.
Starting point is 00:10:11 There's amazing talks. Lots of interesting people will be there. We got four keynotes, Nastasia Kozakova, Daisy Holman, Kalila Stel and Matt Godbolt. And of course, I'll be there, Phil will be there and lots of other people will be there. So if you're at or near the UK or you can travel there. Tickets are still available, is that right, Phil? They are definitely still available as we talk now and as this will be published, but time is running out. So if you did listen to this straight away, then you'll need to go and check. But yeah, right now you can still get them. I would also say that another thing that's a little bit different this year
Starting point is 00:10:48 is that we have some online workshops. So we have some workshops, training classes, just the day before on site as usual, but we also have a two day online workshop before the conference and two one day workshops after the conference online. So that's a bit experimental for us. It's also a hybrid conference still. So you can also buy online tickets if you can't get to Bristol.
Starting point is 00:11:15 All right. Thanks, Phil. So there's another conference shortly afterwards from the 28th of April to the 2nd of May, which is C++ Now in Aspen, Colorado. Very different conference, but also very awesome in its own way. Also really awesome lineup. They have recently partially announced the schedules. They listed a bunch of the sessions that are going to take place. Some really good stuff there. Not yet the keynotes.
Starting point is 00:11:41 But yeah, again, you can still get tickets. Then we got another UK one that Phil might also be involved in, which is CPP on Sea in Folkestone in the UK from the 23rd to the 25th of June. So that one is a little bit further out. So the call for speakers has already closed, but the schedule is not yet announced. Is that right, Phil? Yeah, yeah. We haven't made the speaker selection yet. That's in progress.
Starting point is 00:12:07 But we do have the keynotes and we've got three big names actually. Herb Sutter, Christian Schaeker and I don't know if you've heard of this guy, Timur Dumla. He's going to be our third keynote speaker. Just wanted to mention Herb especially because, not because he's particularly bigger than Intima, but we managed to get to Herb because C++ on C this year is running exactly the week following the next standards committee meeting in Sophia. So a lot of people that often only leave the US for standards meetings will actually be sort of passing to or from Sophia. So Herb's agreed to come and give us a keynote, which is great, taking advantage of that. And even the Christian Shaker is a little bit unusual
Starting point is 00:12:58 because some of you may know she's actually left the C++ community. She'll talk about that in the keynote, I'm sure, but she's agreed to come back and give us a keynote. So we are particularly pleased with all three keynotes this year. Yeah, so Kristen has done really awesome work in the tooling space. And obviously, I'm very excited about Herb and I'm deeply honored to be among those keynote speakers as well. So thank you again, Phil, for inviting me. We are honored to. I will talk about some stuff there. So I can look forward to that. Okay. Well, we got two more conferences. I want to mention very briefly, we got CPP North in Toronto in Canada, 20th to 23rd of July. Call for Speakers has already closed a couple of weeks ago, but schedule is not yet
Starting point is 00:13:40 announced. A schedule is not yet announced. And we got CppCon, the big conference in Aurora, Colorado, on the 13th and 19th of September this year. And the call for speakers for that is not open yet, but we're actually planning. So if people are not aware, I'm actually the program chair of CppCon at the moment. So I'm responsible for putting together the schedule and we have started preparing things there and we are planning to open the call for speakers quite soon. So watch out for an announcement on cppcon.org. And then very, very last thing I want to mention. So there's obviously lots of C++ meetups happening locally all around the world, which is great. That's really the backbone of the C++ community.
Starting point is 00:14:27 And we cannot obviously keep track of all of them here on the show, but we'd like to mention new meetups that are springing into life because that's always a very exciting thing to happen. And this time we got actually two new meetups. So there's a new C++ meetup in Singapore. They got a page on meetup.com. We're going to put the link in the show notes. And they have a first meetup scheduled on the 2nd of April. So that's also just a few weeks from now, taking place at the National University of Singapore. They are looking for speakers for the first meetup and also subsequent meetups. So if you live in Singapore and you're excited about C++, which if you're listening to the show, you probably are, then please get in touch with them. And there's also one more meetup,
Starting point is 00:15:10 which is not exactly a C++ meetup, but very C++ focused. Do you want to talk about that, Phil? Yes. So this is ACCU or Accu Cambridge. So there's a number of ACCU meetups around the UK and even outside the UK actually. A lot of them, most of them actually, didn't survive the pandemic or haven't come back yet. One of those was ACC Cambridge. I was often asked, when they're going to be out of ACC Cambridge? And I would say to the person asking me, well, maybe you want to organize one and then nothing happened. So just last year, I started doing some work with Undo and they are based in Cambridge as well.
Starting point is 00:15:52 And they were also saying they'd like to see this meetup come back. Can they agree to actually fund me traveling to Cambridge if I could start hosting and organizing this meetup and get it going again? So I've been able to bring that back to life. And we've had two really successful meetups already now. We had about 30 or 40 people at each one, which is quite good.
Starting point is 00:16:16 We want to keep that going. So if you are in or around Cambridge, we've had some people come down from Norwich to the meetups. So it is quite accessible. Then do please come and help us to keep that going. As the team has said, it's not a pure C++ meetup, but it is really strongly C++ focused at its core. And so far, most of the content has been C++ focused. We'll put that in the show notes as well.
Starting point is 00:16:44 OK. Thank you, Phil. Very exciting. So Cambridge is actually not that far from London, so... No, that's true. There are some people that come out from London as well. But it's interesting that Cambridge has its own kind of community. I think there's a lot of interesting development happening there specifically, isn't there? I mean, talking of C++ development happening there, C++ was developed there. Bjarne was actually at Cambridge University when he first started work on what became C++. That is such an interesting piece of trivia. I did not know that. Do they have like a plaque somewhere and Bjarne's just worked here or something? I guess they have enough more famous people for that, but that could be cool. Bjarne sat here, yeah, probably.
Starting point is 00:17:31 So let's get into our guests for today, which are of course us. You've met us before, we're going to introduce ourselves again, but we have been missing in action for a few months. So Tima, first of all, you, what have you been up to then for the last four months and why have we not been able to record episodes? So a lot of stuff has happened actually. So after we recorded the last episode, which was like mid November, I had a bit of a conference marathon. So I went to London for the auto developer conference, then immediately from there to Berlin for the meeting C++ conference. I had talks at both of those. And then immediately after that, I went to the Rotswaf kind of committee meeting. That was super intense,
Starting point is 00:18:17 a lot going on there. And as soon as I got home from that, I got sick. So I was, I was out of action for a few weeks. It was, it was quite bad. Then it was Christmas and New Year's and then I got sick and simultaneously I got really maxed out with, with contracts because working on standardizing contracts has been pretty much my main job over the last year or so. And then we'll ask you more about that in a minute. And there was, there was a lot happening there. So I was like trying to like get the stuff done that had to get done while trying to recover from a bug. And that was not
Starting point is 00:18:54 a good idea. Then around the same time I had something else going on. So actually, I have this completely non-Cars related thing, but I'm trying to do at least one, at least a few like non-Citrus-Stars related things once in a while. So I'm also into music and I have this friend in Berlin where I used to live and we used to have a band together and he has a gig with his band at the Berlin Prog Night. So that's all like, kind of math rock and prog metal and things like that. And he needed a bass night. So that's all like, kind of math rock and prog metal and things like that. And he needed a bass player. So he was like, Hey, can you like because I use I play bass, so he's like, Yay, can you help me out here? And I was
Starting point is 00:19:34 like, Yeah, this is so cool. Let's do this. And so he was like, Okay, can you learn these like eight insanely complicated songs with like crazy, like polyrhythmic, like things going on and whatnot, like in a month. And I was like, sure. Um, so that was a lot of fun, but that was pretty intense. And then as soon as that gig was over, um, I got sick and, uh, yeah, I was a fever and, and off and all kinds of stuff. And then I still haven't recovered fully. And then we had the Hagenberg meeting, which was just insane. It was like, probably the most intense week in terms of at least work and like C++ related stuff, work that week that I think I ever had. And I, and because I went in
Starting point is 00:20:21 there kind of not fully recovered yet. once that was over, I got really sick. And I got like pneumonia and I was out for like an entire month. I was just knocked out. I was just in bed. It was horrible. So I just couldn't do anything at that point. And I'm just coming out the other end from that. Like I still have a pretty bad cough, but I don't no longer have a fever and I kind of feel like I can actually kind of do stuff again. But yeah, it's been it's been pretty bad. So so most of the time I was either crazy busy with with projects where certain things just have to happen today, or just have to happen by like by a certain day. Or I was just really sick. I was really trying to like, can I somehow make CVP cast happen, but it just was not possible. So I do apologize to the community for that. It was mostly,
Starting point is 00:21:17 I think, mostly I could have juggled it with all the other stuff if I hadn't gotten sick, but I was just really unwell for like, I think two thirds of the time while we were away. So it was, it was pretty bad. So, yeah, so hopefully things will be a bit more chill and positive going forward. So I hope we can get back into a kind of usual regular schedule. I do not intend to spend the next couple of months being sick. Glad to hear that. Yeah. Make sure you get well. We can live without you for bit longer. That was a pretty nasty workload on top of getting sick. So sorry to hear about that. But thank you for your services to the C++ community because that was all in service of
Starting point is 00:22:00 getting contracts into C++26, which you did. Obviously not just you, but I know you were instrumental in that. So thank you. But do you want to talk about what we actually got in contracts? So what we have achieved, obviously a bunch of other people involved in this, not just me, is we got the first feature set of contracts, kind of what we believe to be a good foundation for the feature into the C++ 26 working draft, which means it will be in the upcoming C++ 26 standard. And yeah, that is very exciting because it's like over two decades of people trying to standardize contracts in some form or another.
Starting point is 00:22:45 And then we were after they got ripped out of C++ 20, which happened in 2019, we started the study group at C21, which I was also co-chairing. And then over the last year and a half, I got more heavily involved into like the actual technical side of things, like trying to like specify all of this correctly. And I think a lot of the work I was doing was kind of the kind of all the politics behind it, because it turns out that a lot of people have very strong opinions on this feature and some design decisions where you kind of have to pick A or B, it was kind of like two thirds of the people want A, but like one third of
Starting point is 00:23:19 the people is really against A and like wants B or wants something else that they haven't actually specified themselves yet, but not A. And juggling that to try and get the committee to like agree on one thing was a lot of hard work. I think probably harder than like writing the actual specification and like scheduling the telecon and whatnot. But yeah, we got there. And in the end, actually, we had lots of discussions in Hagenberg and lots of presentations about should we do this, should we do that. But in the end, we got actually very strong consensus on contracts and plenary. So I'm not sure I can, I'm not actually sure if I'm allowed to disclose like the numbers of like how many people voted which way. I'm not sure I can, but I-
Starting point is 00:24:06 Strong consensus, isn't it? Yeah, there was a very strong consensus to get contracts under 26, which was very nice to see. We got one casualty, which is pre and post on virtual functions, which we had. First, we had a design in place for a few years, which was kind of if you put PMPost on a function and it's a virtual function that you override it, you kind of inherit those contracts.
Starting point is 00:24:33 Then he found out that for a bunch of reasons, it doesn't quite work for C++. Like it does work for Ada and D and IFO, which are some of the languages that use that model and have contracts as a language feature. The first of all, it breaks in the presence of multiple inheritance and the way that the US has it. And then there's a bunch of other like issues because of the way C++ works and the way we use inheritance and version functions C++ that that model does work. So we took it out and we didn't have it. And then people said, but we have to support contracts and virtual functions, it's a must have feature. So they came up with a different model, which then had approval in St.
Starting point is 00:25:14 Louis that was June last year. Like people enthusiastically voted in favor of that design, which was basically, you know, every, every function has its own contract, regardless of whether it's virtual. And there's like, if you call one function and then vtable, lookup, select another function, you kind of just check both sets in a particular order. That made sense to a lot of people back then, but then half a year later, turns out that it made less sense now for a bunch of people, or they said, oh, but like this use case isn't covered by that. And this is a new model that we don't have experience with. So there were concerns and it was threatening to sync the whole proposal. So the compromise we
Starting point is 00:25:55 reached was that we're just going to remove that feature again. So now in CSS 26, you won't be able to put PNPOST on virtual functions. So that's kind of great because if you have a some kind of library or framework that heavily relies on polymorphism, like I can think of lots of things like a GUI frameworks typically, or like any hierarchical things like that tend to be written in this like classical kind of object oriented style. So you can't put contracts on those functions with C26, but that gives us more time to make sure we get it right for 29. And in the meantime, we can put contracts everywhere else.
Starting point is 00:26:33 So I think that's a win. Yeah, better to actually have contracts without that feature than not at all. And yeah, we also got implementations now already in both GCC and Clang, which are obviously not in the main line, like how you say, the trunk yet, because it's not, the standard isn't out yet. But we got those implemented. And yeah, let's see. Let's see how what happens when this feature actually gets out and gets used in the wild. I'm very excited about that. And in fact, I'm going to talk about that both at ACCU and also at CBP on C. So if you want to hear more,
Starting point is 00:27:14 then you can come to my talks at those conferences. Yeah, come to both conferences. But also, one of the things that, well, the last time that we both met was in London for a C++ London event where we had as well as you a number of other people from the working group and beyond actually, just there to talk about contracts and because at the time there were a number of misconceptions and things flying around. This was before the Hagenberg meeting. It gave you an opportunity to set the record straight. And I think that's actually still very good
Starting point is 00:27:49 watching. So we'll put a link to that one in the show notes as well. Yeah, that was a good event. Thank you again, Phil, for organizing it. That was good. So yeah, I think that was, I mean, not so much about like just mechanically how the feature works, even though we talked a little bit about that. But I think it was mostly about how it fits into the larger picture of safety and security and C++. And people were concerned that, oh, but contracts don't actually address safety because they don't actually magically remove UB from the language, which is what people some people think this safety is about. Yes, they don't do that because they're not designed to do that. They're designed primarily for functional safety, which is something else than language safety or memory safety or those things. So yeah, it was a good opportunity to be a little bit more clear about what we're actually talking about, how it all fits in, what the bigger picture is, what you want to do beyond 26.
Starting point is 00:28:47 Because there was a bigger picture. We want to fix safety and security for C++26 and make it a safe language. So there is a big master plan here, which a bunch of people have very good ideas there. I think we have, I think it's doable. I withdraw my statement that I made, I think at CPO and C, was it in 2023 where I said you can't make CPO C++ safe? I think you can. And we're working on it and contracts is just the first piece of the puzzle. So that was a good opportunity to talk about that stuff. So thanks again, Phil, for organizing it. Very welcome. And glad to hear that you think we can make C++ safe. So let's see what what happens next. And again, thank you for your service to the C++ community and doing all of that
Starting point is 00:29:35 with the background of being ill and all the other stuff going on, which which can't have been fun. So I'm glad that's all over for you now. Yeah. So so while that is stuff, and thank you very much for your kind words. I think going forward, I want to do a little bit less of that and a little bit more like fun projects, I think. Recommended. Definitely. That's it. We need you to see it
Starting point is 00:29:57 through for 29 as well. That said, we do have some kind of proposals on top of, as I said, like there's a lot to do. There's a bigger picture of making C++ safe. And there are also just more immediately a bunch of proposals on top of what we now got in 2016, like virtual functions and a few other things that we do want to get into C++29 as early as possible. So I guess I will be involved in that to some degree going forward.
Starting point is 00:30:26 And we'll cover all of those down the line as they happen, I'm sure. All right. So we talked a lot about what I've been up to, including all my various health issues. But there's two of us here. So Phil, I'm actually very, very interested in hearing what you've been up to the last four months while we didn't record any episodes of the show. Yeah. We haven't actually talked about it that much, so I'm actually very curious.
Starting point is 00:30:50 Yeah, well maybe you'll be disappointed. It's not that interesting, especially compared to your story. Well I hope you spend less time in bed with a fever than I did. I did. I've not been that well either, but not to the same degree as you. In fact, there were a couple of times where we were talking and you were saying, yeah, I'm not going to be able to do another CPP cast for a while yet. And I said, don't worry, you know, you'll get well. I'll sort something out. We'll get a guest on, a guest co-host on. And I didn't do it either. So I apologize for also not holding my part up, but I mean, some of my stories are a bit the same. Went to meeting C++ and then Ruslov for the standards meeting and for code dive as it happens. Oh, and because I'm now independent, I've been doing a lot
Starting point is 00:31:42 of training, which has evolved a lot of extra travel, which is independent I've been doing a lot of training which has evolved a lot of extra travel which is something I've been trying to get away from so that really threw me back a bit. I wasn't planning for quite so much travel at the end of last year, in the beginning of this year but so not that interesting as a story. Also I did start ACCU Cambridge and that's involved again more travel. And now we are in the conference season for this year and I've been just heads down trying to get through all of that. Actually, we've got one down C++ Online. We had a couple of weeks ago, but I've still got three more conferences coming up that are all sort of layering on top of each other at the moment.
Starting point is 00:32:22 So it's just been, um, just been a lot of the usual stuff. And with, um, with you not around as well, it's just been easier to take a, take a step back for a little while. So I hadn't quite intended for it to go on this long. So apologies for that, but we are back now and we will try to stick to our regular schedule for a while, get some some real gasps in and talk about some more interesting stuff. But actually one thing I did want to mention is the first ACCU Cambridge event.
Starting point is 00:32:59 I actually decided to do one of my own talks there. And the reason was it seems to be one that sort of captures a bit of the current wave around C++ at the moment. Obviously, there's a lot of talk about safety in C++ and how contracts fits into that and other things that are coming, whether we need to be moving off to other languages. And this was the talk I've actually been doing for a few years and it seems to have taken on a new meaning because it really covers the history of C++, the context it was born
Starting point is 00:33:30 into, the founding principles, how it evolved through that time and how it's weathered previous challenges. And now it's come to this sort of new, sort of challenging moment, you know, how are we going to evolve it to meet this challenge? I think it's interesting to look back, particularly if you haven't been in the C++ community all those years and saw it all firsthand, just to take that historical context in and actually see how it all has gone and will go and what some of the thinking is that have led to where we are now, because you've just come into C++ today and think, why is this language the way it is? Why are we held back by certain things? And you take that historical view.
Starting point is 00:34:14 Is that the Not Your Grandparents SuperSus Talk? That's the one, yeah. I'll put a link. I saw it in Munich at the... Oh, that's another thing I did actually that was in December and and and you might have noticed that I actually disappeared and like yes throughout the meetup because I was actually not feeling well but I I somehow made it to Munich and gave a talk there and I did catch your talk there as well it was that talk so that was a really good talk yeah thank you can sorry can people watch it online somewhere? Yeah, so the Munich
Starting point is 00:34:48 one is online, but the ACC Cambridge one is the latest version. We did that one in January, that one's online, so I'll put a link to that in the show notes. And because it is sort of tracking the current C++, every time I give it, it's updated a little bit because we know more stuff. But also for the last one, I actually went back and reread a lot of the design and evolution of C++, which was a book that Bjarne did in the early 90s, going back to the origins of C++, but also what he had in mind for the future, where he wanted it to go. So at the time they were just starting standardization, but even beyond that, it's amazing how much of what we're still working on today was actually captured in that book. So that was quite interesting. It's funny that you mentioned that because I also have that book just behind me on my bookshelf and
Starting point is 00:35:37 I also recently had to go back into it and look something up and I actually do that regularly. So it's a great book. Yeah, so in the context of contracts, we had a discussion about like zero overhead and people were questioning whether contracts are zero overhead or not. Like if you don't check them, the contract assertions, whether they're that's zero overhead. And then there was a discussion about what that actually means. And turns out people have different ideas about what it means. And then, you know,
Starting point is 00:36:05 I went and then somebody asked, so what what is the actual definition of the zero overhead principle? Because one of the cornerstone design principles of seatless class, right, right from the beginning. So I was like, yeah, bet. You know, it all goes back to that book. So I looked it up in beyond us, design and evolution of seatless class. And yet is there there is a paragraph about it with a Bjarne's Design and Evolution of C++. And yet it's there. There is a paragraph about it with a definition that actually still holds to this day and perfectly also fits into what we were doing at the time or what the conversation was about. But yeah, as you said, like it's really fascinating to see how like a lot of what we're doing with the language even still today just goes back to all of that stuff that's in this book.
Starting point is 00:36:42 Yeah. Although I think, and maybe if Bjarna's listening here, you can correct me if I'm wrong here, but I think that formulation of zero overhead and don't play for what you don't use, that those two things usually together, I think that only really came about in the, maybe the late eighties. The, the underlying principle though, the thinking behind it was what Brianna was originally thinking of when he was playing with BCPL and similar. And just wanted the high level abstractions are similar, but with the low level performance of and native access of BCPL. I think the best of both worlds, that was really what he wanted, but he didn't quite word it that way until a bit later. So it's actually funny from today's perspective. So I just have this book in front of me now
Starting point is 00:37:30 and there's like a sprouting, how do you call this tree, like the sprouting baby tree with like three leaves. And I think it kind of suggests that C++ is this brand new like kind of sprouting, kind of new thing that kind of still has to prove itself. And yeah, that's kind of funny from today's perspective, where a few decades later, people talk a lot about successor languages and how C++ is like legacy now and whatnot. So yeah, quite interesting. Yeah. Yeah. So that's what I've been thinking about for the last few months, really. Sort of parallel to what the rest of the community has been doing. And we'll see whether that actually leads to anything new.
Starting point is 00:38:18 I've got some irons in the fire that I'm not quite ready to talk about yet, but I think I should play into that. So we'll revisit that topic when I have more to say. So have you solved the safety and security problem in C++? While we were all talking about it. I will leave that undefined. Okay. Well, we will come back to that. I'm intrigued now.
Starting point is 00:38:41 Okay. So yeah, I think this is kind of a good summary of what we've been up to. So I think maybe we can even leave it at that and focus on getting an exciting new guest for next episode two weeks from now. What do you think, Phil? Absolutely. Yeah. Yeah, I think we really just wanted to do a bit of a catch up, reassure people that we're still around. that we are back, and we should resume our schedule. So, Phil, this is traditionally the last question
Starting point is 00:39:11 that we ask our guests, but I guess we can ask each other. What do you think is the most kind of exciting thing that's going on in SQLSource right now? So every time we asked this question last year, but I'll take nine times out of 10, the answer was reflection. There was one guy I remember who said something else. That was Neil Sloman. And I think there was one more person who said something else. Everybody else said reflection. Honestly, I might even still say the same thing. And we're so close to getting in to C++26, it may still get in, but it's not a done deal yet. Because I think that really has the potential to change what we can do with the language.
Starting point is 00:39:53 To the point that a lot of our evolution concerns may become less important because we can build them in ourselves. So that, but also the whole safety issue. Not because it's directly applicable to what I do, but just because it's such an important thing for the language and its evolution that it's just going to impact everything. So I'm just really interested to see still where that's going, how things like contracts play into it. Yeah, I think that's, that's what I find most interesting. All right. Yeah.
Starting point is 00:40:24 What about you then? Yeah, I think there's what I find most interesting. All right. Yeah. What about you then? Yeah, I think there's a lot of overlap. I think everything you just said, plus I'm obviously very biased. I'm quite excited about making contracts even better because there are lots of use cases that you can't quite address with what we have in 26 right now. In particular, you can't do things like, you know, I want this contact assertion to always be checked. Uh, and I want this contact assertion to never terminate my program and, or to always terminate my program if it fails. Um, and I want these contact assertions to only be checked in super debug mode
Starting point is 00:41:02 because they're like slow and these others to be checked in every debug build or in every release build or whatnot. So it's kind of more fine grained control, which is something that almost everybody will need who wants to use them at scale that we kind of don't have yet. And we are working on that. There is a proposal that we already discussed at Hagenberg, but it's just kind of not ready for the standard yet. But yeah, I'm very excited about actually, um, kind of evolving this feature into something that's really mature and that can be used at scale throughout code bases everywhere. Um, so that's kind of something I'm really excited to see.
Starting point is 00:41:36 And then I'm excited to figure out what I'm going to do next with my career because I haven't quite figured that out. I think I will be. Certainly, as I said, involved in, in standardization for some time to come, but I don't think it's going to be my main thing necessarily going forward. So yeah, I'm kind of excited about trying to figure out what to do next. And this is kind of the journey I'm on. It's, I don't, I don't, it's not about C++, it's more about myself.
Starting point is 00:42:01 So apologize for talking a lot about myself. This episode, I normally try to do a bit less of that. But I think I have failed. This is your chance. Make the most of it. Maybe we'll do another episode like this when you've figured it out. Okay. Yeah, that's great. All right. So yeah, I guess that's enough talking about us. Thank you all very much for listening and we will be back two weeks from too. You can email all your thoughts to feedback at cppcast.com. We'd also appreciate it if you can follow cppcast at cppcast on X or at mastadon at cppcast.com on mastadon and leave us a review on iTunes.
Starting point is 00:42:55 You can find all of that info and the show notes on the podcast website at cppcast.com. The theme music for this episode was provided by podcastthemes.com.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.