| 31 Aug 2025 |
emily | IIRC there is a weird thing where functional had one checking that timestamps work (with the experimental extension that has since been removed) and functional2 had one checking that they don't work (with the extension disabled), or something like that. | 06:20:26 |
emily | the extension is gone so all timestamp tests should be testing the failure case | 06:20:37 |
emily | I don't think there should be any strict duplicates left | 06:21:03 |
piegames | nix: error while loading shared libraries: liblowdown.so.1: cannot open shared object file: No such file or directory nix dev build doesn't start anymore for me (I already rebased and reloaded env and rebuilt | 07:20:20 |
piegames | * nix: error while loading shared libraries: liblowdown.so.1: cannot open shared object file: No such file or directory nix dev build doesn't start anymore for me (I already rebased and reloaded env and rebuilt) | 07:20:23 |
Sergei Zimmerman (xokdvium) | What the actual fuck:
echo "1 + 2 + 5" | nix-instantiate --eval -E 'import (builtins.fetchurl { url = "file:///proc/self/fd/0"; })' --tarball-ttl 0
| 15:00:48 |
Sergei Zimmerman (xokdvium) | * What the actual fuck:
echo "1 + 2 + 5" | nix-instantiate --eval -E 'import (builtins.fetchurl { url = "file:///proc/self/fd/0"; })' --tarball-ttl 0
| 15:01:05 |
Sergei Zimmerman (xokdvium) | And if the tarball-ttl isn't passed the result is cached... | 15:01:50 |
aloisw | Looks like working as intended tbh. | 15:04:16 |
Sergei Zimmerman (xokdvium) | Well yeah, though I doubt it's by design | 15:05:11 |
Sergei Zimmerman (xokdvium) | However this does actually expose the evaluation order. Depending on in which order thunks are forced this would produce different results hmmm | 15:06:47 |
aloisw | That's by far not the only thing exposing evaluation order. Other ways to read special files, symbol table order, … | 16:20:14 |
aloisw | It will also not work with pure eval mode, so this doesn't even look like silently breaking any purity guarantees. | 16:21:49 |
aloisw | If anything I would've expected it to fail due to some bullshit bug. | 16:22:33 |
emily | I think builtins.fetchGit with a rev could break purity. | 16:34:47 |
emily | maybe. | 16:34:58 |
emily | but builtin fetchers are just sort of dodgy for strict purity in general I suppose | 16:36:12 |
aloisw | That's indeed something that can be used for breaking purity too, by possibly being dependent on the repository configuration. | 16:37:09 |
emily | I was thinking just forging an object and hoping nobody is checking the hash | 16:43:33 |
aloisw | I would hope Git would check the hash on clone but indeed I don't know for sure. | 16:46:47 |
emily | I thought libgit2 was involved somewhere. | 17:41:15 |
emily | (maybe not in Lix?) | 17:41:19 |
emily | (but hopefully libgit2 does. but I think some of this stuff may be configuration-tweakable.) | 17:41:32 |
emily | * (but hopefully libgit2 does too. but I think some of this stuff may be configuration-tweakable.) | 17:41:37 |
aloisw | Not in Lix, it was one of the regression-causing things in 2.20 that was not backported. | 17:41:38 |
emily | libgit2 is awful anyway, so good decision. | 17:42:12 |
emily | we replaced libgit2 fetches/clones with shelling out to git(1) in Jujutsu and it's 100× better. | 17:42:30 |
aloisw | Yeah shelling out to the command seems to be the only way to do git properly. So many bugs and limitations with libgit2. | 17:43:27 |
emily | gitoxide is pretty good (if you're using Rust, and the API is kind of baroque in the "Rust that is really enthusiastic about never copying or heap-allocating anything it doesn't have to so the error types are a deeply-nested pain and sometimes the lifetimes make it awkward to do what you want" sort of way). but it doesn't do pushes | 17:46:42 |
helle (just a stray cat girl) | libgit2 is a mess and we are not going to do it | 17:46:52 |