Skip to content

v0.55.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 01:15
· 23 commits to master since this release

Four compilers, and whether they are one compiler

There is a generator for the language of tier 1 and there has never been one
for the language of tier 3. So the four compilers for that language had
compiled, between them, the nine programs written in it by hand, and those
nine do not change.

What a fixpoint says is that a compiler reproduces itself. A compiler can do
that while getting wrong anything it does not itself use: the miscompilation
is stable, so the three generations still agree, and the closure still
passes, and nothing anywhere says a word. The only thing that finds it is a
program none of them is.

So one is generated, handed to the seed and to all three tails, and every
answer compared. A refusal counts as an answer, because four compilers
refusing together is four compilers agreeing. The programs terminate, read
nothing and print three digits, since a program that hangs compares nothing,
and the loop counters are readable inside their own bodies and never
assignable there, which is the whole of why they stop.

It found something on the first serious run, and it is the same shape as the
last two releases. There were three limits on how many values a function may
have where there should have been one: eight thousand in the seed and in the
tail for this machine, three thousand in the other two. A function with four
thousand compiled twice and was refused twice. They all stop at three
thousand now, and the number is not this machine's to pick - a displacement
here is thirty-two bits and would hold any of them, but the one that reaches
least far decides, and that is the second machine, whose scaled offset stops
at four thousand and thirty-one.

The check was checked by putting the old limit back: five disagreements inside
fifty programs, naming the seed's answer and the three refusals beside it.

python3 ouroboros.py --fuzz-gsl2 40

Full Changelog: v0.54.0...v0.55.0

LOC: 25560