3 ms·
> It is very strange definition. To me it is tautological, as computers are deterministic and if you have same build environment you will get same results by ne
by rnhmjoj 2y ago
> It is very strange definition. To me it is tautological, as computers are deterministic and if you have same build environment you will get same results by necessity.
There is a lot of randomness in a typical build system: randomly ordered lists, race conditions in multithreaded coded, timestamps in the filesystem, etc,
The worse kind of build systems can even include fetching files the internet. So, no, for all practical purposes actual computers are not deterministic and this is not tautological at all.
You can try to emulate determinism using some kind of virtual machine and run your build there (for example, see Hermit[1]), but it will never be perfect determinism and there are many practical downsides.
[1]: https://github.com/facebookexperimental/hermit https://github.com/facebookexperimental/hermit
- blacklion 2y agoRandomly ordered lists (and randomized hashmaps) typically relay on PRNG. Seed of PRNG is part of environment. If you use hardware RNG, it is part of environment and should be "the same". Same with timestamps. If you download files from Internet, whole Internet is your environment (and by pre-condition it must be "the same"). Of course, it is unrealistic. So... My point is: without very precise definition of "same build environment" all discussion of reproducible builds are almost meaningless.
- viraptor 2y ago> all discussion of reproducible builds are almost meaningless. I see people working on reproducible builds understanding exactly what they work on and having successful conference talks. I understand their goal too. It could be less vague in the explanation on the website, but... There's a common understanding you seem to be missing, but that doesn't make the discussions/work meaningless.
- magicalhippo 2y agoKeep in mind the list may be random or non-deterministic because no explicit order was imposed, and the source of the data is non-deterministic. For example listing files in a directory and adding them to a list for further processing, without explicitly sorting by some stable criteria like filename.