Episode: 3559 Title: HPR3559: Linux Inlaws S01E52: The Zig Project Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr3559/hpr3559.mp3 Transcribed: 2025-10-25 01:26:28 --- This is Hacker Public Radio Episode 3559 for the first time at 24th of March 2022. Today's show is entitled, Linux in-laws S01252, the ZIG project and its part of the series, Linux in-laws, it is hosted by Monochrome, and it's about 69 minutes long, and carries an explicit flag. The summary is an interview with LORIS TROOXID game. This is Linux in-laws, a podcast on topics around free and open-source software, any associated contraband, communism, the revolution in general, and whatever else, fans is critical. Please note that this and other episodes may contain strong language, offensive humor, and other certainly not politically correct language. You have been warned. Our parents insisted on this disclaimer. Happy mom? Thus the content is not suitable for consumption in the workplace, especially when played back on a speaker in an open-plan office or similar environments. Any miners under the age of 35, or any pets including fluffy little killer bunnies, your trusted guide dog, unless on speed, and Q2T Rexys or other associated dinosaurs. Welcome to Linux in-laws season one episode 52. Martin, how are things? Yeah, I think so. Good. How are you? And more importantly, that was our guest. Can't complain Martin, can't complain, but before we go into our guest, how is this situation shaping up at the UK? I understand that Lizzie hasn't stepped down yet? No, she won't anyway. This is comes with a job right. I see. To resign. So you can't resign. You simply don't know whatever. I see. Okay. Unlike her name, Merkel, she resigned. Yeah, she resigned. That's unofficial. Yeah, she's going back into physics. There's an episode of 2016. No, no, of next government negotiations happen now. About 12. If you want to know, by the way, people, if you want to know about the future of Mrs. Merkel, as in the external transfer, there's an episode of the dark side last year that gives a little bit of a clue at what's going to happen. And more specifically, the episode of the Halloween episode of last year. But this is not about the past, but rather about the future. So Martin, why don't you welcome all guests? Yes. Tonight we have a special guest who is someone we know from a few years ago. The past. Yes. Yes. Yes. Yes. Well, a bit of recent past. Let's put it that way. He's heavily involved with a programming language. Yes. Comes to tell us all about tonight. Yeah, that was the point in time. I think even before you defected, right? I think Laura's defected first. He did. Sorry, I wouldn't. I wouldn't. I wouldn't. I wouldn't. I wouldn't use the term defected now, but just for the why don't you introduce yourself and all results will be resolved very soon. Hello, guys. Um, well, uh, wait, Martin, you defected? Yes. Yes. I left. That's a straight. It's not an army. There's no defection possible. I guess he's run by, yeah, let's not go into the details of who's run by. Laura, sorry, sorry. Maybe. Before we drift into the internals, into the internals right away, why don't you introduce yourself? And then I'm going to, I'm going to set on, I'm going to set some of that on all the defections that happened since you left. Oh, okay. Yeah. Let me well, okay. So hello, everybody. I'm Laurie Scrawl. And I'm currently with PEOPLE Community at the zix of a foundation. And, uh, well, we were saying that we were talking about the faction a moment ago. So I joined the zix of a foundation after leaving red slabs where I was a developer advocate. And I don't know, I guess I put my marketing skills that I gained at red slabs, at use now. I mean, I'm putting them at use now at the zix of a foundation. Yeah, this is, and this is how we all met. Martin, myself and Laura's, of course, were working at red slabs and we also called red slabs. Uh, Martin has defected and he has defected since again. I'm still with redis as it's not called these days, but this, but this episode is not about redis or, or, or VMware or bright light, whatever it was called Martin, but rather about the zix programming language and the zix foundation. So, Laura, further ado, why don't you tell us a little bit about the foundation as a programming language as such? Sure. Um, and also, I, I guess I need to do a good job right to convince you guys because I, I listened to your last podcast. You did it. I did it. Martin, that's a listener. Excellent. Sorry. Good. You guys didn't sound super stoked by ZIG when you were discussing it the last night episode. Well, we don't know anything about it. So what do you do? Indeed, we don't. Otherwise, it's a problem language. Yes. So, okay, ZIG is a programming language. We on, on the website, we have the stagline where we say that it's a general purpose programming language. Um, you know what? I'm bringing up, I'm going to bring it up and read it, uh, directly. That doesn't sound glorious. But, uh, here's the thing. I can justify each word, uh, which I think it's more interesting and concise. So, ZIG is a general purpose programming language and to change for maintaining robust, optimal and reusable software. So, the idea behind ZIG being a general purpose programming language is that it's a programming language that doesn't have like a runtime, and it doesn't have dependencies on things that you can find on like full blown personal computers, but then maybe you wouldn't find in embedded devices. So, uh, for example, you can't really program a tiny embedded devices with Python without weird compromises in ZIG. You don't have that. It's a tool chain because you can use ZIG to compile CNC plus plus code and cross compile it. So, like Linux windows are 2x86. And that, that it's known, that is non-trivial. It's weird, but CNC plus plus have always been weirdly hard to cross compile. And finally, the robust optimal and reusable is just how we like to describe how an ideal Z program should look like because ZIG puts a lot of emphasis in handling errors. It doesn't have exceptions, for example. So, whenever online can error out, you know it because error is part of the return time and stuff like this. Also, we as a language ZIG is very explicit. There is no hidden control flow, no macros, and like the general ethos of the language is to be easier to read than it is to write. Sometimes you write a bit more, but the idea is that who comes in and reads should not be confused by your code, normally. It's like a modern C slash C plus plus slash rust container, if you will. It's in the same ballpark, roughly speaking. And how does it come about? I guess, did someone just decide on they were going to invent a new program language or was there something specific that I thought or this is not good in C or C plus plus? So, I think that the story is, okay, do you want to know the story that I like to tell people or do you want to know the real story? The truth and the whole truth. Okay, so I'll start with the one that I like to tell. The one that I like to tell is that the creator of the language is Andrew Kelly, who at the time was working at OKCupid. And apparently, OKCupid is a giant C plus plus code base. Even though it's a website, at least that's the part that everybody knows about, right? But apparently it's implemented in C plus plus. So, the story that I like to tell is that Andrew, when they was put in charge of a messy C plus plus code base, and he told him, well, you need to maintain this. And he did the only rational thing, like the shortest path to maintain a C plus plus to maintaining a C plus plus code base, it's doing that in your language and rewrite it in that. That's what I like to tell. But the reality is that I believe that Andrew has always been interested in audio processing stuff. So, like, making digital music, right? And if you want to do tooling the works with sound, it needs to be very efficient. You cannot have like garbage collection poses, stuff like this. And so, he looked at a few languages, and he wasn't happy with any that he tried. And so, he ended up basically working on C. So, this is the official version. What's the unofficial one? Well, no, the second one about how the stuff is the official version. Ah, the version is to tell is the OKCupid one, the one where he had to work on a C plus plus code base, but that one is not true. OK, so no facilities involved, no money changing, and that's the sort of thing. Not yet. OK, I fully stosure, I had a very brief look at the language over the last couple of years. Let's start at the beginning. Zick was invented about 2015, 2016, something like this. Yeah, I think he checks out. I don't remember precisely when there's also, you know, the initial part where like it's a private repo, so nobody knows about it. Then he becomes a public repo, but then still nobody knows about it. OK, I'm not exactly clear on that period, I guess. I joined Zick more or less around release 0.4, I believe. Got it. Going back about 10, 12, 13 years ago, I was just invented by Google. Mozilla had just dreamt up this or somebody at Mozilla. Sorry, I should probably be more precise. Somebody at Mozilla had just dreamt up this requirement for a new language, because C plus plus and C didn't cut it anymore in terms of total cost of ownership of the code base, you could have to know the rest of it. Hence go lang or affectionately also known as go was and rust were born. Now, if I take a closer look at Zick, it does remind me in certain quarters of both rust and go lang. It's not fully object oriented. It does support structs that reminds me pretty much of rust. Enums are very close to rust. For example, if I take a look at the other type and we're not getting too technical here, that reminds me of really of rust. Where do you see the differentiator between say go lang and rust in a Z context? I think that there is some difference. There are parts of the Zick syntax that kind of remind of rust, but I know Zick, I've been doing Zick professionally now for a while, for more than a year. I still, given that, I don't have an easy time reading rust programs. Even though parts of the Zick syntax are similar, there are some big differences when it comes to how progress I end up written in the end of the day. I would personally say as a still imprecise way of describing the differences, but just to as a first approximation. I think that rust is a language that loves abstractions and complicated stuff in the same vein that C++ does, while Zick is more on the C side of the equation. On the side where you don't want to go to insane with abstractions. Now, that said, while I personally, clearly, definitely in the camp of simplicity, so I definitely prefer the Zick approach compared to the rust one. Obviously, there are some advantages to each approach. There's people who can make the C++ work for them beautifully, and so more power to them, that's my point. But yeah, so that's the bigger difference. I would say then, if you were to compare rust and go and see where Z is in that spectrum, yeah, maybe it's in between in some ways, although it doesn't map perfectly because Go is garbage collected, Zick isn't. I would say that Zick is a simpler rust. It's a systems programming language in a way that I don't think Go truly 100% is, but on the other hand, it does share with Go on appreciation for simplicity. That said, Go like simplicity to a minimalistic level that I think it's kind of unique of Go, and even though I like Go a lot, I really like Go, but I don't know, some things are a little bit minimalistic for my days nowadays. Interesting perspective, Flores, many people do say that rust has a very steep learning curve. Having learned rust myself and full disclosure, I'm not. I wouldn't because I wouldn't consider myself a rust expert by no means. I dabble and rust a little bit here and there, but that's about as far as it goes. I can concur with the entry into the program language, not the easiest one, especially given the concepts like ownership of variables, how memory is managed and rust and all the rest of it. I fully concur with your observation that probably rust is too heavy on abstractions, and it's an interesting perspective that you see this closer to see. Now, again, full disclosure, I'm really old, so I learned to see about 30 years ago, give or take a few years. When I take a look at the programs and the website tells me, apparently, because of the LLVM backend, you consider Zik to be a drop-in replacement, and a lower level to be very similar or rather off-sea. How do you see this relationship from the huge code base that is out there with regards to see Zik maybe being a logical successor to see in the regard? Yeah, so we have an actual slogan for this. The slogan is, maintain it with Zik, and it's on the website, but it's also the title of a blog post that I wrote a while ago, and I think that we're going to use it for something else in the future. So the idea is this. You can use Zik as an in-place replacement for clang. So there's CC command. If you do Zik CC, then that's a flag-compatible interface with clang. So you have a C project. You compile it with clang. You use to compile it with clang. You can swap in Zik CC. Now, that alone doesn't sound too interesting. Why would you do that? Clang is plenty good. Why toss in another thing? Well, here's how it works. You toss in Zik CC and your stuff keeps working. Then with a tiny little bit of work, depending on how complicated the project is, you can tweak a little bit in your make files to remove, for example, target specific capability checks. Like, for example, you know how sometimes build scripts are trying to look if your system supports a given feature or not, but those are tied to your system. So if you remove those, and clearly you, as I'm going to say, you do that in a reasonable way so that you don't remove a check and then assume that something through is through when it's not. But the point is, you do it correctly, and you can now cross-compile your project. We actually brought a blog post series where we actually did this with Radys. So step one, replace your GCC or whatever your C compiler with Zik CC. Step two, tweak a tiny little bit the variables that you feed into the make file and add the appropriate flags to Zik. And it's literally just dashed target x86, Windows x86, Linux, whatever you want. And now you can cross-compile. And we actually, in that blog post, cross-compile renders. So we did it on three actually while testing this out the first time. So like I was on a Mac and I cross-compiled a version for Linux and I sent to Enru and he was able to run. And that's step two. So cross-compilation, enabling cross-compilation. And by the way, if you were to try to cross-compile a C project by yourself without Zik, it's a bit more complicated than just setting the target variable. You need to bring your own C-sroot, you need to bring your own C-library for the target. And there's a lot of work that you have to do the Zik does for you automatically. Step three, though. And here things are becoming more interesting. The build scripts are sometimes like there's a soup. Projects have soups of build scripts like they have a make file, but then make doesn't work on Windows. So they also add C-nake because somebody likes C-nake. Then somebody else likes something else. Windows needs its own batch files or whatever curse thing people do on Windows. So you have always this project where they have sometimes they commit the autocomps stuff. Sometimes they don't, I don't know, it's a mess. Zik has a build system integrated in the language. So you create a build a Zik file and Zik can use that to basically do what you would do with make files. Now this is interesting because if you do that, you remove your dependency from make C-maker all this stuff. So now the compiler is also the build system for you. So you reduce the dependency and made your project a little bit more multi-platform. And that's actually something that it's already being used by, I can think of WASM3 and a few other projects in that space. They have a build Zik file in their repo. So if you have Zik, you can just run that and you're good. And that brings us to the final step. So here you can see the maintaining it with Zik story fully complete. You have a Z project. You keep it in Z. You don't start rewriting it right away. But when you want to add functionality, you can create a Zik compilation unit that the Zik compiler will be able to compile. You will be able to export C-A-B-I symbols, functions, Ives, tracks and stuff that interoperate with everything. So it's like it's one extra compilation unit like any other compilation, C or C++ compilation unit that you would have. Although we are limited to the C-A-B-I, no C++ A-B-I. So let's say that Zik is more friendly towards in that perspective. But you have your Zik compilation unit and now you can link everything together. And we do that, for example, in the blog posts. We take Redis and implement a new command in Zik that then we link into Redis. That's maybe not the correct way of adding comments to Redis. But when we wrote the blog post, the perspective was of us being the maintainer of a C-project where we don't start rewriting everything. We just add stuff as a separate compilation unit. And if you like Zik a lot, you can, if you want, start tackling your C-project with one compilation unit at a time, like you replace it with an equivalent Zik implementation. And so you swap one piece at a time. And if you want over time, you can rewrite it in Z. If that's your goal. If that's not your goal, that's perfectly fine too. Because the point is that since Zik can compile C code. And we have maybe a compatibility. For example, there are projects out there that are just basically packaging a C-project into a repo that has a built-up Zik file and maybe a Zik syntax sugar layer so that you can use the Zik file that gives you, you know, nice Zik types instead of what the C API would return to you. But the second step is not even necessary. Even just having a build file would be amazing. And Zik would be able to use it. Okay, sorry, before we go any further, I should probably have prefixed this part of the episode, like the really technical deep down stuff. Before we lose the two of members of the audience maybe we should probably clarify a couple of things. L&VM, of course, is a compiler framework. Let's put it this way. That is our available GitHub and also has a fancy project website. You'll find the link in the show notes. Essentially, it's comparable to the GNU compiler suite in terms of it has a backend that is in charge of code generation for a couple of things. And then it has a program language specific front ends for the various program languages. Rust is using L&VM, sorry, if you invoke Rust C, which is the Rust compiler, you essentially invoke the L&VM backend for code generation. Similar, the C-lang, or Clang that Laura's just mentioned, would actually be the C-lang plus plus would be the C plus plus front end for C and C plus plus program languages feed directly into L&VM. Now, Laura's the build system you mentioned, that sounds pretty much like something called cargo for Rust. For those few people out there listening who don't know it. No, what cargo is essentially cargo is the Rust equivalent. I'm simplifying things here. Of the make or auto make build system for Rust. cargo can pull down dependencies, can compile dependencies in all the rest of it. So what make and auto make and all the GNU tool chain equivalence took about, I'm tempted to say 10, 15, 20 years to really be user friendly. In terms of simplifying things, it only took cargo about what, 5, 10 years max. That's my personal opinion on the whole thing. But maybe Laura's you have an opinion of yourself, with regards to this build system that you just described in comparison for example to cargo. Yeah, no, I think that's a fairly comparison. To be a bit more precise, cargo is also a package manager. Correct. Yes. We don't have yet the package manager part, but see, start working on it in like, I don't know, probably three months from now. So we want to also have that. It's just that we are slightly, it's a bit too early. But there's one thing that cargo cannot do, that they can do, which is compile secode. Cargo can fetch your dependencies. It's so Rust projects can depend on secode, and they do do that. But when Rust sees, when cargo sees that you have a seat dependency, it uses the systems compiler, the system, the system. So in a sense, cargo cannot fully work as a, if you will, build system and package manager for see projects. Well, they can compile and cross compile sea dependencies. So let me give you one example of how this is critical. And by the way, what this is, if you in from this perspective, one thing that cargo cannot do, it's not the end of the world, though, because, because you can use zig cc from cargo. There are a couple of blog posts out there. When I wrote myself called zig makes go cross compilation, just work. And somebody else saw my blog post and did the same with Rust. And so there's another blog post called titled zig makes rust cross compilation just work where basically they had this Rust project that depended on a C library. And they configured cargo to use zig cc as the systems c compiler and c++ also. And now they were able to cross compile. So the what going back to the package manager slash build system perspective, the aim for the zig build system and package manager is to become a major C build system and package manager. If you want an example of this, I'm going to share a link with you both. There's a tweet by Mitchell Ashimoto from HaxiCorp, which recently went public. So apparently Mitchell, I don't know, instead of enjoying the big money that comes from going public, I would assume started packaging c application, c libraries with z. Shifting back from technical things a little bit. If I take a look at GitHub, the code base that is out there with regards to go lang and Rust is just overwhelming, especially the adoption of Rust in the in the last, I'm tempted to say two years never mind the adoption of go lang. In the last seven years has been amazing projects that are come to mind. And other are more like system oriented projects that require a more like a low level language like C or more. I'm almost tempted to say C++ have adopted these two languages left right and center. Where do you see zig in this context? And if I take a look at the at the code on GitHub, there are not that many projects out there that use dig as the main implementation language. And by the way, of course, the language apparently is self hosted. If I'm not completely mistaken. The factor of it being quite a young language as well, right? So. Well, true. Yes. And that's the reason why I'm asking about the roadmap here. Yeah. So, okay, maybe, so first of all, let me acknowledge that yes, you're right. There are not that many z packages out there yet. That is fair. It's also because in part, there is no package manager. So you can imagine how surely it reflects the level of adoption, not out there. But also you start having a proliferation of libraries and packages once you start having a package manager that allows you to easily leverage them. So we don't have that yet. So I think it's normal for these numbers to not be exploding yet. We'll see after we publish the package manager. What happens now? Okay. So this is libraries on GitHub. As for the language itself being self-hosting. So the language at the moment is not self-hosted yet. Sure. But we are about to. That's the current main piece of work that we are doing right now. Long story short, Z is implemented in C++. But if we like C++, we wouldn't be doing Z. So we are trying to replace the current implementation in C++ with that self-hosted implementation. These are false implementations. Aside from being more to our taste, has a couple of interesting aspects to it. One is that it's going to be considerably faster than the current implementation. Z is not that slow at compiling. But the new self-hosted implementation is really designed to be much faster. It implements many of the data-oriented tricks in case people have heard this term. It's like just techniques to make your stuff go fast. And on top of that, we also want to implement incremental compilation with basically, let's say, a new way of doing incremental compilation. There should be also allow, it should also allow us to basically do rebuilds of arbitrarily big projects in less than a millisecond. So the idea is you have a big project. You've compiled it once. Obviously, the bigger the project, the more it takes to compile it. There's no escape from that. But you have this giant project. Let's say it's, I don't know, Chrome or Zig Chrome. And you change one file, one definition somewhere. Recompiling the project after that one change should be basically instantaneous. That's what we aim for. And there are a lot of tricks that are necessary to get there. So this is the self-hosted work that we're doing right now. I'm personally working on implementing the doc system for the self-hosted compiler. That's what I'm working on right now. So the thing that basically generates documentation automatically for Zig projects. But it will take a while before all this stuff is complete. So as I was saying, I don't know, three or four months, something like this, after that Zig will be self-hosted. Interesting. So with regards to the overall ecosystem, you have a foundation in place for enough. So does Rust. So does, I'm almost tempted to say go along, but we have this kind of tiny search engine brand go. So that's for me, an effort, an effort, a compression. Are you sure to go as a foundation? No, that's what I'm saying, but it has a search engine backing it. I will think one thing though. The Rust foundation is very different from the Z software foundation. Do you want me to go into the lily's? By all means, just go ahead. So Zig is a 503 non-profit foundation. Sorry, 501 C3. While Rust is a 501 C6. So these letters, 501 C3, 501 C6, these are like, it's a pointer, if you will, into the specific paragraph and the line inside some kind of American legal document that defines. For the two people in the audience who are not American text lawyers, lots of course referring to the text legislation in the US with regards to non-profits. Yeah, this may be the show notes. Good luck finding them. I don't even know where to start. I guess you can go to the side, but the point is, the point is, 501 C6, 501 C3. Now, this is a tiny number of the changes, but a 501 C3, it's a non-profit foundation that can accept donations. A 501 C6 cannot accept donations. So, not even the ones under the table. I mean, you mean a lot being. Joking laws, I'm joking. So they cannot accept donations. So the rest of the donation is not allowed to accept donations. The only thing that they can do, well, I guess they can do work, just like the Z-Soft Reformation, can do work and being paid for work. But the last foundation, basically, the way they get money is by having member companies pay a fee. So in some ways, they are more like a consortium. I think that here in Europe, we would think of that type of organization as a consortium. So they are a group of companies with a shared interest. Companies pay a fee to getting to the foundation, and that's it. One interesting side effect of this is that the Z-Soft Reformation is paying its developers. I am being paid by the Z-Soft Reformation to work full time on Z, and so are a couple more people. At the REST Foundation, nobody is paid to work on REST, except maybe a couple of people who have administrative tasks. So the developers are not paid to work on REST. I think the fundamental difference is, similar to Linux, the people on the foundation, I'm part of different companies who are just chipping in with regards to making the project work, whereas Zix seem to be different, apparently, in that case. Yeah. Okay. Yes. Also because there are sometimes, I think, some interesting conflicts of interest, I think, when you have the second approach, the one where you have companies, sorry, the first approach is to say, the one where you have companies basically higher your court contributors, because on one hand you have this, if you will, natural misalignment of incentives, where companies paying these people to work on their stuff, and secondly to work on REST, or the other open source project, whatever that is. But it's not just that. One thing that happened recently with the REST Foundation, which I found not very nice, was that REST had an executive director that was somebody from the REST project itself. They had been there for, had been there for a long time. And basically, this person was, was the executive director at Interim, so only temporarily, while they were searching for somebody to take the position full time, but it basically never renewed her contract after it expired the first time. And the foundation remained without an executive director for something like six months or something like that. And in the meantime, when you don't have an executive director, the highest authority is the president of the board of directors, who was the, the person in charge of the REST team at AWS. So AWS basically, it's one of the biggest member companies. They have a bunch of board seats. They have the executive, they're sorry, the president, the chairwoman of the board of directors at the REST Foundation, and they also employ a good chunk of the key developers of the REST project. And I don't know. I think that when you have an external organization, whoever that is, it, for me, it's very easy to hate on AWS. But whatever the company is, even if it's not a company, you know, where, where they ask employees to be in bottles, even if it's a much nicer company, it's still a problem in my opinion. So one thing that we do in the self-reformation is that we know upfront, we are never going to give board seats to any big that company period. Okay, interesting. Okay. Although now you might say, well, okay, then how do you guys ever expect, ever expect to become big? That's an interesting thing. Well, what is the, I guess, what is the objective, but just to go? Yeah, I mean, you mentioned the donations. So these are sort of no strings attached, donations to the project, is that right? Yeah, correct. And then the second question that follows on from now is, you know, obviously the people like yourself and people developing their language, how do they earn their bread on the table? That's put it that way, right? This is where, you know, organizations that sponsor Rust programmers that helps the, or any open source project helps the project move along, right? So that's, if in your case, it's mainly done on the voluntary basis or as a sideline, then you can perhaps imagine it will take longer to take off, is that fair to say? Or how do you see that? Yeah, so I think that from my, from the development, the velocity perspective, I don't think that not having a big company sponsor Rust makes much more difference. I think it does make a gigantic difference more from a marketing perspective, because even though, for example, Rust deserves, I think, to be regarded as a very interesting new language and absolutely innovative when it comes to the borrow checker, et cetera. Well, I mean, you can also see that, especially now that AWS is in charge, there's a lot of marketing money being spent into Rust stuff, like the hype, level is pretty high, and marketing money is being invested into, you know, keeping the temperature high. In some ways, if you argue the same about Go, I don't know precisely how much marketing investment that has been in Go, but, you know, the fact that Google uses it, and then once it starts being used for one big project, then, and the fact that it's baked by Google, then that all stuff that helps, for sure. For Z, when it comes to paying for contributors, it works this way. We have three contributors that work full-time, in our pay-to-work full-time. I'm one, another one is Jacob Conka, who left Microsoft to basically work on a in-house linker that we are using in Z. I won't get too much into detail, but the idea of course, compiling, like, making a program, compiling a program on Windows for macOS, it's not intriguing, and especially with the new macOS, is that came out, there was no linker able to do that, and so Jacob started working on this stuff. But, aside from these technicalities, and the third person, of course, is Andrew. Our three are the full-time contributors right now. Then there is a group of about, let's say, 10 people who are not working full-time, but who have contracts where they are allowed to build hours to the software formation. So they do some work, and they are allowed to build a few hours every week. I don't remember the precise details, but you can think of it as, like, lower than part-time, something like this. These are pretty safe. Obviously, the more donations we get, the more people we would like to bring on board to work full-time. But, the general idea is that we would want to always stay small, like a tiny organization, no overhead as much as we can, so that we can stay tiny, and more importantly, that we don't end up, like, depending too much on one donor, on one big company, something like this. We don't want to end up, like, Mozilla, who, at one point, had to fire a bunch of very good people just because they end up, just because then one deal that they had with Google ended up not being renewed, and there was a disaster. From a marketing perspective, obviously, yeah, not having a big company in your border direct towards its stuff, because well, they have money, and money is easily translatable into marketing muscle. I don't know, you can have a ZIG conference organized and entirely paid by this giant company, and that surely helps. We're not going to have that, but at the same time, I think that we are solving problems that are interesting enough, that people have started to notice. I showed you earlier a tweet from Mitchell Hashimoto, but we started, for example, recently getting being paid to do offer a support contract to Uber, where they started basically to use the ZIG CC to cross-compile some stuff on their end, and they wanted us to fix some corner cases with, like, old Linux G-lib C versions and stuff like this. And I think that, if we play our cards right, for example, I'm not really being paid to work on ZIG the compiler. I do that as well, but my job is more marketing focused. So if you look for ZIG on Hacker News, you will find a good number of things that I've written in the path that has reached the front page. I'm not the only one, but this is part of our strategy. So we are more, I don't know, guerrilla style marketing, you will, which is an interesting question. And of course, the links will be in the show notes with regards to the stuff that Laura has just mentioned. Laura, if I take a look at this spreadsheet, I see quite a few companies outside the realm of the user's aspects that have picked up on ZIG. But of course, that pays with regards to the Google stuff of the world and the musilas of the world and the Microsoft world. I mean, there was a statement last year, what was it before? I can't remember where somebody from, officially for Microsoft said that in a nutshell, I'm simplifying things, of course, that Rust basically will be the next C++ at Microsoft in terms of, it's that, it's that analogy stack that will be replacing the workhorse that has served Microsoft for at least 10 to 15 years as the main implementation language for office software for some other quite interesting stuff over the years. Where do you see this in terms of the overall interesting adoption going for ZIG? That's a good question. I don't have, so I didn't know about this, Microsoft stuff, it doesn't surprise me, it kind of makes sense. I can tell you that my knee-jerk reaction is, I don't honestly care which language they use to implement ads in my start menu, so I'm kind of jaded when it comes to Microsoft specifically, but this is not about Rust, this is about Microsoft specifically. But if you want another example, another recent example, where Rust started being adopted by an important project, and actually in this one ZIG apparently was in the race too, but we lost two Rust in a sense, if you will, is Ruby. There was a discussion in the Ruby forum discussions with the creator, Mats, where they were discussing re-implementing the component of the compiler, the GIT part of the compiler from C to either Rust or ZIG, and they were, and then the contributors were asking the Mats, the owner of the project, if it was fine to use Rust or Z, and they may end up choosing Rust. So that's fine too. Honestly, from that perspective, I think that Rust and ZIG are different enough that people that would want to choose Rust should choose, and they really like Rust, they are not going to be happier by choosing ZIG. I do think that there are a lot of people though out there who would not be super happy to use Rust, and that would be happier to use ZIG. In interesting perspective, taking a step back now, if I take a look at the ecosystem, starting, for example, with Python, Python has been run for the last 30 years, Golan has been run for 15, 17 years, some of that, Rust has been run for 10 years plus, give or take. When I take a look at the crates that I owe ecosystem, it reminds me of PyPy, as in the Python package index, that took in terms of functionality and packages overall available for any purpose, parsing websites, anything basically. If I take a look at Rust, I'm tempted to say that it took the Rust community about 10 to 11 years to get to the point that the Python community took over 25 years to get there. If I take a look at the ZIG ecosystem, I don't think it's quite there yet. Okay, fair enough, you have been run for seven years, so it takes a while to build an ecosystem. But as far as I'm concerned, actually, a language and the adoption of a language, or text, in general, lives by the ecosystem as such, where do you see ZIG going in terms of our community adoption, especially when it comes down to the module ecosystem? I can tell you very easily how we're going to do much better than Rust. So here's the idea. Rust is a fuzzy language in a sense. So fuzzy is in because when you're using Rust, if you want to make good use of all the things that Rust gives you, you cannot really, you don't really want to jump into C code, do you? Because C isn't safe, right? And you have to close everything in and save brackets and it makes interpretation hard. In ZIG, we're not that fuzzy. In ZIG, we don't mind bitfiddling. We don't like on the fine behavior. So some C stuff maybe won't compile correctly. ZIG, by the way, compiles everything with on the fine behavior sanitization. So not every C library can be used right away, but the ones that don't have on the fine behavior in them can be used. And we are not as picky as Rust. Surely we would prefer as implementation over a simple implementation of something, but there is less of an like impedance mismatch between ZIG and C than it is between Rust and C. So long story short, from ZIG, you can make use much more easily of 40 years of C libraries. And for this, this is how it's going to start. The start is not going to be, let's say, re-implement everything in ZIG. The start is going to be, let's package already good C libraries that have been out there since forever. They are basically currently being used everywhere. There are like critical infrastructure of modern technology. Let's re-pack it up from ZIG so that we can use it more easily. And boom, now you have everything. It won't necessarily work in every single case, but the point is we are not rejecting existing C libraries. We are embracing them. And it's much more easy to just fix the build script so that it uses Build.ZIG of an existing C libraries than it is to library, than it is to re-implement it from scratch. Interesting perspective, especially from, okay, full distortion, I'm a little bit of Rust hand, but for enough, apparently we both share that passion to some extent, Laura, but let me take a look at it from a Rust perspective. Rust gives you, I'm tempted to say a very low technical depth. In terms of if you can convince the Rust compiler to generate code, the QA phase in terms of fixing bugs and especially when it comes on to memory stuff is pretty short. See on the other hand, you just go ahead. If you want to shoot yourself on the foot, that's fine. Now I see ZIG, if I understand the language correctly, somewhere in the middle, you can do a lot of things that you can do in C, and what you just said confirms this to a certain extent, if you want to reuse C libraries, but Rust is explicitly on the other hand basically tells you, sorry, you have to know what you're doing in terms of if you're using the answer of Crate, you better know what the implications are, because normally, and that especially goes for the ecosystem that is out there for us, you are bound to save code, and so combining the Crates, and this is very similar to Python these days when our program Rust, first of all, I'm going to take a look at Crates and I owe to see what's out there. Similar, if I want to do a code based in Python, I'm normally checking out the Python Package Index, because most of the time, and that goes for Rust and Python, I simply end up writing glue code, but if I check out Rust in terms of a stick to Rust, once I basically have my cargo definition file, as in cargo.tomel done, which is, I'm simplifying things in the equivalent of a make file for C, the Rust compiler basically, because we're also talking about save code, guarantees me a short turnaround times in terms of debugging, especially when it comes on to memory issues. Now, where do you see this total cost of ownership, especially with the gods, to technical depth going in terms of zik adoption? Yeah, if that makes any sense. It does. That's definitely an open question, and obviously, Rust makes a very good, makes a very good proposition when it comes to safety, and ultimately, I agree with you. The ultimate point is, what is the total cost of ownership? Let me ask you a counter question, but I would like to reiterate, I do believe that Rust is making a good offer, so I don't want to dismiss that. That said, which one would you prefer? Also, from a perspective, maybe of ease of use, being able to just import a Rust crate into your Rust project is obviously super easy, but from a perspective of total cost of ownership, or the risk of bugs, you mentioned risk of issues with memory management, but memory management is one source of bugs. There are also many other ones. Of course, would you trust more using a newly minted Rust crate, that basically is a re-implementation of... Curl, that's what I wanted. Curl, yes. From the perspective of total cost of ownership and bugs, yes, Rust covers memory bugs, memory usage bugs beautifully, but those are just one source of bugs. So, which one would you prefer? A newly minted crate that is a re-implementation of Curl, or Curl itself? Because Curl itself is surely... it's a C project with all the... the inner that comes with that, but at the same time, it's very, very battle-tested. So, which one would you prefer? Interesting question there. I'll go for the original curl. I would take a look at the guitar. Issues page, yes. No, total sight, Laura. That's a tough one. I would probably take a look at the adoption figures of Craitorio to see who's using this newly minted Curl implementation. To see what's happening. I don't know. Give it a half a year, but for the meantime, I probably would be... I'm reluctant to say this. But I would concur with Martin, yes. So, my answer is code. It is. It is answer code, yes. But at the end of the day, my point is that there's a lot of good outcomes from Rust, but it's unclear to me that is the ultimate silver bullet when it comes to total ownership cost of something. And I don't believe that throwing immediately in the trash 40 years of C code is the right choice. I'm being a bit too extreme here, maybe, because it's on with you. Yes. Rust can intervene if we see. But I think that more in general, especially for domains where memory management is not that complicated, while other sources of bugs are really more the problem, like I don't know, distributed systems. Memory management, most of the time, is not complicated, like you have a request, and memory has to leave for as long as the request survives, and you can do that with an arena locator is super easy. The problem, though, is that in distributed systems, you have a bunch of problems that come from the nature of distributed systems. And those are bugs where Rust can help you to some degree, but not 100%. And again, not to dismiss Rust. Rust is amazing. This is all good. The point is, it's not the ultimate growth that nobody ever will able to agree. Yes, absolutely. Because that hasn't been invented yet. Exactly. Now, I mean, jokes aside, Laura, I mean, these three languages, and GoLang goes along the same line to some extent, are targeting one specific area, namely system languages, for system-oriented programming. Zika is in that area of C, C, this is where C comes from, Udings was implemented in C, and that's exactly what Mozilla had in mind, when they more than 10 years ago, but took a very serious look at something called Rust. A system language designed for system-specific things. And if you take a look at the crates that are out there, much of the stuff is actually targeting a system programming, goes without saying, like the one you just mentioned, like curl. Yeah. So, I think that the idea of packaging curl is a stocking point, and then maybe slowly over time, after you have come to an understanding of how you think it can be improved, because I think that rewriting without improving the interface, it's a, well, maybe it's not the best use of time. Let's just, let me just put it that way. So, the plan is to have people just reuse what's already over there, that's already pretty good, and then only rewrite once you know how to improve on the original interface, on the original APIs and stuff. Okay. Yes. You're listening now to the additive version of this episode. The original version went about for four hours. We went into the, you know, the compatibility details, but this, of course, has been edited out. You may find the original version on something called Linus in Laws.eu, but jokes aside, no lawyers, let's wrap this up. It has to be more than interesting to, here, here you perspective on things, especially where you see this going. There is, if you've listened to a couple of episodes, there's something called The Poxes of the Week, where we simply discuss things outside the topic of the current episode as an ending goes. The pox basically are about things that you think worth mentioning, like books Martin normally refers to movies, especially his dark habits and some other stuff, like designer rock since and so forth, but really anything goes. So, Laura, what is your pick of the week also known as a pox? Let me think. Oh, man, I don't know. I can only think about what I knew for the pox. The pox on the spot, okay. But why didn't you go first, Chris? You see, I'm almost happy to say, my new vice as in the TV series from the 18s. I've just just got a lot of ideas for them all. It's a little more, I'm just okay. No, I just decided. I've just discovered this recently and I used to watch this left run in the 20s and it brings back fun memories, but without the fire, it's Martin, what's your pox? That's a good question. I'll have to have a think as well. I don't think anything specific. You have about 10 seconds. So, if we talk about movies, I watch this week and I rewatch this week and the original lot of the ring of the ring's trilogy and it was nice. I don't understand, though, why certain phrases became memes? Like, they are taking the hobbits to Isengard. Why? Why that phrase became so much of a meme that they made songs with it? Did it? Okay. Yeah, there were like YouTube videos which basically this sentence repeated as part of a song, but that was only one, right? Also, the other one, you don't simply walk into Mordor, something like this. It goes to show Laura's that you're about 30 years younger, than Martin and myself are. Oh, I'm sure you're not going to get any letters. Give her a take if you had any way. Okay. One does not simply walk into Mordor. I think there has been memes so many times. I can't even count how many have so I've seen of those. But yeah, anyway, it shows that I guess intercultural culture has changed from that time to today because nowadays I don't know. In some ways, the memes seem weirder. The movie's worse, but the memes are at least more relatable, I think, than in the past. I never understood them. The past ones. Okay. Martin. Okay. Since we're sticking with movies, I'll go with a movie called Land of the Blind, which is I watched at the weekend. It's from 2007. It's a BBC production. I don't think so. It was part of the show. In that, it's basically about someone overthrowing a dictator with a revolution, and then the revolution becomes the new dictator. Which is even worse than the original dictator. So it's kind of, you know, your enemy really is this moral. Okay. To the modern world, like, back number one for a McSyriot and McSyriot Joshua Worth, up purely, what's the word I'm looking for, incidental? Coincidental? Inspiration, whatever. Jokes aside. No, links may be in the show notes. Loris, that has been more than inspiring. Thank you for taking the time. Actually, what we missed is, if people want to become involved in ZIG, yes, the club. Let's go ahead. How can people help? How can people help? People can help, I think, in three ways. One, by contributing code, if that's what I like to do, because it's an open source project, you can go to github.com slash ZIGLANG, and you will find our organization with repositories, and we have weekly meetings to help people contribute to the language. Number two is, of course, donating money. We have a github sponsors page, still on github. Also, on the website, there's a big link at the top. So if you go to ZIGLANG.com or at the top, there's a big link that tells you how to sponsor the ZIG software foundation. I think it's also an interesting page to read, because it explains how the organization works, even if you don't plan to donate. Number three, and this is actually my favorite, you can contribute, just by paying attention, because all these things that happen in open source, and how open source organizations interact with one another, having people see what's happening, really can make a difference. When nobody's watching, organizations, open source organizations can behave in ways that you wouldn't expect from an open source organization. Recent events in the dotnet foundation, for example, are relevant to this point. And more in general, knowing what we are doing helps us, you know, helps us also protect ourselves from people misinterpreting, deliberately or not, our intentions and actions. So that's my favorite. Great. Last question for my side-law is, what is the license for ZIGLANG? What is a liberal one like Apache or MIT or something? Good question. Yes, it's MIT. MIT, you're the first people. It's a very liberal license. So you can take the source code and do pretty much whatever you want with it. Yeah, and it's deliberately non-GPL, like it's deliberately non-complicated for companies, let's just say. Yes. People, this is a non-communist license, of course, because it's not GPL, as it's not part of the GPL license family, but that's okay. We do make exceptions on this podcast. Well, that's a very complicated story, maybe for another episode. People, the lyrics in laws is. Is the is the go-to source for the episode list? Pick and choose your episodes with regards to communism. We do have a five-year plan. There are regular cadence updates on the podcast, how we do it with our five-year plan. Yes, exactly. And don't forget to check out the dark side, just in case. But enough plugs. Lawrence, thanks again for being here. I hope to have you back soon for an update on Zik and all the best with the project. Thank you. It's a pleasure. This is the Linux in laws. You come for the knowledge. But stay for the madness. Thank you for listening. This podcast is licensed under the latest version of the creative comments license. Type attribution share like credits for the intro music go to blue zero stirs for the song summit market to twin flames for their peace called the flow used for the segment intros. And finally to the lesser ground for the songs we just use by the dark side. You find these and other dd's licensed under cc achamando or website dedicated to liberate the music industry from choking copyright legislation and other crap concepts. In the Zik community we start calling this stuff like that's a Linux moment. Uh when you're using Linux and like your mic doesn't work or your screen share doesn't work. And it's a little moment. Have you copyrighted this term because it'll be in an hour? I'm joking. You've been listening to hacker public radio at hackerpublicradio.org. Today's show was contributed by an hbr listener like yourself. If you ever thought of recording a podcast then click on our contribute link to find out how easy it really is. Hosting for hbr is kindly provided by an honesthost.com. The internet archive and our sync.net unless otherwise stated today's show is released under creative comments, attribution, share-like, dd's o-license.