| 14 Oct 2025 |
raitobezarius | And not in builtins | 16:22:13 |
raitobezarius | And that users prefer lib.convertHash as we usually recommend to everyone writing code in general | 16:22:37 |
raitobezarius | I think that having lib.convertHash = if builtins?convertHash then builtins.convertHash else (throw "convertHash is not available yet on all platforms, see <DOC LINK> about caveats and plans."); would be useful now | 16:23:25 |
emily | fwiw it seems like Nix is calling the format nix32 these days | 16:23:41 |
raitobezarius | let's call it nix32 | 16:23:48 |
emily | I guess it would be something like builtins.fromNixBase32 { payload = …; size = 160; }? | 16:23:49 |
raitobezarius | I'm not yet totally fixed on the byte sizes stuff, but I am keeping this open | 16:24:11 |
emily | well it needs solving to convert hashes properly :) | 16:24:21 |
raitobezarius | builtins.conversions.fromNixBase32 btw | 16:24:24 |
emily | one way or another | 16:24:25 |
raitobezarius | We are aligned on the goal, I am doing something on the side, so I don't have all the context loaded | 16:24:42 |
raitobezarius | If sizes are crucial to that goal, np | 16:24:50 |
K900 | tbh I still don't see the value, because like, we can't remove the <algo>:<hex> formats | 16:24:52 |
K900 | And literally everything relevant uses those | 16:24:57 |
K900 | Or SRI | 16:25:02 |
K900 | And we can just keep things using those forever probably | 16:25:11 |
raitobezarius | The only value I see goes beyond hashes personally | 16:25:12 |
K900 | convertHash is a massive hammer for a tiny nail | 16:25:19 |
raitobezarius | I see people who wants to use base32 data inside non-hashes | 16:25:19 |
raitobezarius | For valid reasons | 16:25:23 |
raitobezarius | If it ends up constructing convertHash, fine | 16:25:33 |
raitobezarius | But that's not my sole motive for spawning these primops | 16:25:49 |
emily | so Nixpkgs would need
- parsing and serialization for SRI and
<algo>:<digest> that matches the implementation
- a lookup table between hashes and byte sizes
and the code would be Lix-specific (because Nix has chosen that strings cannot contain NUL bytes so the intermediate values would not be valid)
that may be fine
| 16:26:06 |
raitobezarius | I'd say that the code is specific to those who have !(builtins?convertHash) true but idk | 16:26:48 |
emily | if you're going to allow NUL bytes in strings you surely want to be able to handle Base64 etc. in general | 16:26:52 |
raitobezarius | I mean you're right | 16:26:53 |
raitobezarius | Perhaps, we should advertise NUL in our bytes lol | 16:27:01 |
emily | Nix32 on the other hand is cursed | 16:27:02 |
K900 | That's a much later problem tbh | 16:27:02 |
raitobezarius | builtins.features.canContainNULInStrings | 16:27:06 |