4 ms·
Not sure how people do this in practice. But in principle it seems rather straight forward. A compiler is just a program that takes some input and create some
by CuriousSkeptic 7y ago
Not sure how people do this in practice. But in principle it seems rather straight forward.
A compiler is just a program that takes some input and create some output. Both the compiler and the input can have a cryptographically secure hash. Putting both in a sealed box, like a docker image, with its own hash, gives you a program that takes no input and produces some output.
If the box changes, run it in a trusted machine and save the output together with a signed declaration of which box version produced it
- fragmede 7y agoDocker makes this drastically easier (need the exact same versions of all libraries and the compiler), but there are still compile time things that are unique per-compile. Debian has been working hard to get hashes of binaries to be useful but the work is far from trivial. (See also: trusting trust)
- CuriousSkeptic 7y agoI see this an inherited technical debt though not a flaw in principle. It would be nice if we could solve this at the foundational level instead of forcing every dev organization to struggle with it on their own. Edit: I think we’re getting there though, with all the efforts going on with containers, webassembly blockchains, ipfs and so forth it’s getting closer