!lymvtcwDJ7ZA9Npq:lix.systems

Lix Development

447 Members
(Technical) development of Lix, the package manager, a Nix implementation. Please be mindful of ongoing technical conversations in this channel.146 Servers

You have reached the beginning of time (for this room).


SenderMessageTime
21 Nov 2025
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)I did research a bit the distribution of list sizes when evaling nixpkgs. Small lists are quite often used, but lists just pale in comparison with attrsets overall21:17:12
@mzero:matrix.orgmzeroname value pairs are so common because of listToAttrs, etc, I wonder if a pair type would actually make a significant perf difference21:19:00
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)A more generic approach could be to have "attrset shapes". Very similar to how v8 optimizes classes with the same layout21:20:09
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)Then names wouldn't need to be stored in the attribute set and function calls could reuse the same memory and not copy anything to a new Env. (I and Robert Hensing discussed this a bit at some point)21:21:57
@qyriad:katesiria.orgQyriad
In reply to @xokdvium:matrix.org
A more generic approach could be to have "attrset shapes". Very similar to how v8 optimizes classes with the same layout
benefits of a JIT especially
21:22:04
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)Not exactly tho. jit/memory layout are tangential somewhat21:22:32
@qyriad:katesiria.orgQyriad yeah but you can optimize hot shapes  21:22:56
@xokdvium:matrix.orgSergei Zimmerman (xokdvium) Yeah. I think python has slots for this kind of thing 21:23:13
@xokdvium:matrix.orgSergei Zimmerman (xokdvium) * Yeah. I think python has __slots__ for this kind of thing 21:23:28
@mzero:matrix.orgmzerodo you have something I could read about that? I'm curious how it would work.21:25:02
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)Probably staring at prior art in V8? I haven't done that myself, but I'd be curious how they do tracing to find hot shapes21:26:04
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)All of those optimizations are pretty inaccessible without tracing infra :(21:27:26
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)But tracing attrset shapes doesn't exactly depend on function call tracing. Computing a shape fingerprint and having a small hashmap of that could give a rough picture of the frequency.21:29:23
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)So maybe only do this for attrsets smaller than N, compute a hash of symbol table ids, store it a fixed-sized map and count frequency that way. This shouldn't have much of an overhead21:30:50
@Ericson2314:matrix.orgJohn Ericsonyeah that is in a bitrotted PR21:39:29
22 Nov 2025
@helle:tacobelllabs.nethelle (just a stray cat girl) glares at lix/nix/prefetch.cc +118 11:47:29
@helle:tacobelllabs.nethelle (just a stray cat girl)erm, why are we making a presumption there, that uh, is not actually also made by nixpkg's fetchzip (which does have stripRoot as an active choice), this with certain use cases, like what npins does, makes it impossible to compute the right hash with it11:48:57
@helle:tacobelllabs.nethelle (just a stray cat girl)(anyway, I don't think it is worth a fix, because of well, yeah)12:06:43
@adam:matrix.system72.devadam joined the room.17:06:37

Show newer messages


Back to Room ListRoom Version: 10