Remix.run Logo
WD-42 5 days ago

What are these non deterministic compilers I keep hearing about, honestly curious.

charcircuit 5 days ago | parent | next [-]

For example looping over the files in a directory can happen in a different order depending on the order the files were created in. If you are linking a bunch of objects the order typically matters. If the compiler is implemented correctly the resulting binary should functionally be the same but the binary itself may not be exactly the same. Or even when implemented correctly you will see cases where different objects can be the one to define a duplicate symbol depending on their relative order.

ModernMech 5 days ago | parent [-]

That's not nondeterminism though, you've changed the input (the order of the files). Nondeterminism would be if the binary changes despite the files being in the same order. If the binary is the same holding fixed the order of the files, then the output is deterministic.

PhunkyPhil 5 days ago | parent | prev [-]

GCC can use randomized branch prediction.