Not

Hacker News!

Beta
Home
Jobs
Q&A
Startups
Trends
Users
Live
AI companion for Hacker News

Not

Hacker News!

Beta
Home
Jobs
Q&A
Startups
Trends
Users
Live
AI companion for Hacker News
  1. Home
  2. /Story
  3. /TigerBeetle and Synadia pledge $512k to the Zig Software Foundation
  1. Home
  2. /Story
  3. /TigerBeetle and Synadia pledge $512k to the Zig Software Foundation
Oct 25, 2025 at 9:54 AM EDT

TigerBeetle and Synadia pledge $512k to the Zig Software Foundation

jorangreef
102 points
202 comments

Mood

supportive

Sentiment

positive

Category

other

Key topics

Zig Programming Language

TigerBeetle

Synadia

NATS

Debate intensity40/100
https://www.synadia.com/blog/synadia-tigerbeetle-zig-foundat...

TigerBeetle and Synadia pledge $512k to the Zig Software Foundation, sparking discussion about the Zig language, its comparison to Rust, and the companies' use cases.

Snapshot generated from the HN discussion

Discussion Activity

Very active discussion

First comment

-924s

Peak period

145

Day 1

Avg / period

40

Comment distribution160 data points
Loading chart...

Based on 160 loaded comments

Key moments

  1. 01Story posted

    Oct 25, 2025 at 9:54 AM EDT

    about 1 month ago

    Step 01
  2. 02First comment

    Oct 25, 2025 at 9:39 AM EDT

    -924s after posting

    Step 02
  3. 03Peak activity

    145 comments in Day 1

    Hottest window of the conversation

    Step 03
  4. 04Latest activity

    Oct 29, 2025 at 12:15 AM EDT

    28 days ago

    Step 04

Generating AI Summary...

Analyzing up to 500 comments to identify key contributors and discussion patterns

Discussion (202 comments)
Showing 160 comments of 202
praveenperera
about 1 month ago
1 reply
Are you guys using Zig?, love NATS by the way.
derekcollison
about 1 month ago
We are waiting on the IO abstraction for a supported Zig client (There are others though today), but this is specifically for a new initiative at Synadia that we will share more details about soon!
dangoodmanUT
about 1 month ago
5 replies
> For each of our companies to donate $256,000 in monthly installments over the next two years, with Synadia matching TigerBeetle, for a total of $512,000

Why over 2 years?

Like VC investment, Id assume a lump sum up front allow them to move faster with that money (hiring the right people sooner, etc.)

I wonder if projects like this care more about predictability of income (e.g. not hiring people depending on future funding to sustain them)

mikkupikku
about 1 month ago
1 reply
Slow is smooth. Smooth is fast.
gethly
about 1 month ago
3 replies
I heard that very recently in a movie, just cannot recall which one.
kapitar
about 1 month ago
1 reply
Not a recent movie, but it was mentioned in Shooter, a Mark Wahlberg film from way back when
RedShift1
about 1 month ago
1 reply
2007 is way back when territory? :utf8_shocked_emoji:
kapitar
30 days ago
Yes I suppose it's not! My time sense in recent decades is very fugitive :)
mi_lk
about 1 month ago
1 reply
Brad Pitt's F1

https://www.imdb.com/title/tt16311594/quotes/?item=qt8134908...

gethly
about 1 month ago
Yes, I think that was it.
mikkupikku
about 1 month ago
2 replies
It's popularly claimed to be a Navy SEAL saying. I have no idea if that's true, but I think it has some broad merit to many things, almost anything which benefits from careful planning or training. In this context, throwing a big lump sum of money all at once could pressure the developers to spend money / hire too fast without careful planning. Spreading the payments out could be the donor's way of saying they don't want radical hasty changes, they just want to help out in a way.
andrewflnr
about 1 month ago
It seems quite wide spread by now, at least. I heard it in at least one martial arts class (and something what recently that I can't place). The people who said it could have gotten it from military background.

Anyway, it should be widespread, since it's basically true, though perhaps more relevant for physical skills than for donation scheduling.

gethly
about 1 month ago
sounds like the good old "rabbit vs turtle".
Aurornis
about 1 month ago
1 reply
I assume it’s being budgeted out of their monthly cash flow, not coming out of cash reserves.

> Id assume a lump sum up front allow them to move faster with that money (hiring the right people sooner, etc.)

On the other hand, the monthly payments mean they’re less likely to overcommit their spending up front.

If they’re hiring someone with twice-monthly paychecks, receiving the money up front doesn’t make much difference unless they want to hire based on projections of higher future donations, which is a risky move.

dangoodmanUT
about 1 month ago
Yeah the later is my thinking. Probably cashflow reasoning too.
codegladiator
about 1 month ago
There is always a burden of deployment of assets
trenchpilgrim
about 1 month ago
Most businesses prefer to make payments monthly because it's easier on cash flow.
SoftTalker
about 1 month ago
This is a donation, not an investment in the VC sense.
elthor89
about 1 month ago
1 reply
Is nats not written in go? Or does this foreshadow a switch to zig?
galangalalgol
about 1 month ago
1 reply
They have clients in many languages. But the zig repo is still just a placeholder. They often have bare bones servers in the languages too, like rust has one, but I think they are mostly for testing.
lukaslalinsky
about 1 month ago
I'll shamelessly plug this. I think this is the most complete NATS client for Zig, matching the official clients in API and features: https://github.com/lalinsky/nats.zig

In fact, working on this client prompted me to start working on another Zig project, asynchronous I/O framework, which I'll be integrating with the NATS client soon: https://github.com/lalinsky/zio

magicalhippo
about 1 month ago
1 reply
The Synadia story posted here[1].

[1]: https://news.ycombinator.com/item?id=45703716

dang
about 1 month ago
(we've since merged that thread into this one)
drfuchs
about 1 month ago
3 replies
Real programmers would have donated $524,288. But seriously good news nonetheless.
bryant
about 1 month ago
1 reply
For those who don't intuitively think in base 2,

2¹⁹ bytes, or 512KiB.

benatkin
about 1 month ago
I'd prefer to express it in hexadecimals, and 1 would be 256 cents. So it would come out to be very slightly more, at 0x00030000.00 hexadollars, or 196608.00 hexadollars, or 50331648 cents – $503,316.48

I may have been looking at the binary year 2038 countdown :D https://retr0.id/stuff/2038/

ncruces
about 1 month ago
1 reply
You can chip in remainder in soft monthly installments of $512 over two years.
drfuchs
about 1 month ago
Indeed. Take a gander at the last screenful of ziglang.org
jorangreef
about 1 month ago
We had to leave some room at the top for SpiralDB and ZML to get to the next power of two, or they'd have to raise the exponent. ;P
jorangreef
about 1 month ago
2 replies
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/

dangoodmanUT
about 1 month ago
1 reply
I’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
about 1 month ago
1 reply
Zig 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
about 1 month ago
1 reply
Somewhat 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
about 1 month ago
Regardless 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
about 1 month ago
2 replies
How would you onboard a software engineer who doesn't know zig if you were to do so? Learning tips?
jorangreef
about 1 month ago
Thanks! 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-xg48OM3pnVqFSRyB...

matklad
about 1 month ago
I personally learned Zig by reading 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)

eggy
about 1 month ago
3 replies
In performing an assessment of which ecosystem and PL to use to develop our high-integrity automation software for mission-critical applications, we assessed Rust, Zig, and Ada/SPARK. Rust had the support behind it from a big corp., a passionate developer community, and some adoption by significant entities, but none with cyber-physical systems. And it has been interesting to see some developers leaving Rust for Zig for the sheer enjoyment of using it instead. Our software will be controlling machinery overhead and other close coupling with machinery and people. Rust does not have the legacy in these areas or the ecosystem to cover formal verification. Zig was considered, but was even more new than Rust, and had similar disadvantages as listed for Rust. SPARK, a relatively newer PL, a subset of Ada, has legacy in high-integrity, mission-critical applications, and formal verification tooling that along with human review, makes it the strongest choice to meet the government's latest push for such critical software, and the language though verbose, is low friction to learn and apply. I found Zig to be a great second choice, and look forward to both Rust and Zig's future. Glad to see Zig moving along since Andrew started it. Congrats Andrew and the team currently pulling this off!
tayo42
about 1 month ago
9 replies
>leaving Rust for Zig for the sheer enjoyment of using it instead.

What do people find more enjoyable?

tkz1312
about 1 month ago
3 replies
Zig is orders of magnitude more pleasant and enjoyable to use than Rust.
estebank
about 1 month ago
1 reply
>>> Zig is more enjoyable than Rust

>> Why is that?

> Zig is more enjoyable than Rust

You didn't really leave the GP more informed than before.

yubblegum
30 days ago
Maybe GP can be informed by skimming the following links:

https://doc.rust-lang.org/reference/

vs

https://ziglang.org/documentation/master/

littlestymaar
about 1 month ago
1 reply
It's like saying bacon is better than cheese. I totally get why some people would feel that way, but it's far from a universal feeling.

Tastes are just subjective.

lenkite
about 1 month ago
4 replies
I think most folks would agree that Rust is an "acquired" taste. You need to kneel to the borrow-checker and develop something like a Stockholm syndrome before you find the language delicious.
vatsachakrvthy
about 1 month ago
1 reply
It's not kneeling it's literally just eliminating bugs. It's kind of like saying that we kneel to logic while doing math
GuB-42
about 1 month ago
4 replies
The problem I have with what I call "bondage and discipline" languages is that while it has value making sure the code is correct, it is not pleasant (for me) to work with.

Sometimes I just want to try out stuff, I know there is a bug, in fact, it breaks everything, but that's exactly what I want, I will revert it once my little expertement is complete. Strict languages will refuse to run anything unless you make sure that code follow all the rules, which is useless work as you know it won't stay (because it breaks things on purpose).

It is not just Rust, it is just that Rust has a lot of that. There is also C++ not allowing me to access private class members, or Python being annoying with its indentation, these are all good things for production code, but it gets in the way of experimentation.

Combine this with slow compilation times and it makes Rust not very experiment-friendly, which I think is the reason why many people don't have a good time with it.

As I understand it, Zig is more permissive and also has fast compilation as a design goal, which I think is a big contributing factor in making it more "pleasant".

api
about 1 month ago
1 reply
Experiments very often become production and now you have security holes and technical debt.
GuB-42
about 1 month ago
1 reply
Yes, that's a tradeoff, bondage and discipline languages like Ada and Rust are popular in some fields for a reason.

What I like the most is a middle ground: have a language that it permissive when it comes to generating code, but be strict with warnings. Again, problem is that too many people don't care about warnings. Way too many times, I had people call me to investigate their bugs, see a warning, point it out and tell them "here, that's your bug".

evntdrvn
about 1 month ago
An interesting thought experiment would be a language/toolchain that would be permissive when generating debug builds, but hard-required warn-free to generate an optimized executable.
ay
about 1 month ago
2 replies
Put Claude code on top of it and now you have prototypes of what you have in mind written pretty much instantly and they are suitable for reshaping into production later if needs to.
all2
about 1 month ago
1 reply
I'd be curious if there is additional tooling needed for this, as Zig is a moving target in terms of language/features.

I know of _ways_ to do this, but has anyone done this successfully with a RAG+version locked docs or something like that?

ay
30 days ago
In my comment I meant Rust, not Zig, apologies I didn’t make it clear enough!
RAMJAC
about 1 month ago
Lol, not that it's any good, but here is a pretty much purely vibed zig NES emulator that I let Claude work on: https://github.com/RAMJAC-digital/RAMBO It renders something.
mordnis
about 1 month ago
Zig can also be annoying. For example, you cannot just ignore the return value, even in debug builds. Playing around with slices, c strings, arrays is also annoying in comparison to C.
vatsachakrvthy
28 days ago
You're right that rust is not experiment friendly, especially since it doesn't have a repl. I guess I must be into BDSM because my go-to language for experimentation is Haskell
epage
about 1 month ago
2 replies
I'd guess that in 99% of cases, if the borrow checker is a problem for you in Rust then you are likely not ready yet for C or Zig, particularly when you need to work in a team where mainatainability by others is critical.

There are some cases the borrow checker requires you to go through hoops for but I see that as a win for adding friction and raising visibility of weird patterns.

And yes, there are cases that can't be expressed the same way,

pclmulqdq
about 1 month ago
1 reply
Sometimes, "weird" patterns are correct. The borrow checker doesn't care about nuance.
yoyohello13
about 1 month ago
1 reply
It’s also true that people overestimate how often the “weird” patterns are needed. 9 times out of 10 it’s the programmer who is missing something, not the borrow checker.
pclmulqdq
about 1 month ago
1 reply
That has not been my experience with it, but I understand if it is yours. I have often seen people use convoluted or slow patterns to satisfy the borrow checker when something slightly un-kosher would have been simpler, faster, and easier.
littlestymaar
about 1 month ago
unsafe exist for that very reason.

There's no Rabbi out there to mandate that your code is kosher, using unsafe is OK.

Also, the situation where you really need it are rare in practice (in 9 years of full time Rust, I've yet to encounter one).

matklad
about 1 month ago
Well said! Having a mental borrow checker running in background certainly helps a lot when coding in Zig. What also helps is that Zig safety checks generally catch lifetime bugs at runtime nicely. E.g., undefined memory is set to `0xAAAA`, which, if interpreted as a pointer, is guaranteed to be invalid, and fail loudly on dereference.
littlestymaar
about 1 month ago
1 reply
Having a well designed type system is a as addictive as sugar.

Also, Rust has a bunch of annoying warts but the borrowck ain't one of them (unless you're trying to write a linked list but it's not really something that happens IRL).

lukaslalinsky
about 1 month ago
2 replies
The funny thing is, in a language like Zig where memory allocation is explicit, linked lists are way more popular, just like they were in C. What happens IRL depends on your environment. :)
yoyohello13
about 1 month ago
1 reply
Linked lists are not popular in zig though. There are pages and pages of discussions about how linked lists are almost universally slower than an array. Zig devs are borderline obsessive about cache efficiency.
lukaslalinsky
about 1 month ago
Linked lists are slower if you iterate over them fully, however, that's not the only use case. Removing something, while keeping things in order. That's an O(n) operation on vectors, unless you have some kind of fancy segmented structure. Adding might need an allocation, even ignoring the option of failure, that's an unpredictable delay. On the other hand, linked list insert is O(1) and has no allocation involved. These are the properties people use linked lists for.
littlestymaar
about 1 month ago
Even if we set aside the performance consideration of using a linked list, if you have to re-implement a linked list, there's something wrong with your language ecosystem.
epidemian
about 1 month ago
1 reply
> You need to kneel to the borrow-checker and develop something like a Stockholm syndrome before you find the language delicious.

That was not my experience at all. I liked the language from the get-go. And the more i dug into it, the more i found to like. I really appreciated the design of Rust's iterators, and traits, and general language design, way before i stumbled into any major issues with the borrow checker.

I feel like this depends very much on the programming style and probably on the domain. But i found that programming in a mostly "functions and simple data structures" way, passing things down to other functions that need them, and just processing data instead of "modeling the domain" into mutable and confusing "objects", i didn't really come across many lifetime-related issues that the borrow checker warns about.

And the few that i did found, they were actually errors on my part, and Rust detecting them was quite helpful. Things like trying to mutate a collection while also iterating it.

So, IDK, YMMV i guess.

lll-o-lll
about 1 month ago
OOP has many short comings (enough that I would say it has been the single worst design paradigm that afflicted this industry), so Rust felt like a breath of fresh air to a c++ dev. However, many basic patterns that are employed when you are building embedded software are just needlessly difficult. Zig is the better C, and it’s just the better language for getting stuff done with total control. If I need to be high level with more I’ll reach for something else (c# provides all the optimisations I need if I’m not bit bashing). Rust feels like it has this one great trick, no gc and memory safety, but nothing else to offer.
IshKebab
about 1 month ago
2 replies
I strongly disagree. I can see why you would want to use Zig, especially if you absolutely need complete low level code and only care about pretty decent memory safety (which is valid in many scenarios). But if those don't apply Rust is much nicer.

Stuff like string manipulation is almost as painful as it is in C.

the__alchemist
about 1 month ago
1 reply
As far as I can tell, Zig's niche compared to Rust is to specifically cater to certain design patterns that C and C++ support, but other languages don't. E.g., anything that uses pointer manipulation for business logic.
IshKebab
about 1 month ago
I think it's more about low level control of allocation.

You can do "pointer manipulation" in safe Rust if you need to - anything that uses arena indices is basically that, e.g. petgraph.

The language wasn't really designed for it though so it isn't exactly integrated into the syntax.

But controlling allocation precisely is quite difficult in "normal" Rust.

Tbh I don't think it is actually that far away from Rust. It's aimed more at low level stuff, whereas Rust aims to do every level. It is more "trust me bro" than Rust's "no I'm going to check" safety. And comptime is pretty different to Rust's approach (arguably better).

But apart from that they seem to have very similar goals.

matklad
about 1 month ago
I strongly agree with your statement overall, but not in details.

Regarding string manipulation, Zig has slices and comptime-checked `printf`, so that makes string handling _massively_ more ergonomic than in C. But, yeah, managing the lifetime of the printf-ed is a pain in the back, and Rust is _massively_ more ergonomic there, if managing individual string allocations is what you want to do. (though one cool thing that Zig makes easy is comptime asserting that stack-allocated buffer has the right size for the given format string).

But, I do find Zig surprisingly ergonomic overall! For example, I have two Rust crate for writing glue code utilities, xflags (argument parsing) and xshell (shelling out). For TigerBeetle, I wrote equivalents:

* https://github.com/tigerbeetle/tigerbeetle/blob/main/src/std...

* https://github.com/tigerbeetle/tigerbeetle/blob/main/src/she...

What I found is that the Zig version is significantly easier to implement and to use, for me. In Rust, those domains require macros, but in Zig it's all comptime. And memory management is relatively easy --- flags live until the end of the program, shell is just using shell-scoped arena. I am contemplating rewriting my personal scripts at https://github.com/matklad/config/tree/master/tools/gg to Zig for that reason. Though, Zig not being 1.0 _is_ a problem in that context --- I touch my scripts only rarely, and I don't want to be on the hook for upgrades.

LexiMax
about 1 month ago
2 replies
Some people enjoy the relative simplicity and straight forwardness of C, some folks enjoy the flexibility and zero cost abstractions C++ gives you.

Some people can appreciate both. I actually like both languages for different reasons and I don't really understand why they're consistently being pitted against each other. Language wars are... for lack of a more appropriate and less-crass term... stupid.

tayo42
about 1 month ago
1 reply
With limited time and mental energy and I woukd say the languages are fighting for attention. The war is over why should I pay attention and for territory in my head.
LexiMax
about 1 month ago
1 reply
Because this industry is a knowledge-based industry, and it's a good idea in general to always be honing your skills and learning something new.

Even if you don't have any intentions of using a new language in your day to day career, there's usually a few super-interesting morsels in there that you can add to your knowledge banks.

I've personally lost count of the number of times I took a concept I learned in another language or technology stack and applied it to my day job.

eikenberry
about 1 month ago
1 reply
There's a big difference between learning from a language and mastering a language and the competition is around the latter.
LexiMax
about 1 month ago
If you think that complaining about a language on the internet is an effective way to hamstring wider adoption in and of itself... I've gotta say the results leave much to be desired.
hnlmorg
about 1 month ago
> Language wars are... for lack of a more appropriate and less-crass term... stupid.

I couldn’t agree more!

gorjusborg
about 1 month ago
7 replies
Zig feels like a better C with modern tooling. It is a tool that works for me.

Rust feels like a better C++ with modern tooling. I am a tool that works for it.

pyrolistical
about 1 month ago
2 replies
This is what people don’t understand. Zig and Rust are not competitors. Rust is a better C++ but C was the good part of C++.
pjmlp
about 1 month ago
1 reply
Nah, C should be nuked, C++ is TypeScript for C, Microsoft was right that C was done on Windows, unfortunely they had a change of heart and eventually decided to support up to C17.
gorjusborg
29 days ago
> C++ is TypeScript for C

In what way?

Typescript is really just an optional type system for javascript. I don't see the analogy with C/C++.

jb1991
about 1 month ago
> C was the good part of C++

This is certainly a very controversial opinion. The two languages should not really be compared or grouped together, not for at least the last 15 years, but probably much longer. Modern C++ features have been developed specifically to address all sorts of things that most C++ developers want fixed from the "C" part of the language's history.

jandrewrogers
about 1 month ago
2 replies
Rust needs stronger compile-time features and capabilities if it wants to be a better C++. This is critical functionality for many types of safety.
IshKebab
about 1 month ago
1 reply
Are you trying to claim that Rust isn't safer than C++ for some kind of safety? I can't really see how you would argue that. It's memory safe, and it has a much stronger type system which reduces the chance of non-memory safety bugs. What type of safety are you thinking of?
Conscat
about 1 month ago
1 reply
Rust lacks type-programming features necessary for pragmatic type safety without performance concessions.
IshKebab
about 1 month ago
Can you give a concrete example? Rust has extremely good type safety.
orochimaaru
about 1 month ago
1 reply
Would you be able to elaborate on some specific ones? I’m just curious. My space is mainly data engineering and Rust is making major moves there along with the entire Python ecosystem.

Rust’s main point is memory safety which is why it’s also a preferred language to reengineer cryptography libraries.

I’m interested in the embedded space (along with AI applications) and believe rust will be a language of choice for the entire toolchain here.

So I’m definitely interested in what gaps you see.

eggy
29 days ago
There's more than just memory safety for high assurance apps. Personally, I think Rust is heading in the right direction, but I am not sure it's complexity will ever be smooth or enjoyable for some. I feel you get most, if not all, that Rust is trying to achieve with Ada/SPARK right now for high-integrity, mission-critical apps along with a proven legacy: jet fighter software, railway controls, avionics, embedded, space, etc...

Take a look at the Adacore site, especially the free books (PDF):

https://www.adacore.com/books

Ada for the Embedded C Developer

Embedded Spark & Ada Use Cases

Ygg2
about 1 month ago
1 reply
> It is a tool that works for me.

Is it? Or is it a tool that won't bug you when you make a mistake?

Programmers tend to, as Djikstra noted[1] confuse ease of programming with allowing unforced errors.

[1] https://en.wikiquote.org/wiki/Edsger_W._Dijkstra#1970s

coldtea
about 1 month ago
1 reply
>Is it? Or is it a tool that won't bug you when you make a mistake?

I don't want tools to bug me EVER. This includes when I make a mistake.

When I want a tool's opinion, I'll ask for it - through a linter, a static analysis tool, etc.

>Programmers tend to, as Djikstra noted[1] confuse ease of programming with allowing unforced errors

And how long had Djikstra worked as a professional programmer?

Ygg2
about 1 month ago
> I don't want tools to bug me EVER. This includes when I make a mistake.

If that is your true wish, may I recommend JavaScript? It's a language famous for not complaining about errors.

Or WASM/ASM if you want something closer to the metal.

I personally, want the undefined behaviour Chernobyl to beep before it melts.

> And how long had Djikstra worked as a professional programmer?

According to his wiki if you disregard his tenure at University of Austin, between years 1952 to 1984. So around 32 years.

He's literally first Dutch programmer. Yes. He was a programmer before it was a recognised job.

surajrmal
about 1 month ago
2 replies
Most people stop feeling like they are fighting with rust a few months into using it. The borrow checker is something that becomes second nature and you still use the same techniques that would please the borrow checker outside of rust because it's generally better program structure in many cases and avoids bugs. If you want to do something that you know us correct that rust normally doesn't allow, just use unsafe. It's not the end of the world. You don't need to resort to a different language to achieve that same result.

This isn't to say it's better or worse than zig. If you're developing software and zig works for your needs, go for it. I'd like to see it used on a 100+ person project to see how it might hold up to the problems that I tend to see in c++, which largely arise for people not knowing about constraints that are not tracked explicitly by the compiler. On projects with less people, this doesn't happen as often.

coldtea
about 1 month ago
1 reply
>Most people stop feeling like they are fighting with rust a few months into using it. The borrow checker is something that becomes second nature

People keep saying that, but I've also seen many who've used Rust for years, in big projects, say the opposite: it gets slightly better as you learn to oblige the borrow checker instictively, but it remains always a kind of annoyance and a friction.

surajrmal
about 1 month ago
Perhaps that's due to only learning how to treat the symptoms rather than the cause. Building intuition requires understanding why the compiler prefers something different. People coming from C++ tend to get this fairly quickly as they understand the problems rust solves for them, but folks coming from higher level languages don't always see it the same way because they may have not had to deal with those problems.
cakealert
about 1 month ago
1 reply
The ergonomics of unsafe rust are abysmal. It would have been 10 times better if they just let you do inline C instead.
surajrmal
about 1 month ago
2 replies
Do you have some examples of what's bad about the ergonomics?
vlovich123
about 1 month ago
1 reply
https://chadaustin.me/2024/10/intrusive-linked-list-in-rust/

https://news.ycombinator.com/item?id=41944121

The TLDR is that there’s all sorts of invariants that the Rust compiler internals assume about Rust code (eg pointers don’t alias). In C such assumptions can’t be made. Unsafe rust requires you to uphold all the same invariants that safe rust does without any guardrails and it has more such assumptions than C. C however is uniformly dangerous - there isn’t a safe subset to write your code in.

One example would be that you could have something like:

    let x = 5;
    do_something(&x as *const _ as *mut _);
Now do_something might dereference and write to the pointer. Now you have non-local safety to reason about because if the compiler realizes you’ve tried to dereference a mutable pointer to an immutable variable it’s free to declare that UB and do bad unsound things (the non-locality is because the unsafe is inside do_something but the problem is with the pointer cast in safe rust). There’s all sorts of subtle things like that.
zozbot234
about 1 month ago
> The TLDR is that there’s all sorts of invariants that the Rust compiler internals assume about Rust code (eg pointers don’t alias).

There are fairly straightforward ways to disclaim these invariants to a greater or lesser extent as appropriate, such as accepting &Cell<T> arguments (or even, e.g. Option<&Cell<T>>) in lieu of &mut T. But the Rust standard library is not yet comprehensively built with this in mind, so this might be an area where Zig's library facilities have a real advantage unless an effort is made to address this gap.

cakealert
about 1 month ago
Almost everything. Can't even do pointer arithmetic without x.add() and x.offset()
npalli
about 1 month ago
Rust is a worse C++ with modern tooling.
pjmlp
about 1 month ago
More like Modula-2/Object Pascal safety packaged in a C like syntax.
rishabhaiover
about 1 month ago
You're a poet, kind sir.
anymouse123456
about 1 month ago
1 reply
They aren't even close.

Trying to write Rust as a noob feels like being in a blackout swamp, waist deep in muck, fighting through thick air and trying, but failing to run from danger. Being utterly constrained in every direction.

Writing Zig as a noob feels like having the clouds part to reveal a bright, sunny Spring clearing and suddenly being able to cover land in a cheerful group with clarity, purpose and focus.

[Edit] Of course, this is purely subjective, obviously a skill issue and YMMV

didibus
about 1 month ago
Kind of surprising, I could see why, but I find Zig more difficult than Rust, so ya, YMMV.
lukaslalinsky
about 1 month ago
3 replies
In a way, it's a return to simpler times. I remember learning programming C and it was about programming computers, not abstract concepts. As languages got higher level abstractions, we lost touch with the computer. That's why programs are so bloated today. Zig respects that we are programming a computer, with concrete behaviours, it doesn't try to abstract things away, doesn't hide complexity, and yet gives you tools for managing it. That's why I enjoy it.
oblio
about 1 month ago
3 replies
Yet computers are abstract concepts :-)

And C is basically high level assembly for the PDP, which has little in common with x86, for example.

pclmulqdq
about 1 month ago
1 reply
These arguments never really hold water for me. The C VM is flexible enough to apply to literally any piece of hardware with relatively few pains. For experienced systems programmers, it is also extremely easy to brain-compile C code. C++ and Rust are both much harder in this respect.
pjmlp
about 1 month ago
And then they discover that -O3 has nothing to do with their brain compiler.
coldtea
about 1 month ago
>Yet computers are abstract concepts :-)

And food is just molecules, but we don't eat chairs because they're also molecules.

ori_b
about 1 month ago
The PDP is remarkably similar to x86. The complaints that people have written at length about typically come down to superscalar features not being exposed in the instruction set, which means that it can't be exposed to the programming model.

On the other hand, every architecture that has tried to expose them so far has failed; nobody wants to manually apply the Tomasulo algorithm to their code, or manage shuffling data elements into and out of their cache hierarchy.

Klonoar
about 1 month ago
2 replies
I truly do not understand why anyone would think Rust is abstracting things away.

Like, to be clear: if you want to develop in Zig because you like it for whatever reason, you should do that. There is no world, nor will there ever be a world, where there's "one language to rule them all". This comment should not be read as "you should write Rust instead".

I just don't find any of your descriptions of Zig to be things that Rust is guilty of. You can (mostly) write the same things in each language, ship a static binary, and your users would never know the difference. IME you are generally as "in touch with the computer" in Rust as you are in Zig.

mordnis
about 1 month ago
2 replies
Well, for example, every function that allocates expects allocator as an argument, it is not abstracted away. Resource deallocation is not abstracted away, you have to explicitly free your resources. Ever function that uses IO expects it as an argument. It doesn't have operator overloading, which is also an abstraction.

It is a very explicit language.

Klonoar
about 1 month ago
1 reply
I left the "mostly" in my comment because custom allocators is one area where Rust as an ecosystem is still in need of some work, and I'm aware of that - hell, in part because of TigerBeetle's blog posts on the subject.

Everything you're describing is a stylistic preference, though - and doesn't contribute to bloat, which is what the parent comment was implying. If your program is bloated, that's on you to clean up - it doesn't matter if it's in C, C++, Rust, or Zig. Every single one of these languages has nothing that stops you from getting it right.

(A weird aside but the downvotes on this chain are just odd to me. I'm not telling y'all to not write Zig, chill already)

lukaslalinsky
about 1 month ago
2 replies
Look, I'm working on an async I/O engine, not unsimilar to Tokio. I started running benchmarks only to realize that I'm significantly faster than Tokio. Go, which is a garbage collected language with preemptive scheduling, is also faster than Tokio on these benchmarks. And Tokio is fast, I'm not claiming it's not. Rust developers program in terms of traits, and borrow checker behaviours. That's fine if you want enterprise kind of safety by tooling. It's just not enjoyable to me and that seems fairly common view. There are people who enjoy languages like Rust, Scala, Haskell. They allow you to create your own world in the type system and that's fine, but it is more disconnected from the actual computer the code is running on.
Klonoar
30 days ago
> I started running benchmarks only to realize that I'm significantly faster than Tokio.

In single threaded, sure. To my knowledge you're not faster in multi-threaded contexts.

> Rust developers program in terms of traits, and borrow checker behaviours.

You don't have to do that, though. People have experimented with other approaches besides what you see in e.g tokio.

tayo42
about 1 month ago
I was hacking on a thing in Rust that beat Tokio pretty significantly in some benchmarks. There seems to be a lot of overhead introduced by it.
zozbot234
about 1 month ago
Local allocators are also in the works for Rust, as well as a general effect system (including potentially an IO effect). Rust also doesn't have fully general operator overloading, it currently uses traits instead. (Though explicit local notations are generally a better way of handling operator semantics, and a future edition of Rust could potentially achieve this via macros.)
testdelacc1
about 1 month ago
1 reply
I think what happens is that people discover a new language, find that they really enjoy it and then struggle to explain why they like it. While they’re struggling they sometimes put down a “competing” language even if no one asked.

They could say it just really vibed with them but they don’t.

Klonoar
about 1 month ago
The older I get, the more I roll my eyes at language wars.

I don't know of any other class of engineering that spends this much time on such weird attachments.

pjmlp
about 1 month ago
1 reply
Languages have been higher level abstractions since Fortran, there is a reason why ISO C targets an abstract machine model.
pklausler
about 1 month ago
And so have the various editions of standard Fortran. In fact, ISO Fortran’s abstract floating-point model is so old now that it’s confusing, since it’s basically IEEE-754 but off by one in its exponents.
coldtea
about 1 month ago
Not having to care for the fucking borrow checker. And far fewer concepts. And faster compiles.
eggy
29 days ago
Enjoyment is part objective and a lot subjective. Mitchell Hashimoto who wrote Ghostty in Zig speaks about it here: https://youtu.be/YQnz7L6x068?si=VtH2FEAuW-SiFPHr&t=1415

I started with 6502 assembly and PET Basic in 1977, so for me, Zig is simpler, and jives more with me than Rust. OTOH, I chose Ada/SPARK for our product for the high-integrity, mission-critical aspect of our automation software. I programmed in Pascal back in 1988, and it has the same syntax, which I always found verbose and boring, but it is clear and structured and the concepts to achieve this level of high assurance are not too difficult. For ultiimate fun, I program in J/APL and now mainly BQN, so I am not a fan of verbosity!

I would have been more attracted to Rust if it had kept ML-like syntax from OCaml and not the Algol-like curly braces of C/C++.

ozgrakkurt
about 1 month ago
I find it easier to develop low level code like file format, async io library and similar stuff in zig
lagniappe
about 1 month ago
Speaking for myself, the community is more humble and kind on the zig side, and their chats are more on-topic.
chc4
about 1 month ago
1 reply
https://ferrocene.dev/en/ is a Rust toolchain which has achieved some certifications for mission critical applications similar to Ada/SPARK.
eggy
29 days ago
Adacore is doing great work. They have a Rust compiler, but the static analysis and formal verification is not quite there for the Rust toolchain and it does not have any where near the legacy for high-integrity, mission-critical apps. Not that it is not heading that way, but for us it is not there by a longshot to select it for our product.
7thaccount
about 1 month ago
Interesting to see this. I bought a book on Ada 2012 awhile back. Pretty cool stuff - especially with Spark.

The license model always made me uncomfortable for when you were using the commercial compilers though. Does this lock you into Spark forever?

meindnoch
about 1 month ago
5 replies
That's about 1 year's worth of salary of a full-time dev.
trollbridge
about 1 month ago
1 reply
Where can I get a $512k a year salary job?
epage
about 1 month ago
2 replies
Keep in mind the rule of thumb that a employee costs twice their salary, so that would be a 206k/year salary. Generous for some, low for others. The salary spread in the US is crazy.
sgt
about 1 month ago
1 reply
Where does it say that an employee costs twice their salary? My experience is more like 25-30% more.
tredre3
about 1 month ago
At these salary levels it might very well be closer to 25%, there's only so much fancy health insurance and 401k matching and other tax/fees you have to cover as an employer.

At a more "normal" salary the 1.5-2x figure is pretty accurate in my experience.

trollbridge
28 days ago
There is no universe where overhead is $206k for a $206k employee. Taxes are about 13% employer paid in the worst case. Health insurance is $1500-$2000 a month worse case.

The idea an employer has $17,000 in taxes they pay and overhead for an employer is absurd.

rk06
about 1 month ago
I will work for 5 Yeats for 500k
jmull
about 1 month ago
According to their financial statement, the Zig Foundation pays contributors $60/hr, and spent $154K on their single employee (Andrew Kelley) in 2024.

So that's around 3-4+ years of development.

(Also, that $154K might include significant employer expenses not typically included in salary, like, e.g. healthcare.)

https://ziglang.org/news/2025-financials/

renewiltord
about 1 month ago
More like 1 month. I'd even say it's a week for a competent one, and maybe a day for a 10x developer. These days it'll pay for maybe one hour of a HRT or Jane Street intern and maybe a few seconds of someone at renowned AI lab Cluely.
SalmoShalazar
about 1 month ago
No, it’s not.
9front
about 1 month ago
1 reply
That's a pledge only! Let me know when Synadia & TiregBeetle actually send money to Zig Foundation.
jorangreef
about 1 month ago
1 reply
Joran from TigerBeetle here!

TigerBeetle actually already donated around ~$100K this past year. We just didn't announce it.

With revenue increasing, we wanted to increase our donation to the foundation to $128K per year going forward, and Synadia were keen to match. The only reason we announced it this time is to encourage other companies to join us.

Finally, as I wrote in TB's post [1], both companies have already donated the first installment, and Derek and I have also both been donating as individual donors in our personal capacity since around 2018.

Hope that clears it up for you! :)

Please join us and consider donating (or increasing your donation): https://ziglang.org/zsf/

[1] https://tigerbeetle.com/blog/2025-10-25-synadia-and-tigerbee...

9front
about 1 month ago
1 reply
Very well done, sir! Now you challenged me to make a donation also. However, as an individual I assure you that it won't match yours.
jorangreef
about 1 month ago
1 reply
Thank you, my friend! Let me know when it's done (only so that we can celebrate it together—good faith for the win!).
9front
about 1 month ago
1 reply
Just donated $100 to ZSF via ever.org!
jorangreef
about 1 month ago
High five!
tm11zz
about 1 month ago
2 replies
> We run a fuzzing fleet of 1,000 dedicated CPU cores 24/7.

that a lot

tazjin
about 1 month ago
1 reply
Assuming they're being economical (and considering the level of thinking TigerBeetle seems to put into stuff - they probably are) this might be only a few beefy physical servers.

For them it seems safety and QA is a large part of the sales pitch, so that seems worth it.

jorangreef
about 1 month ago
Thanks! It's around 21 boxes, 48 cores each [1], and in Finland so there's natural efficient cooling.

Fun fact, Hetzner were surprised at the size of the order, and sent us an email to confirm. ;P

[1] https://x.com/TigerBeetleDB/status/1841089728935821674/quote...

femiagbabiaka
about 1 month ago
The principle of crashing on application violation makes it worth it I’d guess
renewiltord
about 1 month ago
1 reply
Move Zig. Take off every Zig.
pixelpoet
about 1 month ago
For great justice.
jtrueb
about 1 month ago
3 replies
The reason for not choosing Rust still doesn't make any sense to me. If you don’t want to OOM, need correctness, are following the power of ten (where you aren’t allocating anyways), I don’t see the conflict or harm of additional enforced correctness.

Also, Rust does support checked arithmetic and has stable toolchains.

jorangreef
about 1 month ago
1 reply
Out of interest, did you read the two posts [0][1] linked in there by matklad, creator of rust-analyzer as well as IntelliJ Rust, on our team?

Suffice to say, we know the intrusive memory and comptime patterns we use in our code base, and they wouldn't be as natural to express in a language other than Zig.

Rust is a great language, but Zig made more sense for what I wanted to create in TigerBeetle.

[0] https://matklad.github.io/2023/03/26/zig-and-rust.html

[1] https://lobste.rs/s/uhtjdz/rust_vs_zig_reality_somewhat_frie...

jtrueb
about 1 month ago
1 reply
Yeah, I think BDFL wants to use Zig. I understand that it is nice for Zig to feel more like C, and that can be fun. If the toolchain is so far away from being mature, how long will it take the database to be mature?

Since previous comment was edited. I would clarify that I don’t doubt the engineering capabilities, just the timeline. A from scratch database in _established_ toolchains take 5-10 years. The Zig toolchain also is going to be evolving in the same timeframe or longer. The codegen, linking, architecture specific bugs etc. Isn’t it double the effort to bring to bear in the market?

jorangreef
about 1 month ago
1 reply
You're right! In the past, distributed databases written without Deterministic Simulation Testing (DST) would typically take around ~10 years (~5 years for the consensus protocol and ~5 years for the storage engine). And then not without bugs.

However, and we write about this also in the post, but TigerStyle and DST enabled us to ship TigerBeetle to production in 3.5 years, in less time, to a higher standard, and to be the first distributed database with an explicit storage fault model (Kyle Kingsbury added new storage fault injectors to Jepsen) solving Protocol-Aware Recovery.

Our Jepsen audit is here (also linked in the post): https://jepsen.io/analyses/tigerbeetle-0.16.11

For more on TigerStyle as a methodology, hope you enjoy this talk: https://www.youtube.com/watch?v=w3WYdYyjek4

jtrueb
about 1 month ago
I was on a team with a similar timeline with C++ (4 year). All the language and toolchain difficulties came after shipping. Meeting new customer needs meant shifting from greenfield to brownfield engineering. We were chasing down strange platform and provider behaviors. Adding features while maintaining performance and correctness, meant relying on knowledge of tools available in the broader community. Solutions for build issues came through a combination of in-house effort and industry partners with related experience. Having two stable compilers (gcc and clang) was super helpful.
matklad
about 1 month ago
1 reply
There's a change in the tradeoffs in the above scenario:

- you still get extra benefit from Rust, but the magnitude of the benefit is reduced (e.g., no UAF without F).

- you still get extra drawbacks from Rust, but the magnitude of drawbacks is increased, as Rust generally punishes you for not allocating (boxing is a common escape hatch to avoid complex lifetimes).

Just how much tradeoff is shifted is hard to qualify unambiguously, but, from my PoV (Rust since 2015, TB/Zig since late 2022), Zig was and is the right choice in this context.

jtrueb
about 1 month ago
I mainly use Rust in embedded now. I don’t always rely on encoding all of the correctness in the Rust type system. To a degree all the old ways of enforcing correctness are still in play, I am just choosing when to take use idiomatic Rust or escape hatch out via shim to C-style Rust. It reminds me quite a bit of how C and C++ shops require another layer of macros or templates be used for containers, resources, etc.

The build time of Zig seems like the most desirable piece worth deciding over. Developer time is money, but it isn’t weird to have multi-hour build times in a mature project either C, C++, or Rust. The correctness suite is a bigger time sink than the build though. When building a database, you could drive the build time to 0 and still have hours in CI.

jandrewrogers
about 1 month ago
1 reply
Several types of correctness are more difficult to enforce in Rust than in some other languages due to its relatively weak compile-time facilities. Modern database engines don't allocate memory at runtime, aren't multithreaded, they explicitly schedule ownership, etc. They also use the types of data structures and patterns that give the borrow checker fits. Rust's correctness capabilities are relatively less valuable in this context.

Extensive compile-time capabilities that allow you to verify many other types of correctness add enormous value when building database engines. This is a weak part of Rust's story.

dafelst
about 1 month ago
Can you elaborate a little more on what structures and patterns those are? I have built some database like things in rust (lots of zero copy and slice shenanigans, and heavily multi-threaded) and while it was tricky in some spots I haven't run into anything I have had to substantially compromise on.

Your use cases are likely more complex, so I'm curious what I should be looking out for.

42 more comments available on Hacker News

View full discussion on Hacker News
ID: 45703926Type: storyLast synced: 11/20/2025, 8:37:21 PM

Want the full context?

Jump to the original sources

Read the primary article or dive into the live Hacker News thread when you're ready.

Read ArticleView on HN

Not

Hacker News!

AI-observed conversations & context

Daily AI-observed summaries, trends, and audience signals pulled from Hacker News so you can see the conversation before it hits your feed.

LiveBeta

Explore

  • Home
  • Jobs radar
  • Tech pulse
  • Startups
  • Trends

Resources

  • Visit Hacker News
  • HN API
  • Modal cronjobs
  • Meta Llama

Briefings

Inbox recaps on the loudest debates & under-the-radar launches.

Connect

© 2025 Not Hacker News! — independent Hacker News companion.

Not affiliated with Hacker News or Y Combinator. We simply enrich the public API with analytics.