Replying to myself... > David Kastrup <d...@gnu.org> writes: >> I am not sure about the strength of the respective dependencies, but let >> me just say that "universally-unique gensyms" as an idea has a bad ring >> to me. It makes the output of the compiler non-deterministic. This >> makes a lot of simple verification methods (like checking that a >> bootstrapped compiler compiles the same output as its first stage) >> infeasible. > > I agree that non-deterministic compiler output is a very serious problem > that must be avoided. However, if only the gensym _names_ are > non-deterministic, then checking can still be done relatively simply. > It just requires keeping track of the mapping of gensym names between > the two files being compared.
Better yet: the only non-deterministic part (of some components of literal syntax objects) is the inclusion of a 'session-id'. This session-id is randomized by default, but it can be specifically set to a fixed value if needed. This can be done for testing purposes to force fully deterministic compiler output. Mark