!lymvtcwDJ7ZA9Npq:lix.systems

Lix Development

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

Load older messages


SenderMessageTime
31 Jul 2025
@weethet:catgirl.cloudWeetHetIt's not impure it's uhh non-deterministic 14:04:29
@weethet:catgirl.cloudWeetHetAnd it's only because computing the hash before copying is slow?14:05:00
@weethet:catgirl.cloudWeetHetAnd it's only non-deterministic if you're comparing the paths for equality14:06:08
@weethet:catgirl.cloudWeetHet* And it's only non-deterministic if you're comparing paths for equality14:06:21
@weethet:catgirl.cloudWeetHetI'm not sure that's even a real usecase14:06:32
@weethet:catgirl.cloudWeetHetBecause on a path <-> string boundary the paths are devirtualised14:07:33
@weethet:catgirl.cloudWeetHetSo the nondeterminism leak is minimal14:07:51
@weethet:catgirl.cloudWeetHetI don't love it but realistically it's not as big of a trade off as it can seem in the first place14:09:10
@emilazy:matrix.orgemilytbf, lazy trees prevents torn writes14:10:47
@emilazy:matrix.orgemilythough of course nondeterminism in pure eval mode sans IFD is not really acceptable14:10:57
@emilazy:matrix.orgemily(and does not really seem necessary)14:11:07
@weethet:catgirl.cloudWeetHetThe real issue is that calculating the path and copying the source to the store are computationally very similar tasks14:11:53
@emilazy:matrix.orgemilythey're not really14:12:16
@emilazy:matrix.orgemilyjust hashing is meaningfully faster14:12:28
@weethet:catgirl.cloudWeetHetI don't know if nar-hash can be constructed iteratively so that you only need to rehash changed files14:13:14
@emilazy:matrix.orgemilysee https://github.com/NixOS/nix/pull/13225#pullrequestreview-2858935020 for discussion, particularly the later review subthread14:13:17
@emilazy:matrix.orgemilyI think roberth has it right that you want an opaque path type14:13:26
@emilazy:matrix.orgemilythough that is of course a big lift14:13:30
@emilazy:matrix.orgemilyNAR hashing is also just bad… but that's another matter14:13:50
@emilazy:matrix.orgemilyanyway14:14:00
@emilazy:matrix.orgemily does anyone have feelings about /nix/var/nix/b instead of /nix/var/nix/builds? 14:14:07
@emilazy:matrix.orgemilyI have implemented most of the thing to fix the Unix socket length issue14:14:24
@emilazy:matrix.orgemily with /b/ we end up below the previous average length of a build directory 14:14:33
@emilazy:matrix.orgemily with /builds/ we are still slightly above 14:14:42
@emilazy:matrix.orgemily though if you count path normalization i.e. /private/tmp/… which I think a lot of things are doing behind the scenes we are ahead even with /builds/ 14:14:53
@weethet:catgirl.cloudWeetHet

Path equality and ordering (as observable to users) must remain identical

I've changed my opinion on this, though I'm not sure if there are really no usecases for comparing paths

14:15:15
@weethet:catgirl.cloudWeetHet But it would be interesting to go over github and just see if anyone ever compares paths 14:15:38
@emilazy:matrix.orgemilyforbidding path comparison is precisely what a more opaque path type would achieve without breaking the language guarantees14:16:27
@emilazy:matrix.orgemilyit has other nice advantages too (you can do objcap stuff)14:16:39
@raitobezarius:matrix.orgraitobezarius
In reply to @emilazy:matrix.org
tbf, lazy trees prevents torn writes
I might not be using Flakes enough but I never saw a torn writes and I probably run the most experimental filesystem stack on my main system with the one of the largest stores around (and I hit most of the store bugs :D)
14:16:41

Show newer messages


Back to Room ListRoom Version: 10