7 ms·
This is exactly why we chose Zig. Andrew’s design decisions in the language have always been impeccable. I’ve never seen him put a foot wrong and would have ma
by jorangreef 1y ago
This is exactly why we chose Zig.
Andrew’s design decisions in the language have always been impeccable. I’ve never seen him put a foot wrong and would have made the same change myself.
This is also not new to us, Andrew spoke about this at Systems Distributed ‘25.
Also, TigerBeetle has and owns its own IO stack in any event, and we’ve always been careful to use stable language features.
But regardless, it’s in our nature to “do the right thing”, even if that means a bit of change. We call this “Edge” and explicitly hire for people who have the same characteristic, the craftspeople who know how to spot great technical quality, regardless of how young (or old!) a project may be.
Finally, I’ve been in Zig since 2018. I wouldn’t exactly call it “shiny new”. Zig already has the highest quality toolchain and std lib of anything I would use.
- zwnow 1y agoGood to know, also thanks for the detailed reply! Glad you are fully aware of these nuances, but it also doesn't surprise me considering your amazing presentation of Tigerbeetle! Much success in the future.
- jorangreef 1y agoThanks zwnow, appreciate your kind words, and my pleasure! I think you'll enjoy Andrew's talk on this too when it comes out in the next few weeks. The velocity of Zig has been valuable for us. Being able to put things like io_uring or @prefetch in the std lib or language, and having them merged quickly. Zig has been so solid, even with all the fuzzing we do. It's really held up, and upgrades across versions have not been much work, only a pleasure.
- tialaramex 1y ago> Andrew’s design decisions in the language have always been impeccable. I’ve never seen him put a foot wrong and would have made the same change myself. Interesting, who designed the old Zig IO stack which alas Andrew needed to replace?
- eddythompson80 1y agoA less experienced Andrew
- eviks 1y agoIndeed, but to be fair, the old stack was done with a hand, not a foot!
- BrouteMinou 1y agoI've built a bridge 20 years ago. It was great, people could finally go from one side of the river to the other. Everyday, more and more people started using that bridge. In 2025, I've rebuilt the bridge twice as big to accommodate the demand of a growing community. It's great and the people love it!
- 8n4vidtmkvmk 1y agoBut some people are upset because you put the new bridge in a new location and now it's inconvenient for them?
- BrouteMinou 1y agoNah, they are upset because it brought more people, which increased the traffic... https://www.wired.com/2014/06/wuwt-traffic-induced-demand/ https://www.wired.com/2014/06/wuwt-traffic-induced-demand/
- jorangreef 1y agoI think what you're not appreciating is how this design is a huge improvement over the status quo, not only in Zig, but also the streaming interfaces in most languages. Wait till the SD25 talk on this comes out, to first understand the rationale a bit better!
- robertlagrant 1y ago> I think what you're not appreciating is how this design is a huge improvement The point was that if he did the old design, which needed improving enough to justify breaking the language backwards compatibility, then why say his decisions are impeccable? Pobody's nerfect.
- DanielHB 1y ago> Zig already has the highest quality toolchain and std lib of anything I would use. My couple of days experience with Zig was very lackluster with the std lib, not that it is bad, but feels like it is lacking a lot of bare essentials. To be expected for a new pre-1.0 language of course.
- flohofwoe 1y agoDepends on which language you're coming from. Compared to C or even C++, the Zig stdlib has already many more things to offer. Compared to Python or Node.js it's quite bare bones.
- DanielHB 1y agoFair, I was mentally comparing to Go. I was a bit disappointed there wasn't more wrappers around basic OS stuff. Go stdlib wraps everything and does its best to make stuff cross-platform. In my specific case I was trying to send some DNS messages. I went the route of linking libc and using the posix data structures for DNS messages and struggled quite a bit how to map the C data structures to my program. This kind of thing is a big barrier to adoption unfortunately.
- RATML 1y agoGo is literally a Kitchen Sink. I love it, but that stdlib comes with a runtime dependency.