CppCast - New Years 2022

Episode Date: December 31, 2021

Rob and Jason discuss various news articles, libraries and announcements on the last episode of 2021 before the new year. News C++ logging library - something I've been working on, Pt. 2 Do v...ectors get more use than what my textbook implies? This year receive the gift of a free Meson manual Microsoft VS 2022 and Floating-point to Integer Conversions Top 10 bugs found in C++ projects in 2021 Visual Studio Code C++ December 2021 Update: clang-tidy ImGui Command Palette Brand new C++20 serialization library (one header) CLion Bug-Fix Update 2021.3.1 and Roadmap for 2022.1 C++ on Sea 2022 Your New Mental Model of constexpr - Jason Turner - CppCon 2021 C++Now 2022 Call For Submissions C++ North Sponsors Use code JetBrainsForCppCast during checkout at JetBrains.com for a 25% discount

Transcript
Discussion (0)
Starting point is 00:00:00 Episode 330 of CppCast, recorded December 27th, 2021. This episode of CppCast is sponsored by JetBrains. JetBrains has a range of C++ IDEs to help you avoid the typical pitfalls and headaches that are often associated with coding in C++. Exclusively for CppCast, JetBrains is 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 some news articles on our last episode of 2021. Then we look ahead to 2022. Welcome to episode 330 of CppCast, the first podcast for C++ developers by C++ developers. I'm your host, Rob Irving.
Starting point is 00:01:32 Joining me on the co-host, Jason Turner. Jason, how are you doing today? I'm all right, Rob. How are you doing? Doing all right. Are you surviving the holidays? Yes, I am. How are you doing? I'm doing okay. Had a goodmas uh we're recording this just two
Starting point is 00:01:48 days after christmas uh looking forward to new year's did you get any fun toys like i don't know let's say the ultimate millennial felt millennium falcon lego kit or something no no i did not get anything like that right no yeah i those legos are always really cool uh my kids are still very into legos but i haven't gotten anything like that for myself yeah how about you uh my wife got me uh it's something that i'd asked for but it's from adafruit i think and it's a macro pad that you build yourself, so it's got a 3 by 4 keypad on it. And you have to solder all the components on it,
Starting point is 00:02:32 whatever. But then it's programmable so then I can make some macro keys, which I kind of wanted it for shortcuts for video editing on my channel. And so she got me that, so now I have a project to build which i'll i'll strongly consider making an episode out of actually building it and programming it for the
Starting point is 00:02:50 first time because it sounds like fun yeah that's cool we did get a uh a projector and a screen for it so we can watch movies outside and you know even though it's december we're having like 60 70 degree weather right now so it's looking forward to that it is but it's north carolina yeah yeah well it rained in colorado a couple days ago and it's not supposed to do that anytime like you're talking november 1st on if it rains something weird is happening we're at the end of december it's like winter well winter i guess only technically started a few days ago or whatever right right. But still it's not right. Silly. All right.
Starting point is 00:03:29 Well, at the top of every episode, I turned a piece of feedback. Uh, we got this YouTube comment on the episode we did a couple months ago with Bob Nystrom. Um, this is Homero saying I stumbled across this channel episode while doing a
Starting point is 00:03:44 search on Bob Nystrom's craftingrafting Interpreters book. Great stuff, and I'm now a subscribed member. So, yeah, welcome to the show, Homero. Hopefully you like some of the episodes as well. Was that only 13 weeks ago, for real? I guess so, yeah. Man, that feels like that had to have been
Starting point is 00:04:00 last year with, like, I don't know. It's been a crazy year. Definitely has been okay uh we love to hear your thoughts about the show you can always reach out to us on facebook twitter or email us at feedback at cpcast.com and don't forget to leave us a review on itunes or subscribe on youtube uh so just us today gonna do a bit of a news episode. I think we did the same thing last year at the end of 2020. Yeah. And so this is where you have to give your full bio.
Starting point is 00:04:31 It's if you're the guest, right? Oh no, no, I'm not prepared to do that. I should probably update our bios on the website at some point though. Uh, yeah.
Starting point is 00:04:40 I don't know what it says. Yeah. Whenever this kind of thing comes up, I just, I mean, my bio that I have in my conferences is pretty much the same one from six years ago because it's so much easier to copy and paste.
Starting point is 00:04:49 Just copy and paste it around. Yeah. And it's like, doop, done. Okay, so we've got a bunch of articles to talk about this first one. I feel like we may have mentioned this. It's a part two post for a new C++ logging library. And it did ring a bell.
Starting point is 00:05:09 I think we mentioned it when the author of this library first announced he was working on it and kind of soliciting feedback. And I do want to wonder, though, before we start talking about this library, since it's a logging library do we want to mention log for j really quick because that's been all over the news for the past two three weeks yeah it's been on like my to-do list for like three weeks to actually like understand what the log for j hoopla was about i didn't pay attention at all i'm as terrible about that i wasn't paying a whole lot of attention, but I tried to at least understand what the vulnerability was. And I still don't understand why this feature was part of a logging library to do this remote code execution thing. But why would you need to do that i don't know don't you always have executable logging statements and it could just be anything like any log message if it was crafted the right
Starting point is 00:06:16 way could turn into you know remote code being executed right i don't that's my understanding and that's kind of awesome in a terrible way. In a very terrible way. Well, did you notice the very first top-rated comment on this Reddit post was, very nice, but does it also support remote arbitrary execution? Yeah, so it's hard not to comment on that with this in the comments. That was the main reason I wanted to cover this. Yeah. So that we could at least drop the joke.
Starting point is 00:06:49 Obviously, I feel for any of our listeners who are affected by this because i do know like at least that first weekend when log4j was announced there were people like spending their entire weekend trying to you know fix their their servers and everything by you know upgrading log4j or taking it out or disabling settings, things like that. So I feel for those people who got affected by it. Hopefully our community was not heavily affected by it, though. I would assume less so. Yeah, I would assume less so. But now I have ideas for my next puzzle book.
Starting point is 00:07:21 Maybe somehow it would be like a logging system that you actually program with the log statement you have to figure out what maybe it's a little too too timely maybe maybe i'm hoping we can all forget about this i do know that i think they've already released like three updates because like the first two patches didn't quite resolve the vulnerability so hopefully it's all better now. Right. Okay, let's talk about the actual logging library. This is on Christian Panov's GitHub, and it's called LWLog. And he's got a really nice readme talking about setting up and using the logging library.
Starting point is 00:08:05 And his benchmarks are really impressive.'s comparing it to speed log like a hundred times faster than speed log and it's like a hundred times faster than speed log it is it can be both synchronous or asynchronous and um he talked about how he got some of this speed and i think he's doing things like only parsing the like formatting of the logging statement once and then keeping that in memory so you don't need to re-parse it every time that particular log statement gets called up right uh that sounds like that familiar yeah i was kind of struck by the fact that it doesn't um yeah it's it yeah so for like you're saying rob you have to do like a set pattern and then and you can set up like permanent variables that are in the pattern but it's not nearly as flexible as speed log which uses lib format i'm sure yeah so if your goal is
Starting point is 00:08:59 raw speed but someone did comment on the reddit discussion i think about uh how it does its own layer of buffering which is one way that it got speed as well right which depending on how much like predictability and knowing exactly like when these log statements are being written you need that might be uh that might stop you from it as well but that's the comment here manual buffering parse the pattern let's see using a massive buffer unstood out buffering in memory until the destructor file writes means that you can't tell a log file with it from a running process or diagnose an early or abnormal exit yes so that's the that's a limitation that our listeners make. And I think you can force it to write out to the log file if you don't want to rely on this or if you're worried about crashing.
Starting point is 00:09:53 But yeah, that is something to be aware of. But the author of this project is doing a great job of posting this on Reddit and then actually reading and responding to the Reddit comments and then going back and updating the reading. Cause you started by saying that the reading is like outstanding and that's part of why like it's going back and updates. Yeah. But it certainly seems like it's a very impressive library.
Starting point is 00:10:15 Um, certainly worth checking out. Uh, maybe if, you know, you want something that is potentially even faster than speed log. Yeah. Yeah.
Starting point is 00:10:23 Does not support, you know, remote arbitrary code execution though. So if you need that, go switch to Java, I guess. Someone should add a pull request. Yeah.
Starting point is 00:10:37 Okay. Uh, next thing we have is do vectors get more use than what my textbook implies? And yeah, there's another Reddit post where someone is saying they were, you know, in their university class learning C++ and it's, you know, briefly mentioning vectors, but just focusing on arrays.
Starting point is 00:10:57 And yeah, the author of this post is kind of asking, like, is this right? Or are vectors more used? Or is everyone using arrays? And yeah, we're definitely using vectors. Yeah. I was actually, I wanted to discuss this a little bit because I'm curious.
Starting point is 00:11:15 I don't own the book. I'm curious how the author presents it because the author of the Reddit post says arrays, arrays, arrays. Oh, look vectors. But look, arrays, arrays arrays oh look vectors but look arrays arrays and keeps going back to arrays now if the author of the book is saying if you know the fixed size of your data then use a c++ standard array and prefer array over vector and trying to educate people in that direction then i'm on board with this this. Sure. At least the Reddit post didn't say,
Starting point is 00:11:47 hey, the author of the book is telling me to use list everywhere because that would be a real problem. Right. And someone comments on the Reddit post that arrays don't participate with RAII, which is just wrong. Yeah, it says C arrays don't have that. A regular C array, a stack a stack based c array is going
Starting point is 00:12:06 to construct everything in the order you expect it to destruct everything in the order you expect it to which reminds me i need to put a to-do list to put this in my next puzzle book um i think i've written that down it's good it's good yeah i mean i have no idea how they're teaching things in university i would i would be curious as to what exactly the book is presenting i just looked i just tried to look it up and i i feel like you know i totally should have looked this up before this author tony gaddis i believe is right has uh a confusing array of books i should say. There's textbooks on C++, Java, Python, C Sharp, all from the same author. Is he doing lots of intro to different languages?
Starting point is 00:12:56 C++, from control structures to objects. Python, starting out with Python, starting out with Java, starting out with Alice. I don't even know Alice at all. I don't know what that is. And then in generic programming and logic design of data structures. Yeah, and Muzze seems to be starting out with the topic.
Starting point is 00:13:16 Yeah. Curious. Well, it does look like the author of this post, though, is getting pointed in the right way that, yeah, Vector is definitely used a lot within the c++ programming community yeah right well i just thought about the fact i was thinking deeper about the comment that the one post had read or posted saying that c arrays don't play nicely with reii and there is the caveat that if you try to return an array from a function or pass
Starting point is 00:13:46 an array to a function, a C array, then you just get to get a pointer and everything goes to crap. Right. Right. So that is worth at least mentioning so that we don't get a bunch of comments saying, hey, Jason, you know, art. Yeah. Okay.
Starting point is 00:14:01 Next thing we have is a post on UC Pakninons blog. This is, uh, this year received the gift of a free Nissan manual. And I think we had him on like two years ago when he first came out with a Nissan manual. Um, certainly if you're using a Nissan build system, it would be a good thing to read through. Uh uh but apparently he made it available for purchase for like a year and uh eventually decided to shut it down because he wasn't getting a whole lot of sales uh and he is now making the book free so if you you know like i said have any interest in in nissan definitely uh go check it out and you can uh you know just go ahead and get
Starting point is 00:14:43 the pdf now it's an interesting comment from him too that interest of fairness he didn't make the definitely go check it out and you can just go ahead and get the PDF now. It's an interesting comment from him too, that interest of fairness, he didn't make the book immediately available for free because he didn't want to feel like all the people who paid for it had lost something. My interaction with this community, most people who are paying for your book are doing it simply because they want to support the work that you're doing. Yeah.
Starting point is 00:15:07 And there's actually people. Yeah. And there's actually people in the comments here, you know, where he announced the book is free now saying, you know, what if I still want to support you? Right.
Starting point is 00:15:15 How do I pay you still? Right. So hopefully he does, you know, put out a good way for people to support him. Cause yeah, if you're using Nissan, I'm sure you would want to support him. Because, yeah, if you're using Nissan, I'm sure you would want to support him.
Starting point is 00:15:27 He's putting a lot of work into it. Yeah, the community, surprisingly, well, maybe not surprisingly, but it's very generous in a lot of ways. Yeah. Okay. Next thing, it's a post from the Visual C++ blog. Microsoft Visual Studio 2022 and floating point integer conversions um
Starting point is 00:15:47 a lot of you know did you follow this just for the record i had not heard of this i i don't think i'm you know too concerned with these changes but apparently they did change the way floating point integer conversions works and they're introducing some flags if you want to like go back to the old behavior that was present in visual studio 2017 but they're explaining you know what's different how it's now you know more standards conformant um yeah i definitely got lost in the weeds on this one. I'm like, but like, there's no like specific examples of like previously, this number would have truncated to this number. And now it truncated to this number.
Starting point is 00:16:32 Like I wanted a chart in here. That would be useful. But I think what they're saying is the old default was to just, like you said, truncate like round down to the nearest whole number and the new thing is saturating conversions is that right that's the way it works now i think from reading this post and the thing that i got out of it is that they're using built they're they're going to what intel says should be the standard is that how you read that too well it's using intel's built-in functions built-in instructions for this.
Starting point is 00:17:05 Right, but it is also based on what ISO says you should do with floating point integer conversions. I think the older versions of Visual Studio, like older Visual C++, prior to that being standardized, just chose what they would do with a floating point integer. And then the standards had something different so they're now fully aligned with that is what I got from that. Specifically floating point to unsigned I knew there was a little detail in here that I'd forgotten floating point to signed
Starting point is 00:17:35 has always been standards conformant that is not changing. And just the main things that are actually changing is if you're doing like, you know, NAND conversion to int, or if it's like a large floating point number larger than, you know, the size of the int you're using, that's where things could potentially be different, I think.
Starting point is 00:17:58 Okay, right, right. If it's a number that's not representable, then they said that they go to max int. Right. So max or min int, and if it's NAND, I think they say it goes to zero. Okay. If it's a number that's not representable, then they said that they go to max int. Right. So max or min int, and if it's nan, I think they say it goes to zero. Okay. So it goes to the, yeah, that's what it was. It goes to the closest value that it could be. Yeah. Instead of just a bitwise truncate. were you know relying on a certain behavior with your floating point integer conversions there are functions that you can use to get the exact behavior you want um yeah it's either
Starting point is 00:18:33 saturating or sentinel conversion so if you want to use the old style you can still use these uh to go from float to integers yeah okay. But fortunately, all of our listeners are following best practices and support multiple compilers anyhow, so if this was going to be a problem for them, they would have already discovered it. It certainly would be the best way to go to build on multiple architectures, multiple
Starting point is 00:18:58 compilers. I'm curious as to who this might be affecting. I'm sure everyone relies on broken behavior somewhere yeah the story i'm constantly reminded of is you know like checking to see if this is null has always been undefined behavior but when gcc with like c 4.2 or something, made it in like dash O2 or O3, they started actually removing
Starting point is 00:19:28 checks for this to be null as an optimization pass. The optimization pass had always been there. It just wasn't enabled unless you asked for it before. When they made that change, they got all kinds of projects like Qt and all these projects that are like, you broke our code. They're like, no,
Starting point is 00:19:44 your code was always broken. Yeah. Want to interrupt the discussion for just a moment to bring you a word from our sponsor. CLion 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. CLion runs its code analysis to detect unused and unreachable code, dangling pointers, missing typecasts, no matching function overloads,
Starting point is 00:20:16 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.
Starting point is 00:20:39 Download the trial version and learn more at jb.gg slash cppcast dash cline. Use the coupon code jetbrains for cppcast dash c line use the coupon code jet brains for cppcast during checkout for a 25 discount off the price of a yearly individual license okay uh next thing we have is a post from pbs studio and this is top 10 bugs found in c++ projects in 2021 and i don't know i read through all of these and they're all you know very interesting um bugs that pbs studio was able to find do you want to like go through them all what do you want to do i think we could do a pick and choose personally okay do you have a favorite i mean i i'm not sure if i have a favorite oh i guess
Starting point is 00:21:21 the ninth one was interesting just because i was kind of surprised that they did that. The ninth bug is finding that the HTML DOM being constructed from some C++ code looked like it was wrong. Like mismatched string literals. Yeah, mismatched string literals. So they're constructing some HTML with the uh with the ul tag which i think they say is a list i don't know html unordered list with ul yeah okay so in the code they're saying um you know they have the ul open and then at the end of the string they're doing another ul open followed by you know body and an html end and that's mismatched you only have you have two
Starting point is 00:22:06 ul open tags and no closing tags and they were able to find that which i just thought was interesting that they do looking at html dom errors yeah absolutely yeah that one struck me also i didn't like really closely read the actual code on this one until just now. And yeah, it's pretty crazy. And it looks like it was actually a bug found in QPixelTool. QPixelTool, I'm not familiar with that. That's part of Q. Okay.
Starting point is 00:22:35 I mean, I'm not familiar with it either, but Q is huge. It's like, are you familiar with all of those? Right, right. No, no way. What are some other ones that were worth mentioning here? Intermodular Analysis and lost mem set what is this item the fifth item okay so it's it's a well-known issue if you deal with code that has to have any kind of level of security that if you do a mem set of a block of memory to zero uh the compiler has the tendency to remove that memset
Starting point is 00:23:05 because if it can prove that you don't later read back that memory, then it considers it a dead store and it removes it. And so there's secure versions of memset to make sure that it actually does this right. Well, you may have been relying on the fact that your memset was in a different translation unit hidden inside of a CVP file, so the compiler, when it did all of its inlining and optimization passes and whatever, it had no way to know whether or not that memset was a dead store.
Starting point is 00:23:36 So it would still call the dead set. Now, today, you've said, wait a minute, i'm going to enable whole program optimization of visual studio or link time optimization and gcc or clang and now the compiler can see across translation units can now see that mem set in line and say wait that's a dead store and now it removes your mem set because you enabled another level of whole program optimization pbs studio can detect that and alert on it nice which i'm pretty impressed by that yeah yeah definitely there's some other ones here um the uh date processing one was was interesting you know just a function here to go from a short month name to an integer and the function returns negative one. If you don't have a matching short month name,
Starting point is 00:24:30 but the code calling this function was looking for, uh, or expecting an error code of zero instead of negative one. And that was caught. That's certainly a very useful. Okay. Right. Yeah.
Starting point is 00:24:44 That's cool. It doesn't look like a tool that just keeps growing yeah i think this sponsor uh they certainly have been for a while yeah uh and this first one i i really like too where you're iterating over a for loop and then there's a a nested for loop within it that's uh incrementing i again or you would want to be incrementing uh it's r in this case but you know incrementing like the j on the inner for loop something like that yeah yeah that was definitely interesting also i'm kind of curious how many tools can catch that kind of thing. Anything else you want to highlight in here? No, I don't think so.
Starting point is 00:25:27 There's 10 of them. They're fun. Yeah, they're always fun. Okay. Next, we have another blog post from Visual Studio. This one is Visual Studio Code. The C++ December 2021 update. Basically, the whole of this post is they're adding Clang-Tidy
Starting point is 00:25:43 to the C++ experience for Visual Studio Code, which is really nice having that integrated and easy to use. I know I've said this over the years, but every time we get an article like this on VS Code, my kind of gut reaction is like, what is the end goal here? Because VS Code is becoming like almost a very
Starting point is 00:26:05 full feature placement in some ways yeah i mean i i think on windows i feel like microsoft's visual studio is always going to be better and more full feature but i mean being able to go between the different platforms and the same ide or if you're using gcc or clang like it's certainly you know they're putting a lot of work into it and now i don't think we mentioned this but now you can like run visual studio code in the browser you don't even have to install it anymore uh it from yeah and inside of github i think we might have covered it once it's like a keyboard shortcut of like hitting shift three times i don't know i forget what it is or something and it pops up bs code in the middle of your project right there it's pretty it's not shifted times i
Starting point is 00:26:49 forget what it's like uh yeah let's go ahead oh i was just gonna say from the standpoint of our listeners i use bs code for something completely different than probably almost everyone else does but i would use it for like a great markdown editing IDE. You can have a live preview on the side. You just need to double check that your markdown makes sense. It's great. I use it for editing show notes. I did not realize it had a markdown preview. Is that an extension that you put in?
Starting point is 00:27:20 There's one built in and there's a couple of extension ones. I have two set up i think i just keep falling back to the built-in default one nice you have to click a button and say like open preview pane and then you've got like you can have your files on the left or whatever and then the thing you're editing in the middle and the preview on the right that's that's pretty good it doesn't support like all markdown flavors or anything but as long as you're used to the fact that markdown's got different flavors and you know okay well i don't expect the link the image embed to work here the same way that it's going to work whatever you know but i have a couple of
Starting point is 00:27:58 gifs on github and i'll just check them out and edited them live sometime there instead of on github i think it works pretty cool. That's actually how I gave my presentation for... Was it that one? I don't know. You tell me, man. Yes, it was the CppCon one. So the first half
Starting point is 00:28:20 that talk hasn't gone live. The first half was not using that. And then the second half of the talk i just switch over to ps code and i'm just scrolling through a very long document because i kind of like reached this point over covid i just kind of got tired of making slides i'm like well if i'm going to talk and it's going to be a weird remote talk anyhow and as well do something weird and experimental so i like almost just don't use slides anymore now i just have like a giant markdown document i scroll through it then my
Starting point is 00:28:49 code samples can be as big or as small as i want them to be and i it's there's no like arbitrary distinction of things it's just a continuous flow of a conversation through the document i think it's worked okay i haven't gotten any any specific combat comments what you want on it on that combat should post it to reddit is your talk still not on youtube because i thought they posted it was like up to 140 some talks were now available on youtube from cpvcon real quick as long as we have everyone here yeah last time i looked i didn't see it up there because they're still doing the slow release of them right it might still be unlisted but you can find the playlist if you go to that jet brains page which we put in our show notes a couple weeks ago yeah
Starting point is 00:29:41 is that when we were talking with kate and guy no before that oh there is a lot yeah uh i really hope it got recorded because i like that talk and i don't want to give it a gap i'm sure it will get there okay i just found it yeah 140 talks up here now i would think yours is up here for up to 140 but you said it might be one of the unlisted ones still. Well, yeah, I mean, this is the unlisted playlist, but it's up to 140 talks. Is there a way to search this? Control-F.
Starting point is 00:30:15 Here you go. Yeah, it's here. Your new mental model of Constexpr. It's my... Go ahead. I'm going to go with second best talk. I think it's my second best talk. Yeah.
Starting point is 00:30:24 What do you consider your best best? What's talk. What do you consider your best best? What's that? What do you consider your best talk? The best talk was definitely Rich Code for Tiny Computers, the Color Super 4 one. And then the second best talk previously would have been the context of all the things that I've just done. Not necessarily because I think...
Starting point is 00:30:44 I mean, it was a good talk, but I consider it the second best talk because of the impact that it had on the community and how many times it got cited in committee papers and that kind of thing. That was pretty cool. This talk, I think, is more entertaining and
Starting point is 00:31:00 educational, more like the Rich Code one. Well, I will put a link to the talk in the show notes since we do have it on this playlist all right cool okay uh next thing we have is another github repo and this is an iamgui command palette you've you've done some work with iamgui right i have yeah okay and so this struck me as interesting uh it's been a little little while since i've used it um but yeah i mean it's a command palette like you get in bs code or whatever where you like hit a hotkey and type things in and it'll show you all the possible
Starting point is 00:31:35 commands uh it looks like it's pretty easy to plug in it got a bunch of good comments from from the reddit community when it was announced so this is something if you're writing a program using iamgui where it would help you you know as you're going along that's the idea think of it like a widget and and cute or something like that yeah well yes let's just go with that it's it's not it's not something that would be uh an individual, you know, in a window, it is its own window. So like a file dialog or something like that. Very cool. Okay, next thing we have another post on Reddit.
Starting point is 00:32:14 This is a brand new C++ 20 serialization library, single header. It's called ZPP bits. You want to tell us about this one? Yeah, this one's interesting, because you only want to tell us about this one yeah this one's interesting because you only have to add like one statement to your um struct and say like this is how many elements i have let's see what it looks like right you just have a serialized method that you add right not even a method it's just a using declaration okay okay so you say i have two members that need to be serialized and then it uses i can visualize internally that it uses trickery with uh
Starting point is 00:32:52 structured bindings to get all of those members back out and then so it's going to give you a blob of data and everything everything that's in there has to be um pod basically but you can serialize and deserialize and access individual numbers that kind of thing um and it's like just actually just serialize and deserialize so it's super straightforward and it's the kind of thing i've like experimented with um and so it's it's fun anyhow uh but it's really lightweight it doesn't have all the features like all the redditors are like oh but it's missing like versioning and what happens if i want to add an element and the author yeah this is fast and simple yeah that's definitely something to be aware of if uh you're concerned
Starting point is 00:33:36 with changing uh your data structures uh it might not support you know good backward forward compatibility yeah um okay uh next thing we got a sea lion uh bug fix update on the jet brains blog um so a bunch of bug fixes in here and they're announcing their roadmap for 2022 and it looks like they're kind of focusing the whole uh release of the first release of 2022 will be targeting bug fixes and performance improvements and things like that, which is nice to, you know, instead of always just trying to add new features, making sure everything is working well. I totally forgot to read this one. Okay. You're the C-Line user, though, right? I am, but I just never got back to the this i don't know if somehow i missed this news item for the discussion but um that is great because i am really looking forward to some of these things
Starting point is 00:34:37 like yeah c++ language support clang d integration and code analysis i would quite complained about this when we had kate and guy on i think about how the fact that they use clang d which obviously use it because it's so easy to use is actually holding back c line right now because it's missing so many c++ 20 features and that is a problem for my code i actually ended up splitting my code up a little bit more modularly so that the code that ClangD doesn't like is in its own file so I can use the IDE. But some of these things like high
Starting point is 00:35:15 CPU usage from test detection and some of these things, sometimes you feel it. Sometimes the project does not have to be very big and you're just sitting there going, okay, IDE. It's time for you to start putting the squiggles in. I've only got a thousand line project here. It'll sort of be nice when
Starting point is 00:35:32 this next release comes out with hopefully all of these bugs and performance improvements addressed. Yeah, I'm curious. It will be addressed in 2022.1. So I'm going to start badgering them on january 1st and i should note they did say they're not like explicitly committing to addressing every single
Starting point is 00:35:55 one but this is what they're they're targeting with this first release is all these uh bug fixes and performance improvements yeah so for our long time listeners here, Victor Chura, who, um, uh, we've had him on and he's given a bunch of talks about, uh,
Starting point is 00:36:13 playing power tools or video studio, the plugin, right? They, uh, Victor has said this in his talks that he got permission from the company to take like a year to stop adding features and to do code modernization and clean up and bug fixes i mean that is just huge and yeah so necessary i how old does a
Starting point is 00:36:35 project have to be before it starts carrying baggage from like you know dead code and poor design decisions you're like you know if i could have done this over in C++17, I would have done this. I'm guessing a project would have to be more than about three years old before you're like, oh, I can't believe we wrote it like that. So you can just imagine something as complicated as an IDE. Yeah, I think we're all on board. Don't add any more features.
Starting point is 00:37:01 Take as much time as you need to do whatever fix you want to do. Yeah, make it right. Don't add any more features. Take as much time as you need to do whatever fix you want to do. Yeah. Make it right. Okay. And then last thing we have is an announcement for C++ on C 2022. It will be in person next year. It looks like July 4th to 7th is the, well,
Starting point is 00:37:20 obviously it's, it's the plan is to do it in person. Everything should be like within giant asterisks. This is the, well, obviously it's the plan is to do it in person. Yes, it's the plan. Everything should be like with a giant asterisk. This is the plan. Yeah. But that's great that they're having it. I think this is the same location where they had it in person the first time. Lee's Cliff Hall.
Starting point is 00:37:37 I believe that's the same spot. That should be right. I didn't double check. I probably should have. And, you know, you're in this post because you as well as hannah and kevlin henney are going to be keynoting it yes it will be the three of us keynoting it yes that's the same location where it was previously i just felt like a double check uh yeah cool so that should be fun i'm uh looking forward to going back to that one
Starting point is 00:38:02 my talk last time didn't get properly recorded. So there's no actual evidence that I was there previously. There's a picture of you on the top of this post, but that talk was not recorded. Yeah, but did you look closely at this picture at the top of the post? I'm looking at it right now, yeah. Okay, who's in focus? Not you. Yeah, there's a column in focus.
Starting point is 00:38:23 The column is in focus. There's almost no evidence that I was there. That's funny. Well, hopefully no technical difficulties this year and hopefully you're, you're all able to go in person. Hopefully things are safe in, in mid 2022.
Starting point is 00:38:41 2022. And you know what? I bet I still will not have a flying car probably not probably not i mean it's the future it's not future enough yet yeah you know when i bring this up there's always the person that's like we have flying cars they're called helicopters and i would like to say no that is not the same i have have flown remote-controlled helicopters. Those are flying lawnmowers. They are not flying cars. Yeah.
Starting point is 00:39:09 We want flying cars from Blade Runner. That's what we want. Well, with this last post talking about a conference in 2022, I guess we should maybe just comment on the year ahead. I know we kind of did that at the end of last year's episode at this time, where we were all really ready to say goodbye to 2020, looking forward to 2021. I think we knew vaccines were coming. Obviously, 2021 was still a bit of a roller coaster,
Starting point is 00:39:40 and it looks like that might be continuing into 2022. If I have the opportunity to encourage people although I get the impression that probably most of our listeners are already vaccinated go ahead and get on the list and get vaccinated they are safe
Starting point is 00:39:56 get your vaccine get your booster Omicron I think I've read that Moderna and Pfizer are doing well protecting people against this new Omicron variant. If you've gotten the J&J vaccine, maybe get a booster of Pfizer or Moderna. Or even just get another J&J. Stick with whatever you're comfortable with.
Starting point is 00:40:20 I don't care. Yeah, but protect yourself. I'd really like this thing to end at some point yeah we're still waiting to say goodbye to 2020 huh yeah it's the year that will never end hopefully it's not a whole decade of it yeah well oh and we have we actually mentioned that the call for papers for super plus now is out also that is planned to be in person in June. That's in June, okay. No, sorry, in May.
Starting point is 00:40:49 Yeah, that seems right. In Aspen. And C++ North, which did get discussed with Kate on, is supposed to be in person in Toronto at the end of July, middle of July. The question currently in my head is, do I fly from Folkestone to Toronto to try to go to C++ North, or do I come home first, or do I skip C++ North? I'm not sure. I've been wanting to go.
Starting point is 00:41:17 I mean, I haven't been to Canada yet. I have not been to Canada either. I'm sure it's lovely in July. Yeah, well, I mean, it's lovely in July. Yeah. Yeah. Well, I mean, it's a giant country too, right? So I have to appreciate that if I've been to Toronto, I have not,
Starting point is 00:41:32 I've been to Canada, but I haven't seen Canada. Yeah. Yeah. All right. Anything else you want to comment on before we end our last episode of 2021? Nothing that I can think of. All right.
Starting point is 00:41:47 Well, thank you everyone for listening. We'll be back. New episode, first week of January. Got an interview lined up, so we'll see you all in 2022. Have a happy new year. Bye, Jason. Bye. Thanks so much for listening in as we chat about C++.
Starting point is 00:42:03 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. 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.