CppCast - News and Catch-up
Episode Date: March 21, 2025Timur 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)
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?
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.
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.
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
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.
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.
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.
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.
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.
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.
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
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
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
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
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
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.
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.
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
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.
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.
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.
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
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
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.
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,
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.
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.
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.
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.
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,
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
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
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
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,
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
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.
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
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-
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.
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.
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
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.
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,
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
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.
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
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
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.
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.
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
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.
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.
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
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.
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
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
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,
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.
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
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.
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.
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
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.
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.
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
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.
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.
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.
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.