Nixpkgs Architecture Team | 227 Members | |
| https://github.com/nixpkgs-architecture, weekly public meetings on Wednesday 15:00-16:00 UTC at https://meet.jit.si/nixpkgs-architecture | 53 Servers |
| Sender | Message | Time |
|---|---|---|
| 7 Aug 2023 | ||
| Yeah let's try to find a new time after this Tuesdays meeting :) | 09:10:45 | |
In reply to @hsngrmpf:matrix.orgOut of curiosity: What impact does the module system have on eval performance? | 09:40:05 | |
| 09:41:25 | ||
| This question came up a couple of times and I don't think there is a good answer for it yet. I guess it's time to prepare some benchmark. | 09:59:10 | |
| adisbladis:
| 11:56:18 | |
| Note that this benchmark tests with almost empty derivations and therefore there is almost no overhead in evaluating any input to the derivations which is unreal. In real world scenarios, there should be a constant overhead for the input that must be applied to all benchmarks and therefore should improve the ratio in favor of the module system. Though I don't know if this will be significant or not. We'd have to port something like firefox over to modules in order to test it | 12:06:49 | |
| Is there any effort to replace substitute in place scripts with something like scripts + a json file My particular use case is wanting to easily use python developer and unittesting tool's on the systemd-boot installer script which isn't exactly nice when its hard coded on evaluated instead of loading metadata | 18:17:05 | |
| I will be in a plane during the meeting tomorrow. So i'll submit this in absentia: https://github.com/nixpkgs-architecture/issues/issues/21 | 20:19:02 | |
| 8 Aug 2023 | ||
| I think such scripts can and should be upgraded to small but complete in-tree projects | 13:35:18 | |
| Do check with the systemd team though | 13:41:35 | |
| @room: The next meeting will take place in 25 minutes - meeting link - live stream - meeting notes | 14:05:04 | |
In reply to @hsngrmpf:matrix.orgDo i read the benchmarks right, when stating that modules for packaging are factor 5-7 slower than the "native" functions. Also tested with empty functions. Which means the real world use cases could be potentially much higher? | 14:21:26 | |
In reply to @hsngrmpf:matrix.org* Do i read the benchmarks right, when stating that modules for packaging are factor 5-7 slower than the "native" functions. Also tested with empty functions. Which means the impact on real world use cases could be potentially much higher? | 14:21:50 | |
| * Do i read the benchmarks right, when stating that modules for packaging are factor 5-7 slower than the "native" functions. Also tested with (almost) empty derivations. Which means the impact on real world use cases could be potentially much higher? | 14:22:51 | |
| Im not going to make it today | 14:25:39 | |
| Robert Hensing (roberth): John Ericson: Ping | 14:33:01 | |
| sorry! On the west coast but was up in term, not sure how I missed the ping | 16:36:06 | |
I am not sure if I am reading https://discourse.nixos.org/t/2023-08-08-nixpkgs-architecture-team-meeting-42/31454 right on drvPath, but did we agree that regardless of who is deprecating what, it would be nice to have this builtin? | 22:18:22 | |
| IMO saying Nixpkgs is blocked on Nix, and Nix is blocked on Nixpkgs is not the best state of affairs | 22:18:47 | |
| the general approach Robert Hensing (roberth) and I have discussed is Nix and Nixpkgs being increasingly willing to do chart their own paths | 22:19:32 | |
| I think the unit files is a good example of this, and decoupling "package from derivation" https://github.com/NixOS/nix/issues/6507 is also a good example | 22:20:22 | |
| The factor of 5-7 is correct for the current benchmark. Though, I expect the impact on real world use cases to be lower. One reason is that the module system does have defaults for each individual option, vs. the package func doesn't. Once more options are used, the ration should get lower. But this is just speculation. For sure there is room for optimization. Let's continue the discussion here: https://github.com/nixpkgs-architecture/issues/issues/22 | 22:22:28 | |
| Ok, I now re-ran the benchmark passing 100 env variables to each derivation. Now the result looks much better. The modules are between 1.6 to 2 times slower than pkg-funcs. | 22:42:13 | |
John Ericson: We can't change drvPath behavior without breaking compatibility, which we shouldn't do for such a core part. So the only alternative is to slowly deprecate it by introducing another say drvPathNew that doesn't have the problem. But it doesn't make sense to do that in Nixpkgs, because drvPath is effectively exclusively used by Nix itself. In addition it's Nix itself that produces drvPath in the first place, it should really be Nix's responsibility to deprecate or fix it. | 23:13:44 | |
The idea of keeping Nix stable and changing Nixpkgs instead only really works for things like wrappers of builtin functionality that people are using instead, such as stdenv.mkDerivation | 23:18:07 | |
| Yes Nix doesn't have a good way to deprecate things yet, but that isn't Nixpkgs' problem :) | 23:23:15 | |
| * Yes Nix doesn't have a good way to deprecate things yet, but that isn't Nixpkgs' problem :) | 23:23:31 | |
| 9 Aug 2023 | ||
| infinisil I think there is a misunderstanding of what is affected by this change. "Regular" usage that treats the output of `builtins.derivation` as a black box is not affected. Only usage that explicitly pulls out `drvPath` and splices that (into strings, ultimately into another derivation) is affected. Only *user* code does this. | 01:54:54 | |
| Yeah I get that, still, it's a breaking change | 01:56:47 | |
| I believe based on my recollection of experiments, nix in fact hardly cares what the contents of `drvPath` is. It might just check that there is a string with that key. | 01:58:01 | |