[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:55:44 -0700 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Chris Marusich <address@hidden> writes:
> 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?
Sorry for replying to my own post, but I couldn't help myself. If
anyone thinks the above sounds too paranoid, remember the Ken Thompson
hack:
http://www.c2.com/cgi/wiki?TheKenThompsonHack
Chilling!
--
Chris
signature.asc
Description: PGP signature
- Re: Removing compilers that cannot be bootstrapped, (continued)
- 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, 2016/03/26
- Re: Removing compilers that cannot be bootstrapped,
Chris Marusich <=
- 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