!VRULIdgoKmKPzJZzjj:nixos.org

Nix Hackers

864 Members
For people hacking on the Nix package manager itself186 Servers

Load older messages


SenderMessageTime
12 Sep 2025
@magic_rb:matrix.redalder.orgmagic_rbAs many before me, i implemented my own very basic nix evaluator, it doesnt have any builtins right now, only does basic arithmetic. But the point of it is that it doesnt use AST walking, but rather an approach similar to the STG. Its not fully tagless unfortunately, but i think im just missing something. Anyway, it only makes sense to develop it further if its faster than nix/lix so im wondering if its possible to formulate micro benchmarks relying on a subset of the nix language which could tell me whether my impl is faster or not. Anyone has thought about this before?15:07:03
@magic_rb:matrix.redalder.orgmagic_rb I dont want to write a full nix impl only to figure out "its horribly slow and nothing can be done about that". Ideally we'd be able to tell way before i implement all the nixisms 15:08:27
@magic_rb:matrix.redalder.orgmagic_rbhttps://git.redalder.org/magic_rb/nix-stg oh and the code15:11:23
@magic_rb:matrix.redalder.orgmagic_rb The evaluator is currently recursive but thats my mistake, i just need to do while !iptr.is_whnf() iptr.force() 15:12:22
@toonn:matrix.orgtoonn Some of the AoC solutions might be a good start for that. 15:18:29
@magic_rb:matrix.redalder.orgmagic_rb Oh yeah good idea, im still very far off from being able to even import something but AoC is a very sound idea 15:25:57
@joerg:thalheim.ioMic92
In reply to @jaen:matrix.org
If there are other tasks that can be done in parallel for installer upstreaming I'd also be interested — I was cooking a Nix article series for $CURRENT_JOB blog (the company does a lot of Bazel, so it's structured by way of compare & contrast) and don't feel comfortable publishing them until after the installer situation is resolved, I don't really want to redirect people away from the upstream.
How is your rust knowledge?
15:53:37
@joerg:thalheim.ioMic92The repo could probably rebased again. 15:53:48
@jaen:matrix.orgjaenHm, I've been following Rust since it was written in OCaml, so reasonably good theoretical foundations, and I've started writing some practical stuff last year finally (working on a ninja parser for nix-ninja that can handle AOSP scale). So I think I should manage as long as it's not terribly arcane — which I would assume an installer hopefully is not.17:36:07
@jaen:matrix.orgjaenSo basically what you'd like me to do is to take https://github.com/NixOS/experimental-nix-installer and rebase it on top of recent upstream (any particular commit, last before they dropped support for upstream nix maybe)?17:36:08
13 Sep 2025
@ysndr:matrix.orgysndr joined the room.01:28:20
@fzakaria:one.ems.hostfzakariahi everyone20:45:30
@oak:universumi.fioak 🏳️‍🌈♥️ changed their profile picture.09:46:11
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)Honestly there's also only things that you can find out at scale. For one, memory usage and value representation is very important. It's not the interpreter or parser that's the bottleneck20:47:36
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)Experimenting with efficient sharing of immutable values would be great. I have some thoughts on this that might manifest into something tangible soon20:48:42
@magic_rb:matrix.redalder.orgmagic_rbim currently still trying to wrap my head around the STG20:49:01
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)

Also the plus/minus implementation is a bit more complex than this: https://git.redalder.org/magic_rb/nix-stg/commit/04839e29e51a3b237359d0e95239e2b6960334ff.

Like consider the following: let __sub = __mul; in 1 - 2. For better or worse this evaluates to 2

20:53:18
@puck:puck.moepucki mean; the nix language is a bunch of scope resolving and then a bunch of primop calls, there's not much inbetween20:54:14
@puck:puck.moepuck the nix language without e.g. derivation is ... kinda hard to use 20:55:05
@puck:puck.moepuck i once experimented by taking the nix source code and taking out everything that isn't the expression interpreter; very little was left. just a handful of primops; i didn't even have import because it depended on the FS 20:55:40
@puck:puck.moepuck comparing with e.g. https://nix-re.pl/ which translates everything to a primop call (a + b -> __add a b; a.b.c or d -> __selectOr a [ "b" "c" ] d) 20:56:27
@puck:puck.moepuckall this to say i don't think there's much of a subset of Nix that would let you reasonably test performance; the only real-world performance test i can think of is "how well can you evaluate nixpkgs"; which requires .. well, everything21:00:59
@magic_rb:matrix.redalder.orgmagic_rbright, okay, point taken, ig ill have to implement enough to eval nixpkgs to actually get any data21:10:14
@magic_rb:matrix.redalder.orgmagic_rb...21:10:15
@magic_rb:matrix.redalder.orgmagic_rbwell, im not even at a functional VM so uh, thats ways off, currently trying to wrap my head around the STG still21:10:36
@magic_rb:matrix.redalder.orgmagic_rb okay, i have no clue what im doing, anyone know the STG and can help me find the bug? or anyone up for a fun pairing? I'm pretty sure im folling the paper to the letter but its being weird, i suspect a miscompilation from Nix -> STG, cause the STG VM is behaving exactly as the paper says 21:32:15
@jaen:matrix.orgjaen Slowly working on installer rebase and need an opinion — I have some tests that are failing because it assumes existence of a default profile that has nix in it, cf:
https://github.com/DeterminateSystems/nix-installer/blob/8a7bb095d93ada552d20d2f22ffd9f1668f8e394/src/profile/nixenv/tests.rs#L135-L136
https://github.com/DeterminateSystems/nix-installer/blob/8a7bb095d93ada552d20d2f22ffd9f1668f8e394/src/profile/nixenv/mod.rs#L98
It is not the case on my system, it links into per-user/root/profile which does not exist (the folder only has channels there. And I'm wondering if it's my NixOS setup that's wrong or is detsys assuming something that's not really true?
21:59:15
14 Sep 2025
@emma:rory.gayEmma [it/its] joined the room.08:32:48
@azharmomin:kde.org@azharmomin:kde.org joined the room.16:22:28
@azharmomin:kde.org@azharmomin:kde.org left the room.16:37:42

Show newer messages


Back to Room ListRoom Version: 6