Comment by ifdefdebug

3 hours ago

What do you commit? As long as you commit high level code to your repo, you are still programming in that language. You don't commit machine code because you know it will be always the same after compiling. And it also doesn't matter that you are using very high level tools and basically don't ever look at or even understand your programs any more.

I don't think reproducibility is relevant, here. Otherwise, even your compiler example doesn't stand. No, machine code is not always the same after compiling high-level language. First, it depends on compiler. Clang and GCC won't produce the same output. Then it depends on the version of your compiler. GCC-9 and GCC-11 won't produce the same output. It obviously depends on the architecture too (arm vs x86), but even then, it depends on details about current configuration of the system you're building it on (CPU flags, hardening, etc). And then of course, there may be things randomized on purpose at each build, like randomized memory addresses to make the binary less exploitable.