CppCast - CoreCpp 2021

Episode Date: September 23, 2021

Rob and Jason are joined by Amir Kirsh and Avi Lachmish from Incredibuild. They first discuss Idle, a new C++ framework, the September ISO mailing and an Algorithm Intuition Chart. Then they talk to A...mir and Avi about the recent CoreCpp conference, Bjarne's keynote and other talks from the conference. News Idle: an asynchronous and hot-reloadable C++ dynamic component framework September ISO Mailing Algorithm Intuition Chart Links Core Cpp Conference Bjarne Stroustrup Live on Core C++ Conference – Q&A Session Core C++ 2021: Bjarne Stroustrup - Thriving in a crowded and changing world Rust vs C++ and Is It Good for Enterprise Sponsors Use code JetBrainsForCppCast during checkout at JetBrains.com for a 25% discount

Transcript
Discussion (0)
Starting point is 00:00:00 Episode 318 of CppCast with guests Amir Kir offering a 25% discount for purchasing or renewing a yearly individual license on the C++ tool of your choice. CLion, ReSharper, C++, or AppCode. Use the coupon code JETBRAINS for CppCast during checkout at www.jetbrains.com. In this episode, we discuss C++ ISO papers and algorithm intuition. Then we talk to Amir and Avi. Amir and Avi talk to us about the Chorus of the Plus developers by C++ developers. I'm your host, Rob Irving, joined by my co-host, Jason Turner. Jason, how are you doing today? I'm alright, Rob. How are you doing?
Starting point is 00:01:40 Doing good. I don't know about you, but I'm starting to get very excited for the movie Dune coming out in exactly one month from recording. I actually did not know when it was coming out. I mean, I've seen the original movie like a half dozen times and it's weird. And then I just read all five books in the original trilogy. I'm a very slow reader, but I started reading it a year ago. And then when I heard the movie got delayed, I just like put it down for months and months and months and i finally started reading it again i'm committed to finishing it before next month but uh yeah got some more reading to do i do find it slightly annoying that the way the title is stylized in the new movie cover it looks like dunk it really
Starting point is 00:02:18 looks like d-u-n-c uh-huh yeah um but anyhow yeah anything else you want to talk about before we get going uh maybe you know just a little plug for cbp con if you're still trying to decide whether or not you're coming it's in a month of course we don't know what exactly the situation around the world is going to be we do know that europeans are not going to be able to come to america yet because the biden administration just said the first of november is when they plan to open up European travel. So that's a week too late. Um, but, uh, you know, if you're still thinking about it, you know, go ahead and make your decisions. Flying inside the U S seems to be pretty safe right now in Colorado is in a pretty good state besides being a pretty good state. And if you did want to attend and you're outside of the U S you can definitely get those virtual
Starting point is 00:03:04 tickets still, right? Yeah. There's the virtual tickets. And also did want to attend and you're outside of the U.S., you can definitely get those virtual tickets still, right? Yeah, there's the virtual tickets. And also, since I haven't mentioned what talk I am giving, it was officially accepted. Well, I am supposed to be teaching a class, which is going to be one of, I think, only two classes that's still going to be on-site. Because I live here, so if people want to come to my on-site class, I'm going to put on an on-site class. And that is practical performance practices and it's kind of like my take on best practices but which like how do you do that in the light of performance being a higher concern and then the talk that i'm giving
Starting point is 00:03:36 is your new mental model for constexpr and okay i don't think i really intended this but it's kind of like if you were to argue that my rich code for tiny computer cbp con commodore 64 talk was part one and constexpr all the things with ben dean was part two this is part three of of that unintentional very unintentional series of talks but it directly ties into those other two. Very cool. Okay. Well, at the top of every episode, I'd like to read a piece of feedback. We got a lot of great feedback from last week's episode with Bob Nystrom talking about Dart and his Crafting Interpreters book. This one is a tweet from Elliot and he wrote, the episode has it all. Thank you for the concise explanation of dark, well articulated and very accessible crafting interpreters paperback ordered.
Starting point is 00:04:32 And Elliot did realize that he misspelled dart as dark and said, pardon the typo. Dark will be the name of my experimental programming language. But Bob actually pointed out dark is already a programming language. Yeah, then we had a little side conversation on Twitter there about maybe it requires you to use their Dark Mode IDE. Yeah. Wild how many languages are out there.
Starting point is 00:04:55 Yeah, I know. I actually at some point a few years ago, someone made a comment on CoffeeScript or whatever. And I'm like, well, I've got ChaiScript. And they're like, oh, I knew that would come eventually. You copied so-and-. And I'm like, well, I've got ChaiScript. And they're like, oh, I knew that would come eventually. You copied so-and-so. I'm like, actually, ChaiScript is three years older
Starting point is 00:05:11 than this other thing that you're referencing. Whatever it was. I don't remember the exact conversation now. But yeah, if you can name a word, there's probably a programming language for it. Probably. Probably. Okay, we'd love to hear your thoughts about the show. You can always reach out to us on Facebook, Twitter, or email us at feedback at cppcast. Probably. Probably. Okay. We'd love to hear your thoughts about the show. You can always reach out to us on Facebook,
Starting point is 00:05:26 Twitter, or email us at feedback at cppcast.com. And don't forget to leave us a review on iTunes or subscribe on YouTube. Joining us today is Amir Kirsch. Amir is a lecturer at the Academic College of Tel Aviv and dev advocate at Incredibuild. Amir is also one of the organizers of the Core
Starting point is 00:05:41 CPP Conference and Meeting Group and a member of the Israeli ISO C++ National Body. Hi, Jason. Hi, Tony. Hi, Mir. Also joining us is Avi Lakmish. Avi is an expert in web and networking technologies, operating systems, and software development methodologies.
Starting point is 00:05:58 Avi has extensive experience in C++ object-oriented analysis and design and distributed architecture. He's also a member of the Israeli ISO C++ National Body, and Avi recently joined IncrediBuild in his career path. Avi, welcome to the show. Thank you. I'm excited to be here. I'm curious, a question for both of you. How large is the Israeli National Body at this point?
Starting point is 00:06:20 It's about, I think, between five to ten people. Okay. Okay. It's five to ten people, I mean, in regular meetings, but I think that we have about 20 people registered to the group, so the group is getting people from Israel who do C++ and have the expertise to influence or to interact on that. And we have bi-weekly, two meetings a month, reviewing papers, talking about papers from the mailing list. Very cool. One of those confusing English words there, bi-weekly or bi-monthly, do you mean every other month or do you mean twice a month? This is why I interpreted what I mean. And we've covered the founding of the Israeli national body, I think, on CBPcast over the last couple of years or whatever.
Starting point is 00:07:19 I'm trying to remember, like, how old is it now? It's relatively young, but seems to be moving along, right? Yeah, I think it was founded a bit before the Prague meeting. That sounds right. Yeah, yeah. They announced us there. And Prague was the last meeting. Last in-person meeting, yeah. The idea was somehow raised, I think raised in the Core CPP conference on 2019. I think Bryce pushed for it.
Starting point is 00:07:50 You should have an Israeli national body, and he did that quite well, probably. So, Ibn Balevi and others took the glove, and here we are. Mikhail Be'eri, Dan, yeah, a lot of people. Sounds like something Bryce wouldce would do all right well uh amir and avi we got a couple news articles to discuss uh feel free to comment on any of these and we'll start talking more about the recent course people's conference and uh some other stuff okay yeah all right so this first one is a project on GitHub. This is called Idle, which is an asynchronous hot reloadable and highly reactive dynamic be a similar Java thing for being able to, uh, you know, modulately, you know, componentize your, your code and be able to swap things in and out so much easier in Java with the JVM and introspection, you can just pull stuff out of there, but it seems like it's pretty powerful
Starting point is 00:09:00 though. The, the author is, you know, definitely saying it definitely saying it's not production ready yet, but he's encouraging everyone to try it out. It looks fancy. It does look very fancy. I feel like we should find the author of this project and get them on the show. That would probably be a good interview, yeah. Did you two have a chance to look at this one? Yeah, I've just looked at the examples and read a bit about it. It's cool the way that it defines its dependencies so it could understand what it needs to make sure that it's still up
Starting point is 00:09:32 while using a certain service that is dependent on another service. Then you understand the environment that it runs in. Other than that, there is a note that's saying that this is not ready yet and you shouldn't use that in production. So I haven't had the chance yet other than looking at the examples, doing with it anything else. I guess to be fair, is any software ever really ready for production? That's a good question. Very true. Very true.
Starting point is 00:10:02 Okay, next thing we have is the September mailing for ISO C++ papers. And obviously there's a lot going on here. And I kind of want to just throw it over to Amir and Avi on this one because you're both members of the ISO committee. Anything we should be highlighting here? Yeah, there are a few. One of them that beat me a bit, which is the Lambda trailing return type. The idea is that the trailing return type
Starting point is 00:10:30 doesn't take into consideration the capture. So it uses the identifier before it is using the capture. So there could be a mismatch between what the body of the function understands about the identifier and the trailing return type. And then weird stuff can happen. You could decide that you would like to return a double when it's actually returning an integer. And then a strange thing might happen. You could do a metatemplate programming in the lambda itself.
Starting point is 00:11:01 And then a strange thing might happen. The best thing that can happen is that you won't be able to compile. The worst thing that can happen is that you might really compile and run, and a strange thing still can happen. So currently, if I understand, on the trailing return type, you cannot reference the captures at all. And this change would let you say trailing return type, decl type of capture 1 plus capture 2 or whatever.
Starting point is 00:11:30 Yeah, the idea is that when you're capturing by value, then weird things might happen because the default of lambda is const, and therefore the values when they are used, they should be considered as const
Starting point is 00:11:47 and therefore the real things might might might happens as well other than just understanding a different reducing type from from the from the type itself it's really an interesting yeah go ahead yes sorry go ahead no no go ahead I think that this paper is related in the subject to the abbreviated lambda effort that is being pushed. And in a way, C++ needs or would benefit from abbreviated lambda, but of course, only if it works as expected. So, you know, the return value that you would get would be the same that you actually expect. So I'm not sure that this touches the same issue, but I think the whole discussion around lambda today is related to the question of abbreviated lambda. Okay. I haven't looked at that.
Starting point is 00:12:54 I mean, I know that we got in C++23 more cases where you can leave off the parens for lambda, but I didn't know if the even more abbreviated lambda proposal had actually been progressing. I have not followed that. So there was a proposal for allowing to omit the return keyword. So you just arrow the return value by equal greater, which would be an arrow to the return value. But there are some issues with that. It's quite a long time out there, the idea of abbreviated lambda, and there are some issues. So I'm not sure that it would go to 23. I use a lot of lambdas. I'd like to see that. I actually saw a comment from someone on Twitter, and I don't know their full argument, but they said that too much damage has been already done by the overuse of Lambdas.
Starting point is 00:13:48 And I'm like, you know what, I'll just go ahead and take credit for that because I've published like 35 videos on Lambdas. Everybody's trying now to inherit Lambdas. Ah, you know, that's a thing to do. Actually, I'm going to go ahead and give just a quick little teaser and say in the talk that I was talking about at the top of the show that I'm going to be giving at CBPCon, I show a use case for Lambdas that I have never seen anyone
Starting point is 00:14:16 else use before. So, I mean, I'm guessing I'm not the first person to have done this, but it might be something novel and new and interesting to you, so just should watch that talk when it comes out. Anyhow. I'm also going to be at the CppCon giving a talk on C++ complexities. So I think that this relates very well to C++ complexities in a way. And of course, there is always the question of, do we use the right,
Starting point is 00:14:46 the proper tools, or do we in some way abuse the tools? So this is a discussion. We will not open it here. But C++ complexities is always something that C++ programmers like to talk about. Oh, yeah. And yeah, we're kind of bad in the C++ world of liking the creative solution, which is not necessarily the best solution. Or the simplest one. Or the simplest one, yeah. Yeah.
Starting point is 00:15:16 We talked about the mailing list, and there is also the deducing this. And deducing this is a very important paper, I think. I talked about that in one of the core C++ meetup meetings that we have. So I'm happy to see that it is progressing. I hope to see it, because I think eventually it will reduce the amount of boilerplate code. And this is a very nice proposal. So we'll probably see that one in C++23, do you think? It seems quite mature and people like it. So I don't see much opposition for that.
Starting point is 00:16:00 So I do think that it would come in. I know also Ben Dean is going to be giving a talk on deducing this at CBPCon. He's one of the authors on that paper. Another thing, another interesting thing that was in the previous mailing list, I see it on the July mailing list, is a paper from our Israeli National body attendee, a member, Yechezkel Bernat. And in fact, he says that the main person on the proposal on the paper is his son, 16
Starting point is 00:16:38 years old, who actually found the issue with counted iterator. So P2406 is talking about counted iterator, which has some issues when you use ranges. A very nice paper that shows the issues and proposes some solutions. So there are several nice things here. First, it comes from the user international body member and with his son, 16 years old. I think this is what we want to bring to C++.
Starting point is 00:17:18 And it touches an actual issue that should be treated. I wonder if that's the youngest paper author that there's been for an ISO paper. Maybe you can bring him to a next episode. Wait, I had no idea that counted iterator had been merged into C++20.
Starting point is 00:17:37 Now I'm like, wait, what? Alright, I'm sorry. I'm going to have to look into that some more. It is being used when you want to get the top X results from a view. So you filter something and then you want to get X results from a view. And then down beneath, it is using a counted iterator. And counted iterator has a behavior that the spec itself is very strict about the definition of its behavior. And the definition, in a way, creates some strange behavior when you try to filter something and top the 10 results, 10 first results.
Starting point is 00:18:20 And even if you have the 10 first results at the end, it will still go for the 11 one just to see that it doesn't have anything more. And then you might get into an infinite loop, even though you already got what you wanted. And this is what the paper presents. Interesting. Yeah. Definitely. Yeah. So this was P2406.
Starting point is 00:18:43 Yeah. I'll have to put a link to that one in the show notes okay and then the last uh article we have today is uh it's actually like a table on algorithm intuition uh chart on algorithm intuition and uh we certainly talked about this concept before with uh connor and kate gregory um and this is based based on their talks where they talk about algorithm intuition. And the author of this chart basically tried to summarize and categorize all the algorithms
Starting point is 00:19:13 so that they can be, I guess, a little bit easier to learn so that you could start having your own algorithm intuition when looking at your C++ code. And just read over this and be like, wait, I've never heard of that algorithm before. There's so many.
Starting point is 00:19:28 Yeah, it's confusing. Yeah, but I mean, handy. I've seen a lot of arguments lately about how special the design of the STL is compared to other libraries and other languages that we've got this compile time
Starting point is 00:19:44 type safe collection of algorithms that we can apply to all of our containers. And so it's probably, you know, it's an important part of the language to be familiar with, for sure. And I think largely overlooked by the average C++ programmer. Yeah, nevertheless, there are a lot of other libraries that gives fights to the STL while using different kinds of containers like upsell, like boost that gives a better implementation sometimes for string or other containers that might be interesting. On that note, and if you don't mind, just real quick, flipping back to the last news thing, there was a C++23 proposal to add another like a replace data function to standard yeah yeah
Starting point is 00:20:29 and that one looked the the the the committee body votes were strongly in favor of it which really surprised me because so many people already think that string is just way overdone that it already has way too many methods already yeah resize and overwrite yeah that one yeah uh i i think i understood the issue i don't remember it right now but uh the idea is that uh the main idea is that i think that uh when you are uh resizing the buffer you are writing a default value and then you are copying the data that you would like to copy so you need to use the append method and then you have you have to remember that you still have space so each time you are appending something you you need to check it the append function itself is using if every time you are appending a stuff to it. And that will do that in one operation.
Starting point is 00:21:29 It will also create the space and copy the data. That's the main idea. Okay. Well, Amir, when we last had you on the show a couple months ago, we definitely talked about the core C++ conference a bit. And now the conference has been held. And let's maybe start off with talking about that and how the conference was.
Starting point is 00:21:49 How was it having an in-person conference? It's kind of been a long time since any of us have seen this. So we as organizers were a bit stressed. I would say till the moment that we start the event. But it was a great success. People were very excited getting into a physical environment, seeing each other. So, and they did come.
Starting point is 00:22:18 We had to close the registration because we wanted to have a limited amount of people in the rooms. So we had some over registrations that we had to close and people asked if we can just give them a spare ticket. That's nice to have overbooking. And we, you know, COVID-wise, we had antigen fast checks for everybody on the first day. Yeah. And I think that C++ programmers do believe in vaccinations.
Starting point is 00:23:00 So it goes together. If you believe in C++, in a way you believe in vaccinations. I think 100% were vaccinated. And those that were not, they had to come. And of course, masks when you are in the room. And it went fine. It went fine. You know, people got to being used to wear masks. You know, we are back to normal in a way. And I do believe CppCon is going to be the same success. And that's an interesting note for those who, I don't think we've mentioned this,
Starting point is 00:23:48 you are actually required to be vaccinated or have some other medical documentation for CppCon. So when you go to register for the conference, you have to submit a copy of your vaccination certificate, whatever that looks like okay and we we also had um bianna uh although yeah he wouldn't be able to come physically um he did a talk uh a virtual talk an online talk which was great also avidity i felt like he's in the room avi yeah me as well me as well me as well. Me as well, me as well. The only thing I was missing is him signing me on some book. We are mostly, you know, we appreciate very much Bjarne giving his time and
Starting point is 00:24:35 it is always a pleasure hearing him talking about C++ and seeing how smart the ideas that were to begin with and things that he saw. You go back to videos of Bjarne from the 90s, and you see that he's speaking about the same things, but the change is that it is now in the language.
Starting point is 00:24:56 It's crazy. It's so nice to see that his thoughts are coming into the language, you know, periodically or gradually, And that's fascinating. Yeah, there is a talk that he did, I think, in 1994 about concepts. Go and listen and see how much similar concepts are today. That's crazy. What was that he said is the last thing left? Oh, the operator dot. He said the operator dot was the last thing left that he wants.
Starting point is 00:25:26 I mean, he said that in the past, and it doesn't look like we'll ever get it. Yeah, I think that he mentioned that also in his lecture in Core CPP. Yeah, but I do agree that it seems that this one is off the table. Even though you can do very smart things with operator dot, but it seems that it goes to other directions. Do you want to talk about some of the other topics Bjarne went into during his keynote?
Starting point is 00:25:55 One of the good things of having Bjarne with us is having people from the audience asking questions, and the questions were very good on the progress of the language, on comparing it to other languages like Rust and D. So, Bjarne said that he played with Rust a bit and he prefers C++, naturally. So, I would say the same. But I do think that Rust is a very interesting language. I think it is. It has something with that.
Starting point is 00:26:30 And people who go to Rust, which are not C++ lovers, people do like it. I see people that go to Rust and say, yeah, it's a nice language. On the other hand, most people that come from C++ in a way say that, well, it's too complicated and it's not actually solving the actual problems. I think it goes back to Fred Brooks of essence and accident. So it might maybe try to deal with the accident, but the essence is there and the essence is you know programming is a difficult thing and there isn't any silver bullet and rust is not a silver bullet yet in order to write probably a linked list in
Starting point is 00:27:18 rust you have to go to unsafe because you have, you know, a doubly linked list or something is there not owned. And people coming from Rust would say, yeah, but then this would be in the library. And you as a programmer are in the safe mode. But eventually there is a learning curve. And I would see the C++ is going as you get the liberty and you have to write efficient code and safe code. On the other end, Rust is going with the compiler or static analyzer would protect you, but in a way will also narrow your options. And then if you want to do something which you cannot, and maybe you need it for optimization, then you have to go to unsafe.
Starting point is 00:28:06 So in a way, these are two opposite ways of doing eventually the same thing. Yeah, I've heard anecdotes from people doing code reviews in the Rust world where they'll go in to look at someone's code and the new Rust programmer will be like, well, I couldn't figure out that borrow checker thing, so I just put everything in unsafe. Which, I mean, completely, like, clearly that's like number one best practice. Don't do this in Rust, right? But it's the kind of thing that, you know, people do in any programming language if they're given that escape patch. Yeah, I have a short blog on Rust versus C++, so maybe I will put it in the chat. Okay, sure.
Starting point is 00:28:53 Yeah, we can share that. Share that in the show notes. Yeah. Want to wrap the discussion for just a moment to bring you a word from our sponsor. C-Line is a smart cross-platform IDE for C and C++ by JetBrains. It understands all the tricky parts of modern C++ and integrates with essential tools from the C++ ecosystem, like CMake, Clang tools, unit testing frameworks, sanitizers, profilers, Doxygen, and many others. C-Lion runs its code analysis to detect unused and unreachable code, dangling pointers,
Starting point is 00:29:22 missing typecasts, no matching function overloads, and many other issues. They are detected instantly as you type and can be fixed with a touch of a button while the IDE correctly handles the changes throughout the project. No matter what you're involved in, embedded development, CUDA, or Qt, you'll find specialized support for it. You can run debug your apps locally, remotely, or on a microcontroller, as well as benefit from the collaborative development service. Download the trial version and learn more at jb.gg slash cppcast dash cline. Use the coupon code jetbrains for cppcast during checkout for a 25% discount off the price of a yearly individual license.
Starting point is 00:30:03 Well, let's start talking a little bit more about some other conference talks. Avi, you gave one on writing a cache-friendly C++ hash, is that right? Yeah, yeah, I did. So generally, if I need to conclude the one-hour talk in one sentence,
Starting point is 00:30:20 you should always use Vector. It's usually the best case. But the main idea is that no matter what type of program you are writing in, at the end, the hardware is the one that runs it. And the hardware is running with cache, and the cache is working in a certain way. Then it has to have cache locality and cache temporary, that those are characteristics that affect the data itself.
Starting point is 00:30:51 And it should affect the way that we are programming our critical path. By that, I mean, we should think about our cache line, what it holds, and we should really try to use our cache line to the best. I mean, if we decided to load something into the cache line, we should use it. We should use all the cache line if we can. So we should lay out our memory. We should think about the layout of our memory in the cache in order to write a good cache-friendly software. That's in a nutshell.
Starting point is 00:31:23 Which relates to data-oriented versus object-oriented? Yeah, in a bit. The idea is that array of struct and struct of array, you're handling the data in a struct that is keeping all the types the same, so the alignment is good. You're using only the data that needs to be used
Starting point is 00:31:48 so if you have let's say a shape rectangle and the circle and you want to calculate their size and some of them are visible and some of them are not visible then today if I'm using an object oriented programming I would create
Starting point is 00:32:04 a shape which is an abstract class, and then I will inherit it to create a circle and a rectangle, and I will have a Boolean saying if it's visible or not visible, and think about the cache line in that manner. First, when you're drawing, you're running with a four, which has an if, if it's visible or not visible each and every time. Then you're calling a virtual function, which is also a pointer.
Starting point is 00:32:30 Then you're chasing stuff in memory. That means that it doesn't sit near your cache. And you're using visible in the worst manner. Think about it. You're loading stuff into cache when all you need to know is if it's visible or not visible. You're loading all the cache line itself
Starting point is 00:32:52 in order to create the object. And more than that, a Boolean is a one-bit value. Think about how much space do you consume in the cache itself. Think about the cache sizes. They are very small, okay? And the cache line itself is very small.
Starting point is 00:33:09 So you need to be very careful if you're on a hot path. If you're not on a hot path, that's not that bad. But if you're on a hot path, then you should think about it. All right. So do you actually then recommend having, like Amir mentioned, like data-oriented design kind of thing, like a completely separate data structure that is, or array that is just the visibility of the objects or something like that?
Starting point is 00:33:31 It depends. As I said at the beginning, I find, yeah, I find that oriented design weird. I was burned to build stuff in an object oriented design. That's the way I think. Okay.
Starting point is 00:33:44 Like I'm thinking in C plus plus, that's the way I think. Like I'm thinking in C++, that's the way I think. Using data-oriented design really took me to a place where I really needed it. And if I really needed it, then even assembly is stuff that I've done in order to be fast. Right. And then you still can hide the data-oriented design with proper classes. So you may approach a class which is Circle, maybe with static functions, but eventually you can hide the data-oriented way of building things when you need it. I mean, don't go there when, you know, this is not your bottleneck.
Starting point is 00:34:28 Yeah, and one more thing maybe. Think about your code. Your code is also something that comes into your caches. So think about inline. Inline is great. It's replacing stuff in your, when it happens, it replaces stuff in your code by using the data of the code itself, right? So it doesn't jump to a function to understand what it needs to do.
Starting point is 00:34:51 So it's something good from the cache perspective. But from the other hand, it really blows the instruction set, which means it might happen where something needs to occur and another instruction is blown out of cache set, which means it might happen where something needs to occur and another instruction is blown out of cache because there was an inline. Inline might affect the cache size itself as well,
Starting point is 00:35:13 if you have a lot of inlines. It was a very good talk, by the way. I liked it very much. If you go to listen for it, it's on YouTube, but I would say beforehand, it's in Hebrew. i would say uh beforehand it's in hebrew yeah uh some of the some of the lectures in cpp were given in hebrew because it was a local uh conference this this year right uh because of covid um we very we hope very much that uh next year we will be back to
Starting point is 00:35:40 uh to english to uh international conference but but this one was with local attendees, so some of the talks were in Hebrew, some in English. Yeah, I was going to ask, so then some people chose to speak in English, then, it sounds like, to present in English, I mean. Yeah, yeah. It was open for the presenter to choose. I'm trying to remember if there was, I know the first year, of course, Ivos was when I was there, there was a planned Hebrew track,
Starting point is 00:36:09 but then if I recall, the plan for Hebrew track then was abandoned when they got more international attendees. It was all English. Okay. I went to your workshop. Probably it will be all English next year, hopefully. We do hope that next year will be back to English and international audience. Yeah, we all hope that it'll be back to international audience next year.
Starting point is 00:36:33 Yeah, definitely. Any other highlights from the conference that you want to cover before we... I can talk a bit about my talk on C++ complexities, which I'm giving a very similar talk. Usually, you know, there are some nuances. After you give some talk, then you amend things. But we discussed the complexities, and I asked the audience,
Starting point is 00:36:57 what is complex for you in C++? And there was a questionnaire. And it is interesting to look at the answers. And in the same questionnaire, I asked about how many years are you in C++? So we can see the difference between veterans and newcomers. So newcomers point at R value and move semantics. Veterans don't see that as an issue.
Starting point is 00:37:25 They just got into it. Both veterans and newcomers agree that dealing with memory issues, I mean, when you have memory smears or leaks, this is the top complexity for many, which I think rasters will just jump and say, okay, here we are, come to Rust. And I would say that, you know, it's not that there is a silver bullet.
Starting point is 00:37:56 And the other interesting items, well, one of the items, one of the top items is handling long builds, which is a good answer coming from IncrediBuild. We have a solution for that, happily. And we didn't push this answer. It was there
Starting point is 00:38:15 with many other possibilities and it seems that long builds is still a problem in the C++ arena. But there are solutions for that. So if you want to check on CrediBuild, you're invited. So on that topic, since it was a small local conference, did you still have the vendor tables and all those things at the?
Starting point is 00:38:39 Yes, we had. Yes, we had. We had, and with local companies, I'm trying to recall whether the companies present. Yeah, we had also international companies like, for example, GM. GM has a lot of C++ and GM was there. Hiring, I assume. Hiring mostly, but also presenting. You know, people like to present what they do.
Starting point is 00:39:07 Right. For, I would call it soft I-ring. Don't come to us today. You are elsewhere. But maybe in two years, in three years, you have to know that we are doing interesting stuff. Right. On that topic of Incredibuild, Amir, we talked about, you know, you joining the company last time we had you on. But Avi, you also joined recently as well?
Starting point is 00:39:25 Yeah, I'm here like four months. It's been a journey for me to look for my right job. I'm very passionate about C++ and what I'm doing. and I was looking for something that combined my passion and my thoughts about C++, and Incredibly is very invested in C++. It really, I think you heard about the product, but nevertheless, it really handles greatly in distributing microservices or microprocessors
Starting point is 00:40:09 out of build but not only out of build it take the whole ecosystem into account like testing like static analysis tool and other stuff so that people, you know, programmers would consider doing all that in a short while. The main idea, if I'm thinking, IncrediBuild exists like 20 years. And I look for the history of IncrediBuild and the owners really thought that they could distribute stuff while one core exists because build took an hour and they thought when there would be four cores they will be out of business but guess what when there were four cores it would take an hour and and so and so because of code bloating, because of other things that we are doing on the software itself.
Starting point is 00:41:08 So it's combined my passion and I'm happy to be here. And they're using very cool stuff to do that. Very intelligent caching mechanism things in the cloud, out of the cloud very interesting stuff happening here What is your actual role? I don't think we mentioned that I didn't
Starting point is 00:41:35 it's weird a bit I'm a group manager of many groups Oh no, not a manager I think this is why he didn't want to mention that he wants to be a C++ developer
Starting point is 00:41:51 but he is a manager maybe that's the case it's not official I came here to build the next generation of IncrediBuild, that's the reason I joined them but dreams alone and reality alone generation of IncrediBuild. That's the reason I joined them.
Starting point is 00:42:06 But dreams alone and reality alone, I came in and I've added a few groups. There are difficult tasks and really interesting stuff that we are doing here.
Starting point is 00:42:22 You came in thinking, I'm going to help build the next generation of IncrediBuild, what does that look like? What is the vision for IncrediBuild right now? So the general vision is to do what they are doing, but taking into consideration things like other systems other than builds, that's not that easy as it sounds.
Starting point is 00:42:44 You need to understand stuff like dependencies and other stuff to be able to do that i think the the thing i love most about incredible is that it is transparent to the programmer it doesn't need to do anything into his tools nothing other than installing a small agent and all the magic occurs without him doing anything. He's using CMake, Make, whatever, whatever tool chain he has, it should work. And doing that for other things is a difficult task if you want to achieve that in that transparent.
Starting point is 00:43:23 So think about dealing with cache. Dealing with cache for building would mean, you know, saving the object file, understanding independencies, signed it in some way, and so and so. But doing that for testing is a different task, right? So you actually then, with IncrediBuilder, do you currently support distributed execution of the test environment? Or is that one of these future goals?
Starting point is 00:43:49 It really depends how you write your test. If you're writing them in the correct manner, then yes. But if you don't... So the answer is that we actually have customers that use IncrediBuild to accelerate testing. Intel does. Intel does and other big companies do. But in order to make it more transparent, there is still some work to be done.
Starting point is 00:44:14 Nevertheless, it is working with tests. So there are customers using acceleration forward testing to the cloud or on-prem using CrediBuild. I was just looking at someone else's test. You had to execute the test from a particular hard-coded known directory because it didn't take into account where you may have chosen to put the build directory, for example, which CMake and CTest you can do. But it's easy to do that kind of hard-coded thing, which I can imagine would
Starting point is 00:44:46 then get in the way of trying to distribute the execution of your test. So the general idea is that we are virtualizing the process itself. We are not doing that on the same machine, right? We are taking that process and creating that on another agent, and that agent is talking to the initiator in order to understand the dependencies so that he could load from there what it needs, if it's a file, if it's an environment variable, and so, okay? So, for example, I think if I can take it to build, if you go to a machine which has an agent but doesn't have the proper version of the compiler, you would get it transparently with the credit build.
Starting point is 00:45:31 So it's really just, you know, like click about to build. And for the build process, this is something that is being very transparent for other things uh can be done being done but there is still work to make it transparent as uh the build process for c++ other things covet 19 pushed us to work on a low bandwidth the networks and stuff like that that we hadn't had the chance yet and there are other big tasks need to be achieved in order for that to be really transparent for what we want to call the next generation. And there is always the challenge of supporting all different environments because customers come with different compilers, different operating systems, environments, etc. And eventually they want the thing just to work. And this is one of the challenges.
Starting point is 00:46:27 I wonder if we could maybe go back to C++ committee work for a moment. Avi, how long have you been with the committee? I'm there a bit before Prague. Avi went to Prague. I think that Avi can share the experience of being when C++20 was signed and released. I was so afraid to talk there. I can't tell you guys because everyone I knew were in the room. The feeling is great.
Starting point is 00:46:58 I think that the committee is doing a great job. I think that we could see that in C++, if you take like a decade ago, everybody would say that C++ was at least a bit declining. And maybe we should use C Sharp or Java or other languages at the time. Or C++.net maybe. Yeah, manage C++, yeah.
Starting point is 00:47:24 And other languages at that time. And I think that today we could see that there are many features, a lot of stuff. I'm doing that like for 25 years now. And I'm loving C++. I don't know. I'm that geek. I've been know. I'm a dead geek. I've been to the first CPPConf ever with Bjorn Strauss-Trube and Herb Sutter.
Starting point is 00:47:54 There were, I think, 200 people there. How many are going to be in Colorado now? Oh. In 2021, we don't know, but if it had stayed on track, then it would have been something like 1300. So think about that. Herb Sutter stood on the stage with Bjorn Strauss with a piano and sang us a song. We are the champion or something like that. We will still build look it up that's uh that's interesting because yeah i don't know the last time i saw her play the piano he would do that regularly at cbp con
Starting point is 00:48:32 in seattle would just randomly use one yeah yeah think about taking 3 000 people and and or 30 000 people and and put them with a piano and Herb Sutter will sing a song. We have to ask him for that. The first CppCon was in New York? It was in Seattle, right? No, it wasn't in Seattle. I don't remember the place it was. I think maybe Washington,
Starting point is 00:48:57 maybe New York. I don't remember. I thought CppCon was always in Bellevue before it went to Colorado. It started from the Going Native conference. It came out of that, but I wasn't there the first year or two. 2015 was my first year. I missed the first one or two years.
Starting point is 00:49:21 So talking a bit about the ISO, so when you want to release a new paper, then you should submit that to the committee and the committee is dealing with it. So I wanted to tell you a bit about how that's done. Okay. So there is a group called the WG21. That's a technical name for the committee itself. The committee converges three times a year for a week. Each time, the most important day is Saturday. That's the day that everybody votes for what's going in and what's not going in.
Starting point is 00:50:05 Each time, there is a new draft. It depends if it's a draft for ETS or international standard. And then it goes to the father committee so that it could be released as an international standard. That's the general idea. And beneath it, there are two main groups. There is the core group that deals with everything that is in the language. And there is the library group that deals with everything that is in the library. And beneath it, there are special groups that are dealing with special things like ranges. And there are many, many groups.
Starting point is 00:50:44 So you could go and look for them. So, and today, since there are many, many papers, the groups that start with the papers are called incubators. So we have two incubators, one that are for the language and the other one is for the library.
Starting point is 00:51:01 And my impression from being in the room with all those guys were amazing. I think this is the way that you could influence really about the language. Really write a paper. Don't just talk about it. Even though I'm only talking about it.
Starting point is 00:51:24 But I'm really trying to influence. I have many friends that are writing papers. I'm trying to review them, trying to give them some country. And it's a really interesting process. And I think this is the reason that this language, it's like, how long does this language exist? More than 20 years, right? Do you know anything in technology that exists more than 20 years? 35, 36.
Starting point is 00:51:51 Yeah, so I think it's amazing. It relates to something that Bjarne raised in his talk in CoreCPP, that a change has to be made slowly and carefully. And I think the committee is smart enough to review anything with great care, to understand what is the purpose, how to go there, or maybe there are other means to achieve the same goal. So it's not that there is a good idea. Let's rush for it.
Starting point is 00:52:21 Let's push it into the language. Let's see what we want to achieve um other any other maybe simpler uh ideas to achieve the same and what it might break which all is always a very important question definitely we haven't asked this in a while but um what are your thoughts on how the committee work has been going over the past year and a half plus now since Prague with the virtual meetings? Yeah, it's much more complex. And it's not me saying it, it's the committee saying that. There was a question after Bjarne talked in Call of CPP about how do he sees C++23 and would it be affected by COVID
Starting point is 00:53:10 because there aren't any face-to-face meetings for the ISA committee. And Manu said that, yeah, he thinks that it would slow down a bit C++23, so less things would go in. He would like to see more things, but this is how it goes right now. slow down a bit, C++23, so less things would go in. You would like to see more things, but this is how it goes right now. And I think the reason is quite clear. It's much harder to push things when you have to, in a 20-people meeting in a Zoom, it's not the same as 20 people in the same room. Are there any tentative plans yet for an in-person meeting?
Starting point is 00:53:49 Or is it still just TBD? Well, Amir and Avi, it was great having you on the show today. Are there any plans for CoreCVP 2022 yet? We start talking about that right at the moment that we close 2021. We want to see how COVID goes on because again, the plans are to
Starting point is 00:54:14 have an international conference like we had in 2019. So we have to wait a bit and see how it goes. But I think that with the success of the local conference and the real demand for it, people like it. People want to join. So we would probably either have a local conference if we still have difficulties with an international one. But I do hope things should, you know,
Starting point is 00:54:42 at some end, have everybody vaccinated and going back to normal. So I hope that we would have an international one. Hear yourself out. Yeah, hear yourself. All right. Well, thank you both for coming on the show today. Thank you. Thank you.
Starting point is 00:54:55 Thank you for having us. Thank you. Thank you. It was a pleasure. Bye-bye, guys. Bye. Thanks so much for listening in as we chat about C++. We'd love to hear what you think of the podcast.
Starting point is 00:55:04 Please let us know if we're discussing the stuff you're interested in. Thanks so much for listening in as we chat about C++. We'd love to hear what you think of the podcast. Please let us know if we're discussing the stuff you're interested in, or if you have a suggestion for a topic, we'd love to hear about that too. You can email all your thoughts to feedback at cppcast.com. We'd also appreciate if you can like CppCast on Facebook and follow CppCast on Twitter. You can also follow me at Rob W. Irving and Jason at Lefticus on Twitter. We'd also like to thank all our patrons who help support the show through Patreon. If you'd like to support us on Patreon, you can do so at patreon.com slash cppcast.
Starting point is 00:55:40 And of course, you can find all that info and the show notes on the podcast website at cppcast.com. 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.