Most active commenters
  • jorangreef(4)
  • zwnow(3)
  • Hamuko(3)
  • flohofwoe(3)

←back to thread

228 points Retro_Dev | 35 comments | | HN request time: 1.467s | source | bottom
1. zwnow ◴[] No.44461773[source]
And this is exactly why you do not use shiny new languages for your projects. Hope tigerbeetle won't have too much trouble with this
replies(5): >>44461853 #>>44461858 #>>44462043 #>>44462061 #>>44462171 #
2. hmry ◴[] No.44461853[source]
Zig is the only language I've used where every library specifies the one (and only) compiler version it works on in their GitHub readme.
replies(2): >>44462482 #>>44463201 #
3. Hamuko ◴[] No.44461858[source]
Are people deploying production code in a language that is still in its 0.x version?
replies(3): >>44461880 #>>44461901 #>>44462078 #
4. zwnow ◴[] No.44461880[source]
I dont but there are companies who trust the language (which is a good thing but also short sighted)
5. cenamus ◴[] No.44461901[source]
I mean, what's the difference to the python 2/3 debacle? People were writing/extending in python 2 long after it was declared obsolete
replies(3): >>44461971 #>>44462086 #>>44466246 #
6. Hamuko ◴[] No.44461971{3}[source]
Not having breaking changes every N months?
replies(1): >>44463222 #
7. eviks ◴[] No.44462043[source]
The risk isn't unique to shiny new languages
8. ozgrakkurt ◴[] No.44462061[source]
TigerBeetle uses io_uring afaik so they don’t use these io interfaces at all.

Also found that these interfaces only cause problems for performance and flexibility in rust so didn’t even look at them in zig.

9. ozgrakkurt ◴[] No.44462078[source]
A lot of people were using tokio in prod when it was 0.1 and didn’t get upset afaik.

Rust didn’t even have async await at that time

replies(2): >>44462533 #>>44463202 #
10. mirashii ◴[] No.44462086{3}[source]
It's not about sticking around on an old version, it's about ever being able to catch up, and what the rest of the ecosystem is going to do. Python did this major version bump that broke a lot of the ecosystem, and it went so poorly that they've effectively promised never to do it again and completely excised any thought of ever having a major version bump again, and other languages and communities now point to it regularly as a debacle to be avoided.

When you break things regularly, you're forcing a choice on every individual package in the ecosystem: move forward, and leave the old users behind, or stay behind, and risk that the rest of the ecosystem moves forward without you. Now you've got a whole ecosystem in a prisoner's dilemma. For an individual, maybe you can make a choice and dig in and make your way along without too much trouble. But the ecosystem as a whole can't, the ecosystem fractures, and if it doesn't converge on the latest version, it slowly withers and dies.

11. jorangreef ◴[] No.44462171[source]
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.

replies(3): >>44462294 #>>44462444 #>>44462720 #
12. zwnow ◴[] No.44462294[source]
Good 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.
replies(1): >>44462856 #
13. tialaramex ◴[] No.44462444[source]
> 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?

replies(5): >>44462481 #>>44462503 #>>44462595 #>>44462812 #>>44465708 #
14. eddythompson80 ◴[] No.44462481{3}[source]
A less experienced Andrew
15. kunley ◴[] No.44462482[source]
Experienced quite the contrary, some time ago at least..

Which is a pity because really liked the language, but the discovering what works with what, oh dear

16. eviks ◴[] No.44462503{3}[source]
Indeed, but to be fair, the old stack was done with a hand, not a foot!
17. bogdan ◴[] No.44462533{3}[source]
Some prod are more prod than the others.
18. BrouteMinou ◴[] No.44462595{3}[source]
I'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!

replies(1): >>44466197 #
19. DanielHB ◴[] No.44462720[source]
> 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.

replies(1): >>44463186 #
20. jorangreef ◴[] No.44462812{3}[source]
I 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!

replies(1): >>44462858 #
21. jorangreef ◴[] No.44462856{3}[source]
Thanks 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.

22. robertlagrant ◴[] No.44462858{4}[source]
> 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.

replies(1): >>44462932 #
23. jorangreef ◴[] No.44462932{5}[source]
Yes, and my point (in response) was that Zig's status quo was no different from other languages, but now is better. (There's some humor in the issue's title “Writergate” here!)

Again, we use Zig, and this change is welcome for us.

We also like that Zig is able to break backwards compatibility, and are fully signed up for that.

The crucial thing for TigerBeetle is that Zig as language will make the right calls looking to the next few decades, rather than ossify for fear of people who don't use it.

24. flohofwoe ◴[] No.44463186{3}[source]
Depends 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.
replies(1): >>44464490 #
25. flohofwoe ◴[] No.44463201[source]
How many pre-release languages are you typically using though?
26. Ygg2 ◴[] No.44463202{3}[source]
> A lot of people were using tokio in prod when it was 0.1 and didn’t get upset afaik.

Citation needed. A lot of people wanted Rust to stabilize. Hence why they huried to Rust 1.0.

27. flohofwoe ◴[] No.44463222{4}[source]
Each new minor Python 3.x version has plenty of deprecations followed by removals in the stdlib though.
replies(1): >>44464194 #
28. Hamuko ◴[] No.44464194{5}[source]
I don't think even those are particularly short periods. TestCase.assertEquals() was deprecated in Python 3.2 (February 2011) and removed in Python 3.12 (October 2023). 12 ⅔ years to get rid of a silly alias because it's a breaking change (of a single character).
29. DanielHB ◴[] No.44464490{4}[source]
Fair, 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.

replies(1): >>44466714 #
30. AndyKelley ◴[] No.44465708{3}[source]
Actually, nobody.

Here is the commit where Reader/Writer was introduced: https://github.com/ziglang/zig/commit/5e212db29cf9e2c06aba36...

This is a few months after `git init`. You can see I was really just working on the parser, with a toy example to get things started.

Over time, I merged contributions that made minor changes and shuffled things around, and these APIs evolved to kind of work okay. But nobody really considered "the Zig IO stack" as a whole and put in design effort. That is happening for the first time right now.

This is how programming languages are constructed. Things evolve slowly over time, and periodically you have to reevaluate things and do major reworkings.

replies(1): >>44468654 #
31. 8n4vidtmkvmk ◴[] No.44466197{4}[source]
But some people are upset because you put the new bridge in a new location and now it's inconvenient for them?
replies(1): >>44466796 #
32. skybrian ◴[] No.44466246{3}[source]
Static types help to find what needs to be fixed. Something like 'go fix' would be useful for fixing them. Apparently something like that is being considered for zig.
33. RATML ◴[] No.44466714{5}[source]
Go is literally a Kitchen Sink. I love it, but that stdlib comes with a runtime dependency.
34. BrouteMinou ◴[] No.44466796{5}[source]
Nah, they are upset because it brought more people, which increased the traffic...

https://www.wired.com/2014/06/wuwt-traffic-induced-demand/

35. keybored ◴[] No.44468654{4}[source]
Actually, I wasn’t intentionally designing anything.