Se il compilatore è umorale ...
Leggevo stamattina questo post di Jim Griesmer.
Che mi ha colpito parecchio nella sua conclusione, al di là del contesto che ha scatenato il problema.
Surely if I build a component twice, consecutively, with no changes to source in-between, I certainly will end up with two identical copies of that component, right?
Senza barare e andare a leggere il resto del post, onestamente avrei detto di sì.
Cioè, a parità di *ogni* aspetto "ambientale" (stesse identiche impostazioni di compilazione, ottimizzazioni comprese, stesso identico codice sorgente, ecc...), mi sarei aspettato che per definizione l'output generato da *ogni* compilatore/linker/meccanismo_di_build fosse esattamente identico.
Detta in altri termini ancora, mi sarei aspettato che il comportamento di ogni "builder" fosse assolutamente deterministico.
Sembra di no :-O
In practice, you are not likely to see a difference in compiler/linker output from build to build. So in theory, it is possible to make use of mismatched symbols. However, compiler/linker determinism is not guaranteed, our debugger cannot depend on it.
Sto girando un po' per il web alla caccia di info a riguardo ... alla fine sono un po' curioso di sapere quali sono i parametri maggiormente candidati a causare modifiche all'output. E quali ambienti invece garantiscono quel determinismo che, sulla carta, non avrei mai messo in discussione :-(