[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Removing compilers that cannot be bootstrapped
From: |
Chris Marusich |
Subject: |
Re: Removing compilers that cannot be bootstrapped |
Date: |
Fri, 25 Mar 2016 23:40:43 -0700 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Leo Famulari <address@hidden> writes:
> `wget https://blob` doesn't count as reproducible :)
Very true.
Self-hosting compilers are a cute trick, but they're a far cry from
being reproducible. They're just inscrutable binary blobs. If we want
true reproducibility from the bottom up, then it seems like the only way
to do it is via a strategy like the following:
1) Write the simplest possible program (or collection of programs) in
the simplest possible machine code. This program serves only one
purpose: to enable you to write more code at a higher level of
abstraction. It is effectively a compiler for a very primitive
language, but the language it compiles will be one layer of abstraction
above machine code, which is a step in the right direction. This first
program must be a "binary blob", since we cannot rely on any existing
tools to build it. It must be simple enough that someone can read and
understand it using e.g. a hex editor, provided that they have access to
the right reference materials. Since this program exists only as
machine code, it must be documented thoroughly to make it easier to
understand.
2) Write source code which, when compiled using the compiler/toolchain
From the previous step, produces a new compiler/toolchain that will
allow you to write more expressive source code at a higher layer of
abstraction.
3) Repeat step (2) as many times as necessary to produce a compiler that
is capable of compiling GCC from source.
4) Use the compiler from (3) to compile GCC from source.
5) Use the GCC from (4) to compile the rest of the world from source.
If we want to free ourselves from reliance on inscrutable binary blobs,
isn't something like that the only way?
--
Chris
signature.asc
Description: PGP signature
- Re: Removing compilers that cannot be bootstrapped, (continued)
- Re: Removing compilers that cannot be bootstrapped, Jookia, 2016/03/22
- Re: Removing compilers that cannot be bootstrapped, Eric Bavier, 2016/03/22
- Re: Removing compilers that cannot be bootstrapped, Christopher Allan Webber, 2016/03/22
- Re: Removing compilers that cannot be bootstrapped, Ludovic Courtès, 2016/03/23
- Re: Removing compilers that cannot be bootstrapped, Christopher Allan Webber, 2016/03/23
- Re: Removing compilers that cannot be bootstrapped, Leo Famulari, 2016/03/23
- Re: Removing compilers that cannot be bootstrapped, Ludovic Courtès, 2016/03/25
- Re: Removing compilers that cannot be bootstrapped, Leo Famulari, 2016/03/25
- Re: Removing compilers that cannot be bootstrapped,
Chris Marusich <=
- Re: Removing compilers that cannot be bootstrapped, Chris Marusich, 2016/03/26
- Re: Removing compilers that cannot be bootstrapped, Jookia, 2016/03/26
- Re: Removing compilers that cannot be bootstrapped, Alex Vong, 2016/03/26
- Re: Removing compilers that cannot be bootstrapped, Ricardo Wurmus, 2016/03/26
- Re: Removing compilers that cannot be bootstrapped, Jookia, 2016/03/26
- Re: Removing compilers that cannot be bootstrapped, Ludovic Courtès, 2016/03/26
- Re: Removing compilers that cannot be bootstrapped, Christopher Allan Webber, 2016/03/26
Re: Removing compilers that cannot be bootstrapped, rain1, 2016/03/22
Re: Removing compilers that cannot be bootstrapped, John Darrington, 2016/03/26