!lymvtcwDJ7ZA9Npq:lix.systems

Lix Development

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

Load older messages


SenderMessageTime
9 Nov 2025
@aloisw:julia0815.dealoisw Ah fuck I forgot to change f back to a function. 18:10:03
@aloisw:julia0815.dealoiswConfirmed this is the breaking change.18:12:25
@raitobezarius:matrix.orgraitobezarius https://gerrit.lix.systems/c/lix/+/4556 18:16:23
@raitobezarius:matrix.orgraitobezariusnot totally18:16:49
@raitobezarius:matrix.orgraitobezariuswe looked hard and we were not able to disprove our theory that we were enabling more correctness18:17:03
@raitobezarius:matrix.orgraitobezariuslike we ran evaluation regression testing and we had no failure but new successes18:17:22
@raitobezarius:matrix.orgraitobezariusafter looking hard at the new success, we were unable to say "ah it's wrong", but more like: ah it's possibly a fun eq ptr bug18:17:44
@raitobezarius:matrix.orgraitobezariusput in another way, breaking bug to bug compatibility: yes, by having a behavior that agrees on successes: yes, new failures: not an intended objective18:19:11
@raitobezarius:matrix.orgraitobezarius* put in another way, breaking bug to bug compatibility: yes, by having a behavior that agrees on existing successes: yes, new failures: not an intended objective18:19:21
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)
In reply to @raitobezarius:matrix.org
put in another way, breaking bug to bug compatibility: yes, by having a behavior that agrees on existing successes: yes, new failures: not an intended objective
Yeah, that’s why I meant by compat.
18:19:38
@raitobezarius:matrix.orgraitobezariusin general, i'd like to kick pointer inequality out of the lang18:20:18
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)Seems like it would be beneficial to run a regression on older nixpkgs as well, since apparently it suffers much more from pointer equality footguns.18:20:18
@raitobezarius:matrix.orgraitobezariusyep18:20:25
@raitobezarius:matrix.orgraitobezariuswe should definitely do that18:20:30
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)
In reply to @raitobezarius:matrix.org
in general, i'd like to kick pointer inequality out of the lang
Indeed. I doubt anybody wants to keep it around, but it’s not like frontend semantics where one can just copy the parser code. If one wants to keep the ability to eval legacy nix code then it doesn’t seem possible to get the object model benefits (like single-pointer values) without also keeping bug-for-bug compat
18:24:26
@shine:proqqul.netTaeer Bar-Yam

I've been talking with Sergei Zimmerman (xokdvium) about this issue over the last couple weeks, and one idea that I had was to go further in the opposite direction. Rather than running pointer equality on functions (or perhaps in addition), have functions compare equal if they comprise the same Expr and Env.

Also be aware I haven't looked at Lix code only CppNix, so maybe this doesn't make sense given how they've diverged.

18:25:21
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)
In reply to @raitobezarius:matrix.org
in general, i'd like to kick pointer inequality out of the lang
* Indeed. I doubt anybody wants to keep it around, but it’s not like frontend semantics where one can just copy the parser code. If one wants to keep the ability to eval legacy nix code then it doesn’t seem possible to get the object model benefits (like single-pointer values) without also ~~keeping~~ yeeting bug-for-bug compat
18:26:18
@shine:proqqul.netTaeer Bar-YamMy thinking is that people are much more likely to depend on the behaviour "these equal functions compare equal" than "these equal functions compare non-equal". So if you're going to break backward-compatibility in some direction, it should probably be in the direction of allowing more functions to compare equal when they are, in fact, equal as functions.18:27:14
@raitobezarius:matrix.orgraitobezariusIndeed, it was an opportunistic naive attempt we could not disprove (until you provided the example and thank you!) its soundness18:27:49
@raitobezarius:matrix.orgraitobezariusThe bar for changing that is going to be much higher now18:27:56
@xokdvium:matrix.orgSergei Zimmerman (xokdvium)Tvix folks have great insights into the pointer equality semantics. I did get a lot of grumbling about pointer equality semantics from glittershark and edef18:30:27
* @raitobezarius:matrix.orgraitobezarius nods18:31:02
@raitobezarius:matrix.orgraitobezarius(i also listened more than once to edef about ptr equalities)18:31:14
@aloisw:julia0815.dealoisw Well the pointer equality only matters for types that use an auxiliary block, so I assume copying that in the places where the value was previously copied would work? 18:40:11
10 Nov 2025
@adis:blad.is@adis:blad.is left the room.04:58:06
@piegames:flausch.socialpiegamesThe would probably not mesh well with future performance optimisations08:07:14
@piegames:flausch.socialpiegamesmixing code with data was a mistake08:17:16
@k900:0upti.meK900 Honestly IMO the only way to do function equality at this point is to hard ban it 08:17:52
@k900:0upti.meK900 Because any attempt to fix the semantics will lead to code that evaluates subtly differently wrong on new and old semantics 08:18:25
@piegames:flausch.socialpiegamesYes but once you ban it you want to move off all functions off your data structures to retain the ability to compare your data08:18:42

Show newer messages


Back to Room ListRoom Version: 10