HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
256lights
zb
Go2024–2025
256lights / zb

zb

An experiment in hermetic, reproducible build systems

4Distinct people
10Mentions
0Explicit recommenders
409GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

An experiment in hermetic, reproducible build systems

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

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

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM 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 week10 dated mentions

Observed mentions: 2024-09-19 21:10:25 UTC to 2025-04-10 13:17:06 UTC. Weeks start Monday, UTC.

024682024-09-16 00:00:00 UTC to 2024-09-23 00:00:00 UTC (exclusive): 8 mentions; 0 submissions, 8 commentsSep 162024-09-23 00:00:00 UTC to 2024-09-30 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-09-30 00:00:00 UTC to 2024-10-07 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-10-07 00:00:00 UTC to 2024-10-14 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-10-14 00:00:00 UTC to 2024-10-21 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-10-21 00:00:00 UTC to 2024-10-28 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-10-28 00:00:00 UTC to 2024-11-04 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-11-04 00:00:00 UTC to 2024-11-11 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-11-11 00:00:00 UTC to 2024-11-18 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-11-18 00:00:00 UTC to 2024-11-25 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-11-25 00:00:00 UTC to 2024-12-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-12-02 00:00:00 UTC to 2024-12-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-12-09 00:00:00 UTC to 2024-12-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-12-16 00:00:00 UTC to 2024-12-23 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-12-23 00:00:00 UTC to 2024-12-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsDec 232024-12-30 00:00:00 UTC to 2025-01-06 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-06 00:00:00 UTC to 2025-01-13 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-13 00:00:00 UTC to 2025-01-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-20 00:00:00 UTC to 2025-01-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-27 00:00:00 UTC to 2025-02-03 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-02-03 00:00:00 UTC to 2025-02-10 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-02-10 00:00:00 UTC to 2025-02-17 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-02-17 00:00:00 UTC to 2025-02-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-02-24 00:00:00 UTC to 2025-03-03 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-03-03 00:00:00 UTC to 2025-03-10 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-03-10 00:00:00 UTC to 2025-03-17 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-03-17 00:00:00 UTC to 2025-03-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-03-24 00:00:00 UTC to 2025-03-31 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-03-31 00:00:00 UTC to 2025-04-07 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-04-07 00:00:00 UTC to 2025-04-14 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsApr 7

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
Sep 162024-09-16 00:00:00 UTC2024-09-23 00:00:00 UTC808
Sep 232024-09-23 00:00:00 UTC2024-09-30 00:00:00 UTC101
Sep 302024-09-30 00:00:00 UTC2024-10-07 00:00:00 UTC000
Oct 72024-10-07 00:00:00 UTC2024-10-14 00:00:00 UTC000
Oct 142024-10-14 00:00:00 UTC2024-10-21 00:00:00 UTC000
Oct 212024-10-21 00:00:00 UTC2024-10-28 00:00:00 UTC000
Oct 282024-10-28 00:00:00 UTC2024-11-04 00:00:00 UTC000
Nov 42024-11-04 00:00:00 UTC2024-11-11 00:00:00 UTC000
Nov 112024-11-11 00:00:00 UTC2024-11-18 00:00:00 UTC000
Nov 182024-11-18 00:00:00 UTC2024-11-25 00:00:00 UTC000
Nov 252024-11-25 00:00:00 UTC2024-12-02 00:00:00 UTC000
Dec 22024-12-02 00:00:00 UTC2024-12-09 00:00:00 UTC000
Dec 92024-12-09 00:00:00 UTC2024-12-16 00:00:00 UTC000
Dec 162024-12-16 00:00:00 UTC2024-12-23 00:00:00 UTC000
Dec 232024-12-23 00:00:00 UTC2024-12-30 00:00:00 UTC000
Dec 302024-12-30 00:00:00 UTC2025-01-06 00:00:00 UTC000
Jan 62025-01-06 00:00:00 UTC2025-01-13 00:00:00 UTC000
Jan 132025-01-13 00:00:00 UTC2025-01-20 00:00:00 UTC000
Jan 202025-01-20 00:00:00 UTC2025-01-27 00:00:00 UTC000
Jan 272025-01-27 00:00:00 UTC2025-02-03 00:00:00 UTC000
Feb 32025-02-03 00:00:00 UTC2025-02-10 00:00:00 UTC000
Feb 102025-02-10 00:00:00 UTC2025-02-17 00:00:00 UTC000
Feb 172025-02-17 00:00:00 UTC2025-02-24 00:00:00 UTC000
Feb 242025-02-24 00:00:00 UTC2025-03-03 00:00:00 UTC000
Mar 32025-03-03 00:00:00 UTC2025-03-10 00:00:00 UTC000
Mar 102025-03-10 00:00:00 UTC2025-03-17 00:00:00 UTC000
Mar 172025-03-17 00:00:00 UTC2025-03-24 00:00:00 UTC000
Mar 242025-03-24 00:00:00 UTC2025-03-31 00:00:00 UTC000
Mar 312025-03-31 00:00:00 UTC2025-04-07 00:00:00 UTC000
Apr 72025-04-07 00:00:00 UTC2025-04-14 00:00:00 UTC101

What Hacker News says

10 sources
https://github.com/256lights/zb/blob/102795d6cb383a919dd378d... TIL I can also use semicolons on lua tables, not just commas: return derivation { name = "hello.txt"; ["in"] = path "hello.txt"; builder = "/bin/sh"; system = "x86_64-linux"; args = {"-c", "while read line; do echo \"$line\"; done < $in > $out"}; } I like using lua as a DSL, now I like it even more! I've using lua as a html templating language that looks like this: DIV { id="id"; class="class; H1 "heading"; P [[ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor ]] / EM incididunt / [[ ut labore et dolore magna aliqua. ]]; PRE ^ CODE [[ this is <code> tag inside <pre> ]]; }
In Zb: An Early-Stage Build System
Nix sandboxes derivation runs on Linux even without flakes, and I'm planning on implementing that, yes: https://github.com/256lights/zb/issues/29 and https://github.com/256lights/zb/issues/31 MinGW is used to build Lua using cgo. I'd like to remove that part, see https://github.com/256lights/zb/issues/28 I haven't started the userspace for Windows yet (https://github.com/256lights/zb/issues/6), but I suspect that it will be more "download the Visual C++ compiler binary from this URL" than the Linux source bootstrap. Yeah, I'm happy with live-bootstrap, too! I tried emulating Guix's bootstrap, but it depended a little too much on Scheme for me to use as-is. live-bootstrap has mostly worked out-of-the-box, which was a great validation test for this approach.
In Zb: An Early-Stage Build System
Tracking issue is https://github.com/256lights/zb/issues/2 The hurdles to interop I see are: - Nixpkgs is not content-addressed (yet). I made a conscious decision to only support content-addressed derivations in zb to simplify the build model and provide easier-to-understand guarantees to users. As a result, the store paths are different (/zb/store instead of /nix/store). Which leads to... - Nix store objects have no notion of cross-store references. I am not sure how many assumptions are made on this in the codebases, but it seems gnarly in general. (e.g. how would GC work, how do you download the closure of a cross-store object, etc.) - In order to obtain Nixpkgs derivations, you need to run a Nix evaluator, which means you still need Nix installed. I'm not sure of a way around this, and seems like it would be a hassle for users. I have
Read the rest
experienced the same friction in build infra for Nix. My hope is that by reusing the binary cache layer and introducing a JSON-RPC-based public API (already checked in, but needs to be documented and cleaned up) for running builds that the infrastructure ecosystem will be easier.
In Zb: An Early-Stage Build System
Yup, that was how I built the prototype: https://www.zombiezen.com/blog/2024/06/zb-build-system-proto... The last commit using that approach was https://github.com/256lights/zb/tree/558c6f52b7ef915428c9af9... if you want to try it out. And actually, I haven't touched the Lua frontend much since I swapped out the backend: the .drv files it writes are the same. The motivation behind replacing the backend was content-addressibility and Windows support, which have been slow to be adopted in Nix core.
In Zb: An Early-Stage Build System
(Hi! I recognize your name from Bazel mailing lists but I forget whether we've talked before.) I'm mostly contrasting from Nix, which has difficulty with poisoning cache when faced with non-deterministic build steps when using input-addressing (the default mode). If zb encounters a build target with multiple cached outputs for the same inputs, it rebuilds and then relies on content-addressing to obtain build outputs for subsequent steps if possible. (I have an open issue for marking a target as intentionally non-deterministic and always triggering this re-run behavior: https://github.com/256lights/zb/issues/33) I'll admit I haven't done my research into how Bazel handles non-determinism, especially nowadays, so I can't remark there. I know from my Google days that even writing genrules you had to be careful about introducing non-determini
Read the rest
sm, but I forget how that failure mode plays out. If you have a good link (or don't mind giving a quick summary), I'd love to read up. I have considered Starlark, and still might end up using it. The critical feature I wanted to bolt in from Nix was having strings carrying dependency information (see https://github.com/NixOS/nix/blob/2f678331d59451dd6f1d9512cb... for a description of the feature). In my prototyping, this was pretty simple to bolt on to Lua, but I'm not sure how disruptive that would be to Starlark. Nix configurations tend to be a bit more complex than Bazel ones, so having a more full-featured language felt more appropriate. Still exploring the design space!
In Zb: An Early-Stage Build System

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.