From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Marusich Subject: Re: Removing compilers that cannot be bootstrapped Date: Fri, 25 Mar 2016 23:40:43 -0700 Message-ID: <87io09bv2s.fsf@gmail.com> References: <87twjz4fcn.fsf@gnu.org> <87h9fyw3j8.fsf@dustycloud.org> <87bn64u9mc.fsf@gnu.org> <87lh58izcy.fsf@dustycloud.org> <20160324031126.GA22569@jasmine> <87d1qi40me.fsf@gnu.org> <20160326002235.GA3676@jasmine> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:46271) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ajhu4-00083e-98 for guix-devel@gnu.org; Sat, 26 Mar 2016 02:40:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ajhtz-000225-7l for guix-devel@gnu.org; Sat, 26 Mar 2016 02:40:56 -0400 In-Reply-To: <20160326002235.GA3676@jasmine> (Leo Famulari's message of "Fri, 25 Mar 2016 20:22:35 -0400") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Leo Famulari Cc: guix-devel --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Leo Famulari 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=20the 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? =2D-=20 Chris --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJW9i7tAAoJEN1AmhXYIkad2c8P/1lOp1Acxi21vXe2LM5bKDTg suxLZCiMDdAvPTPidR5jba90taVWbPX5k5vIfntXm251kPIi0TrqRBODV3840sdJ kDw8rWs4jzA9CZjExq24Ngbi8EL+LvjzFPGJt41/htJJ1myyUmFa9lETKDZsCT2X qvvhNHemKogMwzrtHaVer4oyYaY/F49SX33n63mlwspiwfaNgcymb75Bhoc/YTYZ E6g+hi/Ba1+2AAaoiAN/uU6+xEUaE20e5r1126eH0Z6QF8Bzo1bsSkVBIifVcK18 nIRfzBj5ZCrlVkxlLVzzSYCCrI8lP0Vigq5fbx5RKw30Cca0uOSja4BnPKN5pa3A WrM1LqX2ThWpaBO5ofuuea44wj+VtCq1bcfJAAFefmFXeKEZL9JKY1ldI8vHEROg 4Q54tYGoalvwP8wI+trSlp+tduybABVZTR2gQVpprZUCLhtEHutRW2ktdCFR4Omi XpNfkR2mYPF6QsZiKlE8QEzdmPZ5XuQVV9rIfK+1Afoh8eFQCf2csTFbpliYQ1zs l4HAGHwwdn23K+sm2Ng7WcwHWxAwGIZ4fA1VGB7uiPl2sJvwtwxvSvQ0NzmlvXOf RL28YqmoWaH8QpbIkiHebqYpU7Aih2EHTAvxLEszO+pZVZznzgDxXFjCuoDf/AO2 mjbtGX6F0hMWHVx7JBoE =oNBi -----END PGP SIGNATURE----- --=-=-=--