Subject: Re: bug#20272: Support reproducible builds

From: "Thompson, David" <[email-masked]>
Date: Mon, 8 Apr 2024 13:27:40 -0400

On Fri, Nov 17, 2023 at 3:29 PM Bernhard M. Wiedemann
<[email-masked]> wrote:
>
> Parallel builds with guile-3.0.9 still introduce non-determinism

I recently learned that the cross-module inlining optimization pass is
a source of nondeterminism. If module A imports module B, inlining of
procedures from B into A may occur *if* B has already been compiled.
Depending on the value of n in `make -j $n` you will likely get a
different build.

While working on Guile Hoot, I encountered a bug on my machine that
Andy Wingo couldn't reproduce on his. Turns out it was because my
`make -j6` build was different from his `make -j32` build. I don't
recall the details but apparently Guile's bootstrap process takes
great care to avoid sequencing issues like this.

I don't know what the solution might be, though. I want parallel *and*
reproducible builds!

- Dave