4 ms·
Joran from TigerBeetle here! Zig has changed my life, and our team, by making TigerBeetle possible. It's been an incredible journey these past 5 years, and exc
by jorangreef 1y ago
Joran from TigerBeetle here!
Zig has changed my life, and our team, by making TigerBeetle possible. It's been an incredible journey these past 5 years, and excited that we can now pay it back (and forward!) to the Zig Software Foundation, also matching with my friend Derek Collison and Synadia in doing so.
Thanks to Andrew for creating something beautifully special for the world in Zig, and to all the Zig core team and communities.
If you don't yet donate to the foundation, please consider doing so: https://ziglang.org/zsf/ https://ziglang.org/zsf/
- dangoodmanUT 1y agoI’d be really curious to know if there have ever been major snags being such an early adopter of a language (relative to comparable language options)?
- jorangreef 1y agoZig has been great. If anything we could merge critical features (e.g. io_uring, @prefetch builtin and others) into Zig in days or hours instead of years. In hindsight, Zig exceeded expectations, and the quality was exceptional to begin with.
- dangoodmanUT 1y agoSomewhat of a tangent - did you ever feed "forced" into io_uring because zig lacked native async io? I know you already pre-allocate, and I guess io_uring is effectively pre-allocating a core to doing io work since you have to spin it
- jorangreef 1y agoRegardless of language, there was never any question that TB would be using io_uring—the interface is that good! If anything, Zig made it easier, bringing all the primitives/atomics I needed to merge io_uring directly into the std lib. Note that io_uring doesn’t require a pre-allocated core for spinning. There are multiple modes. We just use the kernel thread pool, which we prefer to a user space thread pool!
- nafizh 1y agoHow would you onboard a software engineer who doesn't know zig if you were to do so? Learning tips?
- jorangreef 1y agoThanks! I write about this briefly in the blog post, but the more detailed answer is there's no need: Zig's grammar is simple/explicit/powerful enough that they pick it up themselves in a weekend. Learning Zig is just not something we need to talk about with new hires, and we hire systems programmers from all backgrounds. To be clear, we do invest in months of onboarding in terms of understanding the TigerBeetle code base. For example, matklad has recorded nearly a hundred hours' worth of IronBeetle episodes [0]. But I just noticed at one point that people were joining our team and never having any trouble with Zig. The question was just never being asked. Essential simplicity is a great benefit! [0] https://www.youtube.com/playlist?list=PL9eL-xg48OM3pnVqFSRyBFleHtBBw-nmZ https://www.youtube.com/playlist?list=PL9eL-xg48OM3pnVqFSRyB...
- matklad 1y agoI personally learned Zig by reading https://ziglang.org/documentation/master/ https://ziglang.org/documentation/master/ and stdlib source code once I joined TigerBeetle. enums.zig and meta.zig are good places to learn, in addition to usual suspects like array_list.zig. (though, to be fair, my Rust experience was a great help for learning Zig, just as my C++ knowledge was instrumental in grokking Rust)