HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
ziglang
zig
Zig2016–2026
ziglang / zig

zig

Moved to Codeberg

373Distinct people
681Mentions
3Explicit recommenders
43.3KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Moved to Codeberg

GitHub

Where it is used

  • Bun — Bun used the Zig programming language to implement its initial version of the runtime and tooling. This establishes Bun as a shipped product that was written in Zig. Source

What people are saying

My favorite of his https://x.com/joelreymont/status/1990981118783352952 > Claude discovered a bug in the Zig compiler and is in the process of fixing it! ...a few minutes…

rdtsc used a recommendation phrase. 3 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 7:02:26 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year681 dated mentions

Observed mentions: 2016-01-08 12:54:33 UTC to 2026-09-19 17:18:26 UTC.

02550751001252016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 9 mentions; 1 submissions, 8 comments20162017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 21 mentions; 2 submissions, 19 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 34 mentions; 2 submissions, 32 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 60 mentions; 3 submissions, 57 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 111 mentions; 4 submissions, 107 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 93 mentions; 8 submissions, 85 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 113 mentions; 12 submissions, 101 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 85 mentions; 5 submissions, 80 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 124 mentions; 9 submissions, 115 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 26 mentions; 1 submissions, 25 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC918
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC505
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC21219
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC34232
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC60357
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC1114107
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC93885
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC11312101
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC85580
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC1249115
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC26125

What Hacker News says

85 sources
Andrew’s point is that marking the memory as volatile should prevent this optimization. (i.e. the compiler isn’t allowed to split a 16-bit volatile write into two 8-but writes.) This is idiomatic because volatile is intended for MMIO. There’s a proposal for a way to disable LLVM generating builtin calls like memcpy. But I’d argue volatile would still be more appropriate in this case. https://github.com/ziglang/zig/issues/22110 Edit: this comment from later in the thread is also relevant: https://news.ycombinator.com/item?id=42556624
In I wrote a Game Boy Advance game in Zig
A few notes: 1) Lack of a garbage collector does not make your program faster, it makes the performance more easily predictable in terms of latency. It also makes it more friendly for memory bandwidth, CPU cache and to overall memory usage, which in turn results in better performance in real-case scenarios vs synthetic/toy benchmarks. This is particularly noticeable in constrained environments (like embedded systems). 2) Zig was never about memory safety, and it is not a memory-safe language. It might have better plumbing than C, it might add better way to implement and abstract concepts.. but so does C++, for instance. The more striking differences between C++ and Zig, IMHO, are syntax and the ability to use the same language instead of a separate one to do meta-programming (templates vs comptime). 3) Aliasing enforcement in Rust is ther
Read the rest
e for a reason. Two examples I quickly found on Zig's issue tracker: * https://github.com/ziglang/zig/issues/3696 * https://github.com/ziglang/zig/issues/5973
In When Zig Is Safer and Faster Than Rust
Rust's approach is more like a "keep off the grass sign" than a barbed wire fence. If Rust really wasn't meant to be used for these things, it wouldn't have the unsafe keyword at all. But instead of forbidding those things entirely, it just makes them uncomfortable. This nudges the programmer to question if they really need to be on the grass to accomplish their goal, and helps subconsciously steer them onto the safer path. This is the "strategic use of friction" described here, ironically enough, by the creator of Zig: https://github.com/ziglang/zig/issues/3320#issuecomment-8844...
In When Zig Is Safer and Faster Than Rust
It's an alternative to OOP. You can get there via a series of transformations: 1. Start with OOP (heap-allocated objects with shared base structs) 2. Transform to using tagged unions instead 3. Transform to the approach outlined in the OP (I call it the "encoding" approach in this talk: https://vimeo.com/649009599) It's handy because you get to use an index to refer to an object, and you get serialization benefits. The zig compiler uses this pattern in quite a few places: * https://github.com/ziglang/zig/blob/77c63ac36034db577a9287c5... * https://github.com/ziglang/zig/blob/77c63ac36034db577a9287c5... * https://github.com/ziglang/zig/blob/77c63ac36034db577a9287c5... * https://github.com/ziglang/zig/blob/77c63ac36034db577a9287c5...
In Enum of Arrays
I do not know Zig either; I had assumed that it has default parameters, but it seems that it does not[0]. So, yes, it makes sense now why it cannot be elided. They should add default parameters to avoid this sort of thing. Maybe they ought to consider named/labelled parameters, too, if they're so concerned about clarity. 0: https://github.com/ziglang/zig/issues/484
In Zig's (.{}){} Syntax
> will that function also get to return a u8? No, the main function (the entry point of the entire program) is special cased. Have a look at the source code. There you can see it's calling the user defined main function and handling its return value / error. https://github.com/ziglang/zig/blob/2d888a8e639856e8cb6e4c6f... > Also, what happened to argv/argc? You can access argv with std.os.argv which is a slice of null terminated strings. It's better to go with std.process.argsAlloc though (requires an allocation but works on all supported platforms).
In Zig is everything I want C to be

Showing the 15 most recent of 85 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.