| 5 Mar 2025 |
emily | human-readable can actually be a drawback for formats specifically designed to be non-malleable, precisely because they invite opening in a text editor and appending some keys in whatever order.
fwiw, https://preserves.dev/ is well-designed, has a superset of JSON types, and has both a textual format and a binary format with a rigidly-defined canonical representation for the latter. however it's also a bit obscure and won't have as wide library support as alternatives so I can understand not going with it. the Spritely/Agoric/Cap'n Proto standardization effort OCapN uses it as Syrup, which is a separate canonical-but-made-up-of-printable-characters serialization of it https://github.com/ocapn/syrup#pseudo-specification.
more well-known alternatives:
- deterministic CBOR serialization, buuuut there are like three versions of it so caveat emptor https://www.imperialviolet.org/2022/04/17/canonsofcbor.html
- canonical s-expressions
- bencode
- …ASN.1 BER? 🙃
also, if you don't actually need a flexible/extensible format, defining your own very simple rigid serialization isn't a sin when you want cryptographic canonicity. (just make sure it's actually non-ambiguous and preferably can't be corrupted into another valid message by truncation, especially if you might be concatenating multiple messages.)
| 17:00:57 |
emily | (total digression but Preserves is also used in the https://syndicate-lang.org/ ecosystem which I suspect John Ericson might find interesting) | 17:03:05 |
emily | (the Preserves textual format is also a superset of JSON, so in terms of being able to ingest things in a familiar format to then canonicalize it works well. but again many understandable reasons to pick something else, just giving an overview of the space as I see it) | 17:04:33 |
Robert Hensing (roberth) | John Ericson: did we have an issue on this topic yet? Couldn't find one | 17:06:35 |
John Ericson | @roberthensing:matrix.org: for new drv format? | 17:24:42 |
John Ericson | Not actually sure | 17:24:54 |
John Ericson | Also FYI https://github.com/facebook/buck2/issues/866 | 17:25:21 |
John Ericson | I sent to @edef1c too | 17:27:02 |
puck | In reply to @roberthensing:matrix.org John Ericson: I've suggested to treat the Nixpkgs "fix" for the CA placeholder issue (no storedir prefix) as a workaround as ca-derivations is experimental https://github.com/NixOS/nixpkgs/pull/386774#pullrequestreview-2660479310 builtins.placeholder has the same "issue", though i like them not being /nix/store-prefixed because it disambiguates that their format is unstable | 17:31:38 |
Robert Hensing (roberth) | That one isn't experimental, so we'd need a very very good reason to change that anyway | 17:33:35 |
emily | I don't suppose Nix strings support NUL bytes in them so that we could properly separate the namespace from actual filesystem paths? in the same way abstract Unix sockets do | 17:33:47 |
Robert Hensing (roberth) | Also isn't user-handled as much as outputs are | 17:34:04 |
Robert Hensing (roberth) | Evaluator strings are C strings. This could be changed to something with a length, but we're not in a hurry. I guess one of those separator control characters could serve the same role, but I feel that it'd be weird to do any of that (regardless of choice of byte value) | 17:35:50 |
emily | NUL is the only byte that is actually guaranteed to not be allowed on Linux anyway (though of course other platforms exist too) | 17:38:44 |
emily | so no advantage to anything else | 17:38:48 |
| Naxdy changed their profile picture. | 18:03:52 |
| 6 Mar 2025 |
| @maikelfrias:matrix.org joined the room. | 02:33:30 |
| @maikelfrias:matrix.org left the room. | 02:36:01 |
ElvishJerricco | I'm going to make this comment here because I think it is one of the most important things I've said in the world of NixOS. Please read this comment: https://discourse.nixos.org/t/determinate-nix-3-0/61202/57 | 21:33:50 |
| 7 Mar 2025 |
| Qyriad changed their display name from Qyriad to qyriad. | 16:03:20 |
| 8 Mar 2025 |
| Colgrave joined the room. | 03:22:45 |
fzakaria | Trying to figure out dynamic derivations;
I'd appreciate some tips | 06:07:58 |
fzakaria | Hitting some weird road blocks with what I think would work. | 06:08:14 |
fzakaria | Like:
warning: Ignoring dynamic derivation /nix/store/8apg4x2xbcx83xc0p1jk1qdiihkmhjyg-hello-2.12.1.drv.drv^out while querying missing paths; not yet implemented
error: Building dynamic derivations in one shot is not yet implemented.
| 06:08:22 |
tomberek | You might need a wrapping drv for now. | 06:20:45 |
fzakaria | Here is my strawman https://pastebin.com/wnHmj4pW | 06:46:30 |
fzakaria | i think it's a wrapping drv? | 06:46:36 |
| . joined the room. | 07:01:28 |
| ncfavier changed their profile picture. | 10:43:32 |
| deprecated, moved to @poz:poz.pet joined the room. | 12:27:30 |