C is either Charmander or Charmeleon, whereas Circle is Charizard. And like, that's the thing. I know about Charizard because it was one of the cards that everyone was after. Welcome to ADSP the podcast episode 129, recorded on May 10th, 2023. My name is Connor, and today with my co-host Bryce, we chat about the exciting new pipeline operator that is implemented in the most recent release of Circle.
BryceI did I did reach out to and get a reply from the the special guest that uh that you have uh we've been desiring.
ConorWe can are we we can tell the listener.
BryceNo, no, no, we're not gonna say it yet. We're not gonna say it.
ConorCan we say what the project was though? Because this was a lit this was a listener request. Okay, we won't mention the project, but there's an exciting new project. People can put it together, and someone requested it. If you are that re person if you are that person, we did reach out to a person involved. We won't say how important they were, but they are a little bit uh pressed for time, correct?
BryceBut but we're gonna we're gonna we got a reply, and we're gonna circle back in a couple weeks or months, and I think eventually it'll happen.
ConorPerfect segue. We're gonna circle to circle. I'm not sure if I'm not sure if you have a topic to talk about today, but we could spend the whole next 30 minutes that you have talking about the latest and greatest features in circle.
BryceI do have to warn you that the the the dog and the girlfriend's gonna come back at some point and noise is gonna be made.
ConorThat's alright. We only we don't need we can record one episode now and we'll set something up next week. Alright, but so I'm not gonna screen share. We're just gonna talk about it because we don't screen share anymore. People that follow me on Twitter, and I think actually I mentioned this last episode that all two of them. So funny, Bryce, we get it. You got more Twitter followers than most people. And uh I mentioned it last episode that Sean Baxter, uh, the man, the myth the legend behind the Circle C compiler, was working on implementing the pipeline operator uh along with the placeholder. That is now complete. It is now available on Godbolt, and it's never been a more exciting time. I don't even want to say in C, because this isn't C. This is Circle.
BryceCircle, I think Circle, it doesn't have a logo, so you don't you don't you don't think post release of C11 was a more exciting time?
ConorI wasn't programming in C back then. I didn't I didn't start programming in C until 2000.
BryceBack in my day. We didn't have no variadic templates. We had to stamp those out by hand. And we and you know what? We were happy about it.
ConorI don't think people were.
BryceI don't think people were nobody was happy about it. But it got the job done. You you you know you know how that that's how that used to work, like pre-C11. Like if you wanted it as something variadic template, like like the the person who wrote the library, they would just stamp out all the overloads. And normally there would be some preprocessor magic, and you would you would you would define some macro that would say how many up to what RD do you want it to support? And and as you went to higher RD, of course, compile times would get slower and slower.
ConorThat's how that worked. That's unfortunate. But uh the improvement upon that in C11 was not as exciting as this.
BryceI I agree. I think circles the most exciting thing.
ConorYeah, what's exciting about this is like this is a proposal that I was told by Zach Lane was dead in the water. That makes me sad because this Rust traits thing is not gonna entirely supersede what would have been possible with this pipeline operator. And now I just I off-handedly mention it to Sean. I wouldn't say I was trying to nerd snipe him, but I did make a comment being like, I'll basically turn all my C talks over the next two months into circle talks if you if you can make this happen. Poof. Three days later, he has it basically working, and then less than a week later, he's got an instance of it on Godbolt that people can play around with, and it also works with C23, works with all the libraries, it's absolutely phenomenal. And so are you gonna revive this proposal?
BryceAnd also, I gotta say, Sean, brilliant guy, so easy to nerd snipe. So easy to nerd snipe.
ConorI mean, this is like uh it's nerd sniping, but also too, like I'm thinking about there's a couple internal projects that I'm working at in NVIDIA, and I'm using C 23.
BryceHow how amazing is it that like like C programmers have been conditioned for so many years that a new feature takes like years to deliver to you? And then like you go to Sean and you're like, hey Sean, could you implement this thing? And it's like three days later, he's like, Yeah, here, this is done.
ConorYeah, it's it's it's phenomenal.
BryceBut does that does that say more about Sean or about the stagnation in the in in established C ⁇ compilers? And and I actually I actually bet that if you that if you asked Sean, that Sean would tell you that it says more about the state of C compilers than it does about any any particular special, you know, uh thing about him or circle.
ConorI think it's obviously both. I mean I don't I don't think you would disagree that uh I'm sure if Sean is listening, maybe you'll be interested to hear his thoughts on this. But Sean strikes me as like a savant level, like he operates at a very, very high level.
BryceI agree. I agree. But at the end of the day, he is what he is just one man. And if one man, even a savant-level man like Sean can make a compiler where he can so rapidly implement new features in unlike like three days versus the you know years that it would take for the city.
ConorI think it was actually more like 24 hours, and then the extra 48 hours was like him asking me for test cases, and then he ran into like two or three bugs, and then by the end of that three-day period, he was basically yeah, finished. And uh and then just wait waiting for some PRs to get pushed through on Gobble to I think that this says a lot about the state of the clang in GCC and MSVC code bases. And it's not to say that there aren't there aren't brilliant folks working on uh those three different compilers, but like I have to say, like I have not been more excited about it's not about the people.
BryceIt's about it's about the code bases and it's about the process.
ConorYeah. But just like having this, I had been in the back of my head thinking about like, oh yeah, it'd be really cool, because I I have a pretty clear idea of um I've I've already got probably 50 to 75% of my C talk um done. And I've had the idea of what I wanted to do for, you know, since basically the beginning of the year when I started uh submitting talks or proposals. And I had thought in the back of my head it would be really cool if uh I could have actu an actual working compiler to link people to the possible version of the solutions to these problems I'm gonna be showing uh with the pipeline. But like the only way that that's possible is through Circle. There's no way that MSVC, GCC, or Clang, uh unless if I forked Clang myself and like did my own compiler hackery, but like Lord knows, you know, that we'll link in the description show notes. Uh I'm not gonna remember his name, but he I believe lives in Israel and he gave a talk at CPPCon 2019 and he implemented concepts and he just like you just I I will I will now attempt to nerd snipe anybody here who's a Klang developer.
BryceI believe that Klang is is great. If you think that Klang is so great, and if you think that Circle is just a bunch of hot air, then one of you goes go implement the pipeline operator in 24 hours, and you get an extra 48 hours for for for bugs and tests. Go go do it.
ConorYeah.
BryceLike you know what? You you can even all like team up. Like a group of you can go do it. I I dare you to go do it in Clang. I I dare somebody, you get three days to go to go and implement this thing.
ConorSee if you can do it. You know what it has me thinking now too is this is a feature that um I think for a while you didn't care about, but then once you started using some range of stuff, you were like, oh, we need this. And I was like, I told you that like three years ago was the uh the papers called polymorphic lambdas with structure bindings or something that like that. They they don't call them generic lambdas, they call them polymorphic lambdas.
BryceSomebody somebody once told me that the the mark of a smart person is their willingness to rapidly change their position when they realize they're wrong. Flexible I flip-flop like the best of them.
ConorYep. But like now, that's got me thinking, because there's this one code example. I actually haven't uh I haven't modified it to get it working, but it's actually it's an example that Barry uses in his proposal, uh, the ISO C paper. And that that solution will be enhanced even a little bit more if we have that uh generic lambdas with uh structure bindings so that you can unpack it right in the the parameter list. Yes. And like now I'm thinking like I don't even know if that's possible. Like I I think some things need to be figured out, but now I'm Sean, if you're listening, if if you if you need something else. Please, Sean. And now this this is makes me think like I have like I should have. Sean doesn't have time to listen to this podcast.
BryceWe can we can safely say whatever we want about about Sean. He's um he's not listening.
ConorBut the point is, is like I'm I'm I'm just over the moon that now not only do I have access to this and I can use it, but like I I basically my talk is gonna be a C talk for like the first two examples, and then I'm just gonna switch. I've even made my own circle logo. But but circ but Circle is C. It is, but like C doesn't get me this excited.
BryceYeah, yeah, but but but but I I I wanna I wanna drive drive this point home because I think this is a point that Sean would make. Circle is not a a successor language to C ⁇ . It's not trying to be um a different language. Circle is trying to to chart a a better path forward for C ⁇ and specifically a better path forward for how we develop and evolve C ⁇ . And honestly, I think that I think that C would be better off if we just uh appointed Sean the dictator of C, and we just closed up the ISO shop and you know, just the the the future evolution of C was all done through Circle and Circle was the official um uh reference language. But but what what what Sean really means by that when he says that Circle is C is that um uh it's you know it's extensions and proposals to C, but that it's all built on top of C ⁇ itself. Um that it's not not meant to be a new language, it's not meant to be a thing from scratch. Um that that he feels that it's important. Um and also he feels that that we can evolve C into a better language, and he's trying to show us how to do that. And he thinks that that's a better idea than going and building these successor languages.
ConorSo I went and looked up a Pokemon evolution, because I didn't I wasn't allowed to follow Pokemon or watch it or have the card story for another different day.
BryceYou had an interesting childhood.
ConorUm but so I'm not sure if Charmander is like pre-C11 and then He definitely is Charmeleon is like uh C11 slash 20, like all the new editions, but like Charizard is definitely Circle. It's like so that's that's what I mean is that like I don't want to put a C logo in the top corner of my circle code because C is either Charmander or Charmeleon, whereas Circle is Charizard, and like that's the thing. I know about Charizard because it was one of the cards that everyone was after. I couldn't, I not in a million years would I've been able to tell you Charmander and Charmeleon. Like I know Pikachu and Bulls.
BryceI mean Charmander's pretty good, I gotta say. Like, you know, he was pretty good back in the day.
ConorBack in the day, but now and so that's the thing, is I just I I know that uh circle is a good one.
BryceBecause like he's like good against like the first couple of gym bosses. I think I think uh in like the original games, I think like Squirtle was really the one that struggled.
ConorYeah, I mean not. I know Squirtle is the little uh little toad Wilken like one, right?
BryceNo, no, no. Maybe it was the maybe it was uh Where's that Bulbasaur? Maybe it was the it was the grass one. Well, anyways, one of no one of them had difficulty against the first few few gym bosses.
ConorThe point is, Charizard, aka circle is the evolved C. And so even though they are, you know, the same thing in some respects, and like I think that's how Sean wants to market it, is like this has me so excited now, and like although I I I will say I Sean is not somebody who does marketing.
BryceSean Sean is telling you genuinely what he thinks and believes. I've I've never heard a man with less bullshit in him than Sean. And I say that as a person with a great deal of bullshit in me.
ConorI knew that how that sentence was gonna end. Uh and I say that. Fill in the blank.
BryceUh oh, I have a I have a dog. And she's gonna come right over to me right now. Yes, she is. She has to say hi. Because she just went outside. Alright, let's um let's let's wrap up wherever this is going.
ConorSo, what did you want to talk about? I mean, just basically announcing that uh there'll be links in the description for folks that want to go check this out. And in general, it just has me more excited about like I think last episode I said using some of the other features like language tuples and variants would have me a little bit concerned because then it becomes like a lot less compatible with like existing C compilers. And now I'm thinking to myself, what what version of me is saying that? Like I want language tuples. Why why do I even care if I'm if I'm veering a little bit away from C if I'm just gonna be compiling with Circle? Anyways, yeah, the point is Circle's amazing and super excited about it. Yeah, so stay tuned, folks. My C talk is now a Circle Talk. Thank you to Sean. Super excited. And also, too, like uh I don't mean uh to say this too, that like you know, C is done. Like I'd think the folks in the C ISO committee should be like uh I know that yeah, like the template metaprogramming group, which I think actually is like temporarily shut down from what I've heard. I mean, I don't really follow the ISO um ins and outs.
BryceWell, I mean uh Han is leading that one. But uh I mean your point about you're not saying that C is done. I mean I think that's Sean's whole point is that C isn't done, that the future of C should be circle.
ConorA point with which I wholeheartedly agree. I just I feel like I'm gonna be testing out all of my personal projects that I have. Because I already was gonna I kind of was waiting for C23 so I could just get rid of a lot of the range v3 stuff that I was depending on. And now that I'm doing that, I just I feel like uh let's check. Let's check on circle laying. Do they have CMake? Um I would almost ooh, I Googled CMake and it doesn't actually say anything. But I imagine, I mean, if you can get this to work on the command line, you can get this to work with CMake, correct?
BryceYeah. Well, I mean, CM As somebody who has spent some amount of time trying to get CMake to work with new compilers, it's um it's not trivial.
ConorLet's go to the GitHub. Circle GitHub. Circle CI is the first thing that comes up. Sean.
BryceHave we ever done an episode where we talked about how we like to present?
ConorUh like at conferences?
BryceYeah.
ConorI don't think so. We've we've done like meta conversations, especially one of them came up with um Sean Parent, who we have to have on. We apologize, Sean. I can't even when's the last time we've had him on? It's been way too long. I don't know. Um we're gonna we're gonna reach out, Sean. We'll see if we can I think he's at Civil. That's what we'll do. He's at C now. We're supposed to talk to Tristan Brindle. We're gonna have Tristan.
BryceOh yeah, I gotta, I gotta, I gotta say, because like like I peep peep. I am not at C now.
ConorYeah.
BryceOkay. I'm not there this year. There's no particular reason. I just I have a lot of travel. This one, this was the trip that got cut, but I am not there. I'm I'm getting like three or four messages a day from people being like, hey, where are you? We are we're going to dinner. Or like other various inquiries. It's like, I'm fine. I am not I am not in a hospital, I am not sick. I'm just simply not at the conference.
ConorI feel very sad. Nobody's asked me why I'm not at the conference.
BryceUm You're not as important as me.
ConorIt's clear, clearly not, clearly not.
BryceThat's not true. If if if if I if I I I I may be a more prominent person right now, Connor, but the the like my my velocity may be greater, but your acceleration is definitely greater. I feel like in ten years from now, I'm gonna be telling people, oh yeah, I knew Connor back when he was a little What do you what do you mean?
ConorWhat this this podcast is still gonna be happening. You're gonna be telling people I know him? You're we're still gonna be co-hosts, buddy.
BryceUh I I definitely will be telling people I know you. Do you tell people that you know me?
ConorUh I mean, people people just know that we know each other because most people that know That's true. Well, actually, I mean I don't I don't know. Like, because what are the circumstances where I'm at some event? It's always a conference, and typically the crowd at the conference.
BryceExcept for C now, which is a conference that I am not attending.
ConorYeah. I I don't think I'll be ever ever be able to make it back unless if I skip because I am in the midst of three races. Two, one that I had a couple days ago and one that I had a week ago, and then there's one on the 14th. So like basically the conference is bookended by like two of my favorite races.
BryceYeah.
ConorAnyways, back to uh so there are a couple issues on the uh circle GitHub that are entitled, they're closed, so you can go read them, we'll link them in the show notes. Advice to replace G with Circle for CMake projects, and there's been a couple other CMake fixes, so uh it looks like there is CMake support. Uh probably there should be a bullet point on the homepage that says something about that.
BryceBut uh, you know, like it it may not support all the flags or all our like it may not have built-in support for setting in the features, and I don't know whether um uh circle CUDA is fully supported by CMake and things like that.
ConorYeah. I'll uh well I'll be testing it out. So uh stay tuned, listener. And yes, Sean, we'll have you on. What is what is it today? It is both we can have both Sean's on. Have we had wait, have we had Sean Baxter on? Oh yeah, what do you when you recorded in your apartment? We did a three-part episode episode. Which is so unfortunate because that I think is one of our best episodes of all time. But because you recorded an apartment, uh, it was super echoey. So like that's like one of our best episodes and one of our worst quality uh audio qualities, but it's still, I think, people loved it.
BryceIt's just uh would have been amazing if well this episode is not gonna be one known for our audio. Like, I don't know how I sound right now. No, you sound decent.
ConorI mean it's not as crispy clear, but it's like f 60%, 70% uh is good.
BryceSo I'm gonna get a travel mic just so that w wherever I am in the world, I can always do something.
ConorYep. And uh yeah, we'll have Sean, we'll reach out. And so yeah, what is it the date today is the 10th? We're releasing this.
BryceDon't tell don't don't tell me that. I don't I don't want to know that.
ConorThis is getting released on the 12th.
BryceIt's as far as my mind is concerned, uh it's the start of May. It's not May 10th. It's the start of May. I've still got a month ahead of me. Okay. Glad we're on the same page.
ConorOh yeah. We probably let's see if we can record with either Tristan and Ben. So we're gonna have a just to let the listener know where we gotta record.
BryceWe gotta record next week, because then I got my mom in town. Um So let's do well, we we we have to record.
ConorYeah, let's well let's try and do it early because I'll be in I'll be in New York Wednesday to Saturday, so I can't do it then.
BryceUm and and once again to clarify, you are not coming to see me, even though you, my closest friend, are coming to New York.
ConorI'm going to Montauk.
BryceI'm going to Montauk. You can come to Montauk. I oh at the last New York C meetup, I told multiple people about your uh your trip to Montauk and the ridiculous mechanisms by which you are using to get from the airport to Montauk, and everybody agreed that uh Hey, it's not my fault.
ConorGoogle Maps said there was no transit to the Gurney Resort and I didn't think to change the location.
BryceAs as my girlfriend will happily tell you, you should not rely on Google Maps as much as you do. What?
ConorWhat I what else should I rely on?
BryceI don't know. Common sense.
ConorI thought you were gonna say me, Connor, you should have asked me.
BryceNo, my my um I used to think I had an excellent sense of direction, but I have been I you know, I didn't know I was clumsy, and I didn't know that I didn't have an excellent sense of direction. These are things that I feel like your parents should tell you, but I did not learn those until recently. And I have no table manners.
ConorWe we live, we learn, and uh we'll uh we're gonna see each other lots though. We're gonna see each other for like a week. Also, yeah, we I still have to book I still have to book hotels.
BryceUm, but uh that is I yes, I'm I'm working on on finalizing the travel plans.
ConorYeah, I haven't booked half half my hotels. I got all my flights booked finally just like a couple days ago. Um almost messing.
BryceWho are you who are you who are you flying out of Venice?
ConorUh I'm going to Dublin, so I'm pretty sure there was only two options that were direct. One was Ryanair and one was Airlingus, and the Airlines one was Please, please tell me you took the Airlingus one. Yeah. I I I've heard I've heard that Ryanair is kind of the equivalent of Flair. I'm not sure if you've heard of that airline, but I like to say if you don't care, fly flare.
BryceYeah.
ConorUm but honestly, it was more because of the time of day. One of them was like eight in the morning and the other one was at noon, so you took the eight in the morning one? No, I took the noon one.
BryceOkay. Well, mistakes.
ConorMistakes. Why?
BryceYou should I mean, you should prefer to to to take the the first flight in the morning because it's uh delays accumulate throughout the day, and also if you take the first flight in the morning or the like the last flight of the day, then you get to spend like the full day at your destination. If you travel in the middle of the day, then like it's it's just a full transit day. Now, if if it's a full transit day, if you're on like an eight hour flight, that doesn't matter. But if you're flying somewhere that's like two or three hours away, if you take the eight AM flight, you get in like ten, eleven, and then like it's it's just like you, you know, had like a a slightly late morning getting up. Whereas if you take the noon flight, then like you just you've lost that whole day.
ConorI don't know if I'd agree with that.
BryceI'm just saying you denied yourself. Anyways, anyways, that that the air lingus flight. I'm taking an 8 a.m. flight out of Venice to go to London Heathrow. My flight to New York is like at 5 p.m., but I'm gonna go to some lounges. Anyways, I gotta go. So sorry, you what were you saying about the Airlines flights?
ConorWell no, I was gonna say you told me not to take Ryanair, and the Airlingus one was the one at noon. So, you know, you're giving me conflicting uh, you know, what do I do? No, it's a better airline at noon or worse airline at you made the correct decision.
BryceBut but the bigger problem is why are you booking flights without just talking to me?
ConorYou know, you know, there's a short answer to this, Bryce, and it's because I've had literally book all my accommodation and travel on my list of things to do since back in March. And we're now it's it's now May 10th, and I just like I'm so it just it doesn't take a ton of time, but it takes like a couple hours to book like a few different flights and look around.
BryceI you you know that I love playing.
ConorI know, I know, but I I procrastinate so much on it that like finally when it gets to like an 8 p.m. on a Monday and I'm like, okay, I'm actually gonna do this, I'm not gonna message you to then find out, oh, I can't let's do it tomorrow morning.
BryceI would drop everything and just go do it. Now you might open up a few credit cards in the process. Okay, I I gotta go though.
ConorAll right, it's been a blast. We will yeah, chat next week. And uh all the listeners, have a good have a good week. Be sure to check your show notes either in your podcast app or at adspthepodcast.com for any of the topics that we mentioned in today's episode, as well as a link to a GitHub discussion where you can leave any thoughts, questions, or comments on today's episode. Thanks for listening. We hope you enjoyed and have a great day.