| 8 Jun 2021 |
niksnut | There is basically no point in GC'ing ASTs | 17:11:08 |
niksnut | Since they generally exist for the duration of the program | 17:11:30 |
Regnat | Oh, do they? I kind-of assumed that once a thunk is evaluated, the underlying AST isn’t used anymore (and is unreachable anyways) | 17:29:18 |
Regnat | I’ll have to review my understanding of the evaluator then 🤔 | 17:34:01 |
niksnut | AST nodes are shared by all the thunks that refer to them | 17:46:32 |
niksnut | And there is a file cache, so if you import a file twice you get the same AST | 17:47:00 |
niksnut | But the most important thing is that AST memory usage is bounded by the set of Nix expressions imported | 17:48:16 |
niksnut | Unlike values, of which there can be arbitrarily many during an eval | 17:48:42 |
Regnat | In reply to @niksnut:matrix.org But the most important thing is that AST memory usage is bounded by the set of Nix expressions imported Ahah, yes, that’s true | 18:09:41 |
Regnat | I wonder though whether there’s something to gain from freeing them at the end of the eval… but given that there’s no clear point where we finish the eval, it probably doesn’t make much sense | 18:10:54 |
| 9 Jun 2021 |
| matto153 joined the room. | 08:06:21 |
matto153 | Hello all | 08:17:41 |
Mic92 (Old) | I assume flakes cannot have git submodules? | 11:42:14 |
manveru | Mic92: they can... but it's a major PITA | 11:50:42 |
manveru | you basically have to import self with fetchGit and submodules | 11:51:11 |
Mic92 (Old) | manveru: do you have an example? | 11:51:29 |
manveru | and it only works if the dir isn't dirty :P | 11:51:33 |
manveru | fullself = builtins.fetchGit { url = "https://whatever"; ref = "master"; rev = self.rev; submodules = true; }; | 11:52:41 |
manveru | kinda like that | 11:52:48 |
Mic92 (Old) | Ok. I see the problem | 11:53:32 |
manveru | of course that only works with master branch, because Nix can't get revs from undefined branches... | 11:53:41 |
manveru | and self.rev is only set if the flake isn't dirty | 11:53:54 |
Mic92 (Old) | the whole flake or just the submodule? | 11:54:08 |
Mic92 (Old) | If the whole flake needs to be clean than this is useless | 11:54:52 |
manveru | yeah... i know :| | 11:55:23 |
manveru | submodules cost me more weeks of my life than i'd dare to count | 11:55:48 |
manveru | also in theory you can pass submodules = true for flake inputs, but i think that's still broken | 11:56:53 |
manveru | https://github.com/NixOS/nix/issues/4423 has more info | 11:59:39 |
manveru | also related https://github.com/NixOS/nix/pull/4435 for that inputs issue | 12:02:00 |
manveru | i tried fixing that, but couldn't get it right :| | 12:02:14 |