[Oberon] Distribution practice; was http://cas.inf.ethz.ch/projects/a2 .
Felix Friedrich
felixf at inf.ethz.ch
Mon Nov 7 08:22:19 CET 2022
Hello Michael, hello Peter
> The only tricky part here is that the Fox compiler is compiled with
> itself, and there is as far as I know no independent bootstrap path
> available. But when the CI jobs are set up to first compile the compiler
> with the bootstrap compiler and then use the new compiler to recompile
> everything again, the bootstrap compiler only needs to get rebuilt when
> it introduces an incompatible change that makes it impossible to
> recompile the new compiler (or there is a severe bug that propagates
> into the generated binaries). Updating the bootstrap compiler binaries
> would still be a manual task, but everything else is automated - so
> users can either use the bootstrap compiler to compile it themselves (if
> they are on the platform where the bootstrap compiler runs) or pick some
> nightly binaries and start from there.
This is exactly the point why I liked SVN with the binaries built
together: when we see a new bug (that has not been identified with the
CI workflow of our server), we need a way to identify when this bug has
been introduced. Usually, this boils down to a binary search in past
revisions until the revision can be found that introduced the new
behavior. This binary search requires that old revisions can be checked
out as executables (or at least with a quick compilation time).
Example: in revision x we change the representation of arrays with
pointers. Only in revision y = x + d we find out that on particular
systems (Windows 32 bit, say) A2 crashes sporadically. We don't remember
our change from revision x at that moment and debugging is extremely
hard (GC issues almost always are very hard to trace, particularly in a
concurrent setup). So, we try to find a revision where the problem does
not appear. We check out revision y - 200 and see the system seems to
work there. Then we make a binary search from there... This scenario
isn't that unrealistic. When you experiment with language features or
optimize the runtime towards certain goals, it is usually hard if not
impossible to see all implications.
I very much appreciate your feedback and we will do our best to find a
good approach with some large file system support in GIT (or so). Will
keep you updated.
Kind regards
Felix
More information about the Oberon
mailing list