I'm gonna make a promise to our listeners right now.
ConorWhat's the promise?
BryceThe promise is that this podcast will continue until one of us is dead.
ConorCan we a remote? Welcome to ADSP the podcast, episode 79, recorded on May 26, 2022. My name is Connor, and today with my co-host Bryce, we talk about C Now 2022, Circle, Clang, and more. We're back. It's been over a month. Bryce went on uh vacation for what, like three weeks?
BryceThere was work there. I was there's work there.
ConorI'm sure there was. So update us, Bryce. You went to C Now first. Was that your first week off, or did you take the week off before that uh travel around?
BryceNo, we went to C Plus Plus Now and Aspen. How was that?
ConorTwo tracks this year.
BryceYeah, we did a little road trip. Usually there's three tracks. So this was a small conference. When I first went to that conference before it was C Now, but when it was a different conference uh before we started C Plus Plus Now, um uh it was a two-track conference. And I think the first year of C ⁇ Now was three tracks. Um, but this felt more like the boost cons of old. And then we went and did a uh a little road trip across uh Utah, and uh I'm still I'm still finding sand in places where you really wouldn't think that sand would be able to to get there, but there's a lot of sand.
ConorWhere in Utah is there sand?
BryceWell, it's desert, Connor. So is it?
ConorWhen I think of Utah, did you go to Bryce Canyon? Did you go to your canyon?
BryceOh, not only did we did we go to Bryce Canyon, there are pictures of me wearing a Bryce Canyon t-shirt in front of a Bryce Canyon sign.
ConorThere you go. I assume you've been there before.
BryceYes, I have been there. It's it's my canyon. Of course I've been there. Legally, I own it.
ConorLegally. The U.S. government uh U.S.
Brycegovernment, please don't come after me.
ConorFor those that don't know, Bryce Canyon is uh it's very beautiful. I've been there once, and um, yeah, they've also got uh rock called Thor's Hammer, and I'm a big fan of Thor, God of Asgard. But I mean, there yeah, when I think of Utah, I think of uh Bryce's Canyon, I think Zion National Park, that's also in um in Utah, and uh and then Salt Lake City, which there's not a lot of sand in those places.
BryceYeah, we did Arches, um, which is in the Moab area. We didn't do Canyon Lands because timing. Um, and then we went down to in Boulder, Utah, which is like in the middle of nowhere in Utah, there is this Michelin-rated restaurant, Hell's Backbone Farm and Grill. Um, and my dad was like, you should go there. And I'm like, going, going four, four hours out of the way for a restaurant? Of course I'm down for that. And uh behind the restaurant, there's this road called Burrow Trail Road, which can take you into the back of uh Capitol Reef National Monument. And it's it's a high quality like dirt road. Um uh, but like it is a dirt road. So it's a little, a little, a little intimidating. But uh we drove down that and that was a lot of fun. Um and then we went to the like Zion area. We didn't actually spend a ton of time in uh in Zion.
ConorUm did you do Angel's Landing?
BryceHorseback riding. Uh no, we didn't do Angel's Landing. Oh man, it's so beautiful. Uh yeah, needed a reservation, and we didn't have one and other reasons. Um we did horseback riding. Uh we were pelled into a canyon. Um yeah, we got mugged by uh by farm dogs.
ConorUm so you want to elaborate a bit on that?
BryceWe were staying at this place, Zion Mountain Ranch, um, and my my girlfriend had her her dog uh uh with her. Um and uh her dog does not get along particularly well with other dogs, just her dog's a little bit afraid of other dogs. And of course, this ranch has three farm dogs, and they're um they're Great Burmese, something like Mountain Dogs.
ConorYeah, Great Burmese. Great Burmese mountain dogs, they're like black, brown, and white Burmese, yeah.
BryceYeah, but these ones were white. Um, and uh and they were big. They were very they were super nice and sweet, of course. But on our but they basically would follow around my girlfriend's dog um uh anytime that she was outside. Um just like just want to like keep an eye on her. Um and so on the day that we're checking out, um, I'm like packing up stuff, and uh my girlfriend's outside, you know, playing fetch with the dog. And then I I'm not exactly sure what happened, but then very suddenly two of the uh farm dogs were inside of our cabin. And one of the farm dogs makes a beeline for the bowl of food that we have out for my girlfriend's dog, and uh eats all the food and then proceeds to try to steal the bowl itself. And the other farm dog, there's like a there there was like a rawhide um like dog treat that we'd gotten for my girlfriend's dog. And um, and the other farm dog just takes that and just immediately is like, I got my prize, I'm getting out of here before the authorities are called. But the first farm dog who tried to steal the the food bowl just like will not leave, like, like is just there and like will not leave. And my girlfriend's dog is now has by this point come into the cabin and is like not amused and is just like hiding out on the bed next to me and is just like very unhappy. And then this farm dog, which I'm trying very hard to get this thing out, like sweetest farm dog ever. It's not like it's being aggressive, but just like how do you get like right from ease from these dogs didn't have a collar on my ticket? It did not have a collar, no, no, um, and so then this dog tries to get on the bed with our dog. And I'm like, well, this is not a good idea. And uh, and like after like 15 minutes of this, and the entire time we are just dying of laughter. After 15 minutes of this, um, I I finally managed to get um uh the second Great Bernese dog out of the cabin. And it's that that point when I noticed the third dog. Now, the two that came in, they were the puppies. Um, and the uh there was a third one, which was, you know, an adult that uh was a fully trained farm dog and was supposed to be and they were all supposed to be hanging out together so that the adult one could sort of teach the puppies how to like behave like a farm dog. And so the the adult one, I think, clearly knew that he was not supposed to go into guests' cabins because he was just sitting at the at the stairs to the cabin, but he was just like sitting there, like he was like the getaway driver. And um, and so then finally I get this these dogs out of this cabin, and um, and and I go back and my girlfriend's like, we were just mugged. We were just mugged by farm dogs. They came in, they took our food, they took our dog treats, they tried to take our dog pull, and then they left.
ConorDid you did you receive compensation for your loss?
BryceWe we didn't even it was it was such a hilarious and amusing experience, we didn't even bring it up. Yeah. But uh, but yeah, that was definitely a highlight of the trip.
ConorThat was quite the story. Can't say I've ever been mugged by dogs.
BryceYeah, yeah.
ConorSo tell us more. Oh yeah. Did you hear the news? I assume you've heard the news.
BryceWhich a lot of news.
ConorPodcast-related news.
BryceOh, I did I did hear that news, yes.
ConorAnd I know I know you aren't a uh are you a regular listener? I don't think you you sporadically listen, correct?
BryceI I feel like I'm gonna get myself in trouble if I answer this question truthfully. I think I've listened to a episode.
ConorAll right. So Bryce and I slightly different. I've listened to every single episode. And uh it's sad news. First of all, just want to say thank you to uh Jason and Rob.
BryceYou should say what the news is for people who don't.
ConorCVP cast, the former Lee, number one C podcast, has retired as of um two, I don't even know now, a couple weeks ago. Um I think it's been one Friday has passed, and one um listeners, if they're listening to this, when it comes out on the Friday, it'll be two Fridays have passed where no CPP cast episodes came out. Um and yes.
BryceI'm gonna make a promise to our listeners right now.
ConorWhat's the promise?
BryceThe premise is that this podcast will continue until one of us is dead.
ConorCan we can we agree on uh oh wait, as long as as long as at some point we're allowed to take uh a little vacation, um are vacations allowed?
BryceMaybe we can we can high we can hire well hire some staff to to to like take some of the burden off of doing some of the production work, but no, no, no vacations.
ConorNo vacations?
BryceBut see, notice that I said until one of us is dead. So if you have a problem with this, you just have to kill me.
ConorUm I will not agree, but uh you know, Bryce is uh So So why why did they uh why did they end it? Um they got to 294 episodes, and I think um so well first of all before we talk about why they ended it, uh just uh huge thanks to um Rob who started the podcast and Jason Jason who um was co-host after I think it was episode three or four. I've thoroughly enjoyed listening to all the episodes, and um yeah, it's they're gonna be missed for sure. Um and uh yeah, why did it end? I think they just both wanted um they had I wouldn't say lost the passion or enthusiasm for it, but um Rob had a career change where I think he was doing less C stuff, still some C, but uh a little bit more of.NET stuff. And Jason had mentioned that with his with the pandemic ending or quote unquote ending and sort of travel restrictions, lightning, um, he was doing more more traveling for training and it was just getting more difficult. And at one point they were sort of bringing on um guest co-hosts, which uh I on one episode was one of those guest co-hosts. And um, and yeah, so I think they they said it necessarily isn't gonna be gone forever. Uh they might decide to bring it back at some point. But um, yeah, just thought shout out to CPP cast. But uh more importantly, you know what that means, Bryce.
BryceYou know, we were we are now the number one C podcast.
ConorUm, you know, it depends on how how you categorize, because still I think CPP chat um ranks above us, but they don't regularly release episodes. So I think it's fair to say that we are the number one regular weekly C podcast. Even more than weekly because NDR, uh Phil Nash, and Anastasia Kazakova, they have a regularly released podcast, but it's monthly. So I think we can say even more than weekly, we are the number one regularly releasing C podcast. Soon to be, soon to be the number one in any category, overall, C podcast. The last four episodes, which was really just one recording with Ben Dean, uh, were quite popular. We actually have to some updates that should be mentioned is that the problem that we, if you uh recall for listeners, because we we chopped those that one conversation into four parts and like didn't re-introduce the problem that we were talking about profiling every time. So it might have been a little confusing for anyone that jumped into part three, not listening to parts one and two, but basically was finding the top two elements from an array. Uh Marshall Cloud, someone pointed out on Twitter, actually gave a talk where 50% of his talk was focused on this and pointed out that partial sum, at least in libclus plus, um, did like a uh order of magnitude less swaps or comparisons, and like less swaps and comparisons overall compared to um nth element, which is why it was outperforming. And then Stepanov, in his efficient programming with components uh A9 lecture series, has like five or six talks dedicated to a binary counter sort of divide and conquer algorithm that I have not gotten through all six lectures, but uh we'll we'll update people. And then also I presented a lightning talk on the Rapids team at NVIDIA, and then uh Jay Kemstad got interested in the fact he agreed completely with you that like profiling is a very hard thing that like no one ever really gets correctly unless if they've done some amount of like HPC profiling because that's where you start to learn that like your data really matters, corner cases really matters, you know, things like turning off what did he say, CPU throttling or something like that. Like there's just so many things that uh you need you need to do in order to be able to just you know actually gleam stuff from from your profiling results. Anyways, the point is that those four episodes people seem to love. Seems like we should just lean into our C because that's what seems like that's what the most of the listeners want. Um speaking of which, C now, you didn't even really give us a recap. Favorite talks, how how was it? How was the weather? How was the vibe? How was your talk?
BryceMy talk was good, I think. Uh the weather was so so. It was sunny, but there was also, you know, your typical Aspen in May snowstorm. Um let me let me look, let me look. I took some very crude, very crude notes. Um let's see if I can find my very crude notes. Uh there's someone in here. Yeah. Um favor talks? There was a talk, I think, by Timur, about atomic shared putter. Which is there have been a lot of talks at C now over the years about atomic shared putter. And usually the moral of the talk is we don't know how to implement it. Or one year the moral of the talk was we don't know how to implement it. But then I read this patent that gave me an idea for how to implement it, at which point the talk had to be a little bit shut down. Um but this time, this time it was like, yeah, we know how to implement it now. Um and uh so it was it was quite a good talk. I I I um I quite liked it. Um there was also a talk by somebody from Think Cell, and I don't remember the name of the talk. I don't know. Um Yeah. Um it was talking about sort of how iterators can be there's sort of two kinds of iterators. There's iterators that indicate borders and iterators that indicate elements, and that maybe we need to distinguish between the two.
ConorIs this uh Arnold Schodel why iterators got it all wrong, and what we should use instead? Yes. Yeah. I apologize for the mispronunciation uh as I I have a tendency to mispronounce. I believe that is a German name, the last name at least. I should I should point out though, to interrupt you, the O in Schotel uh is the um psi combinator from APL. So it's it's a O with two dots over it. So wonderful.
BryceUm and then that got me thinking about multi-dimensional iterators, and then there's a bunch of scribbled notes here about multidimensional iterators, um which I had a chat with somebody about last week. Um and then apparently I talked to Jeff. I'm I am now just reading to you from my notes. This is no longer about, you know, no longer about what talks I saw. This is just what ha what happened to Brighton.
ConorThis is the this is the the preparation we bring to ADSP the podcast.
BryceUh then I chatted with Jeff Garland about the C ⁇ 23 sort of cue, you know, how many things would be able to would we be able to get things all the things through in time. Um and uh it sounded like the generator was chugging along and it was pretty likely to get through. MD span's taking a good chunk of time. We had the idea that we were gonna take one part of the md span that is a sub-md span thing, and we could make that a separable component because that's something that if we miss that one piece, we could always add it later. Um and then we talked about moving the static vector from the library fundamentals TSV3 to C26, which would be exciting because it would mean that then there's nothing else going into the library fundamentals with the technical specification v3, and we could no longer do that. Um let's see. I think I I think I may have not really gone to any talks on Wednesday. Um I had a lot of good hallway conversations. And then I think by far my favorite talk was um Sean's closing keynote on Circle, which I just thought was a very well-executed talk. Um and uh and in fact I sent Sean uh uh an email afterwards, um, because I've I've seen Sean give a few different talks on Circle over the years.
ConorUm and do you want to just give a little plug for what Circle is in case our listeners are brand new?
BryceCircle is a better C compiler for a better dialect of C. Um if you ask me, I'd say that Circle could become the feature of C ⁇ . Um but uh Sean Baxter is the the person who's developed Circle um on his own over the past five years, just as uh just he he um he left his job and just wanted to go and build this thing as a full-time project and he's done that and it's very impressive. But um but I've I've seen him give talks on it a a few times over the past few years, and um uh you know circle's an amazing technology, and he's a brilliant individual. Um the this presentation though, it was the it was like he was in rare form. It was the best um uh pitch of of what he's got that I've seen. I I just thought that Sean did an amazing job of um uh presenting the thesis for circle um uh and uh made a very compelling argument for you know what why he's built it, why the design decisions that he's made in building it, and sort of how all the parts sum up to something or uh add up to something greater than just the sum of those parts. Um yeah, and it was crisp, it was approachable. I was just I was so impressed with it. And then we got to the QA section at the end, and the first like five or six questions were all people um I I would say questioning or debating the merits of his approach. And it um it it shocked me actually. It shocked me because um I had found his presentation and not just the presentation, but the but the actual technical merit behind what he was presenting um so compelling that I just assumed that everybody was just gonna be like, yep, we're sold. Um but no, but it was like the the almost all the questions were like this is really impressive, but you know, XYZ, you know, thing that I disagree with, or have you thought about this? Um and and one of the points that some people made was that um uh a lot of the things in the work that sir that Sean's focusing on now, which he sort of calls circle 2.0, is a little bit of a departure from his original vision for circle and the circle meta model, which was just supposed to be like, oh, you can just write regular C code and execute it at compile time. And during the talk, he does a great job of explaining why his thinking has evolved from that circle 1.0 model to the circle 2.0 model. Um and I think some people, you know, some people disagreed with the circle 1.0 model, but um uh some people really liked it. Um, and a bunch of people basically it seemed like less people understood or were on board with um the direction of uh uh where Sean was going. Um or maybe it wasn't that people were saying, you know. Know we reject this entirely. It was more people were saying, you know, maybe I have critiques about this part or that part of this part. But like I basically had no notes. I'm sure that if I went and thought about it more, I would have notes and feedbacks on some things. Um it's some of the some of the critiques that were made I did find were valid. Um, but it broke my heart a little bit that like the response to Sean's talk was not just a round of applause. Anyways, everybody should go watch Sean's talk.
ConorYeah, so what I'll do is I'll I'll link in the show notes there's both a I believe I know that there's a CPP chat episode where they uh hosts interview Sean Baxter, and I believe there's also a CPP cast one. Um so I'll link both of those, but what's interesting um that you say that sort of the questioning, the first few questions were you know impressive, but did you know, and then insert whatever critique or question they had. Uh, do you want to talk a little bit about the history of, because at one point, and you probably know the history of this better than I do, um, the metaprogramming working group on the ISO committee sort of, I think, invited Sean to a meeting at I'm not sure if it was in New York and Bloomberg hosted it or whatever, but like there was a conversation about the fact that we went from template metaprogramming and we were going towards constexpr metaprogramming, and then they had this circle language which had a different circle metaprogramming model.
BryceAnd like, yeah, do you do you want to fill in the details or does the the committee rejected the circle meta model for a variety of reasons, but one of them was that it sort of allowed um you to do anything at compile time, and there were some, I think, security concerns around that, um around you know, doing things like file I.O. etc. Um in your metaprograms. Um I think that was one of the main uh complaints. Uh there were some other criticisms. Um but yeah, for for a variety of reasons, like that security question, I think the committee um uh kind of ruled out um uh the the possibility of seriously uh considering Sean's proposed extensions. Um I don't have all the details on that, but I I do think it was a bit premature, but um my my I don't think our committee said to Sean, never come back. I think um Sean has been in an environment where he's been uh you know developing on his own. He's been able to move very quickly. And like oftentimes, you know, he'll he's the first person to implement a new proposed C committee feature, or you know, I'll have a conversation with him and then like the next day he will have implemented something based on that conversation. The agility that he has with that compiler in comparison to Clang or GCC is just like shocking.
ConorNight and day.
BryceYou know, I I asked Sean once why didn't you just do all this in Clang? And he told me that hopefully I'm not breaching any confidence of his here, but he told me um that he evaluated Clang back when he started this project and he just determined that it was not suitable. And that was a little shocking to me. And but then I thought about it a little bit um and I I explored why was that shocking to me. I, you know, got into uh C programming in the 2010-2011 back when Clang was the new kid on the block, and Clang was so much better than in the competition, you know, it was um more agile and easier to work with than GCC and the Microsoft compiler, and it was structured as a library and it was written in C, and it was really easy to hack on and modify. Um, and you know, some of the earliest work that I did was messing around with Clang. Um and and so that that experience of those early days of Clang, and obviously there were a lot of bugs, and it was not, you know it was not as mature as it as it is today. Um but my experience of those early days in Clang when it was a very new code base and very hackable um and uh very pristine, um I think in my mind, I've I've continued to think about it um that way even a decade later. But it is a decade later. And so now Clang is uh you know a software project that's in its second decade. Um and uh software projects that are that are a little bit aged like that tend to accrue some legacy. And so the code base has become very large. Um and because it's become such an important and crucial technology, um, you know, landing a patch in Clang takes a lot longer than it used to. Sometimes it can take years. And there's, you know, um, as is always the case with open source, there are far fewer maintainers and code owners to review patches and approve changes and validate changes than than uh than there are incoming changes. Um and and so in a way I think Clang has Clang today is in the place where GCC was in you know 2010, 2011, 2012, um where it is no longer the the new c the agile newcomer, it is now the um the big incumbent. And so it is completely unsurprising to me after I had this revelation that Sean, who was looking to disrupt the C compiler space, took one look at the big incumbent and was like, I can go build, I can go build a better, you know, more agile C front end. Um and I think as evidenced by the speed with which he is able to prototype and deploy new proposed C features, um he made the right choice. Um and that also says something about the the state of C compilers out there. Um but so one of the reasons why I think um Circle and the C committee were never gonna be a good fit is Circle just moves way, way, way faster than the C committee and way, way, way faster than the big production C compilers. And like I I think Circle is 10 years ahead of the competition. Now, obviously, if you go and build a you know a production compiler around Circle, if you start to use it in anger, you know, you're gonna have to do all the things that make it robust enough for production usage, and that will slow it down a bit. Um but uh you know, if you take something that's 10 years ahead and um uh turn it into a production code, um that does make it less agile, but you still have something that's 10 years ahead. Um so I think I'm not certain whether whether we'll ever see circle features um uh or all of the circle features be standardized. Circle certainly is having an impact on standardization, and increasingly it's become a a um you know, one of the places where we get implementation experience with committee proposals. Um But uh I I think that it is good and healthy for C that Circle is able to run ahead of the standard and to run like far ahead of the standard and sort of prototype uh uh exciting future vision for what C could be. And in my opinion, what C should be. We should have we should have Sean on this podcast.
ConorYeah, absolutely. Well, so the two things I'll say when we can kind of wrap up this episode and start episode whatever, 80 or whatever we're on, um, is that uh unfortunately we won't be able to link to this keynote talk because uh I don't think CPP now puts their talks online until like one to two months afterwards. So I'd say check back in like one to two months, but there's no way I'll remember to like add to the show notes once it's online. Uh but I will link the C now YouTube channel, which they will go online at some point. So you will be able to watch it at some point, but probably not this weekend. And the second thing to note is that it's surprising about Clang because they used to be sort of the front runner in terms of feature implementation, and now I'll I'll throw a link in the show notes to this as well. If you go to the um CPP reference compiler support page, pretty pr in a in like a pretty obvious way, Clang is the trailing of the three major compilers of GCC, MSVC, and Clang. Like I pay very close attention to the um the ranges and views that uh get added to the standard. And so there's a bunch of them that got added to C23, and I'd say in first place by a long shot as MSVC. I think that's probably because I could be wrong about this, it's totally speculation, but I believe Casey Carter works for Microsoft and is a ranges expert. Um, so it's it's probably doing very quickly. Uh and I if not and and he yeah, no, he does have his own ranges implementation, so he has a ton of ranges implementation experience. So I think that's that's probably the reason. But GCC is uh comes in second place, and then Kling, uh, I don't I'm not sure if they actually have any of the C23 ranges stuff, and across the board in general, yeah, Kling, which is kind of surprising because five years ago, Kling would was kind of I had heard on podcasts and stuff that they'd be famous for like in in a committee meeting implementing some like paper.
BryceYeah, Richard Smith used to used to commit the the implementation of features into the Kling trunk as they were voted into the standard. Yeah, which is it's crazy to think that they went from that to Well, I think I I I think if software projects are about people, and if you look at um you know if you look at who used to be involved in directly working on Clang and now um th there's been a shift and a number of people who used to be very heavily involved are not as involved.
ConorSo yeah, if if you're out there looking to get involved in compiler work or C bleeding edge feature implementation, check out Clang. It's open source and they would probably uh appreciate your support. All right, wrapping up episode whatever this was, seventy something. Thanks for listening. We hope you enjoyed and have a great day.