Compare commits

...

11 Commits

Author SHA1 Message Date
Jan Nieuwenhuizen b18623b0d1
doc: Add lp20.webm 2020-03-15 14:01:52 +01:00
Jan Nieuwenhuizen 9989a8674a
doc: Update movie scripting. 2020-03-15 14:01:52 +01:00
Jan Nieuwenhuizen 927cc12607
doc: Add lp20.ogv.
* doc/talks/lp20/lp20.ogv: New file.
2020-03-15 14:01:22 +01:00
Jan Nieuwenhuizen f6e1ceedef
doc: Add LiberPlanet audio and movie script.
* doc/talks/lp20/movie/audio.ogg: New file.
* doc/talks/lp20/movie/doit: New file.
2020-03-15 10:40:13 +01:00
Jan Nieuwenhuizen e3d7414ac2
doc: Add LibrePlanet20 talk.
* doc/talks/lp20: New talk.
2020-03-15 10:40:07 +01:00
Jan Nieuwenhuizen eb94972b6b
doc: Add bootstrapping intro.
* doc/talks/fosdem20/intro.org: New file.
* doc/talks/fosdem20/intro.pdf: New file.
2020-03-13 11:54:42 +01:00
Jan Nieuwenhuizen c4eed1cdbd
doc: Add current status.
* doc/talks/fosdem20/status.org: New file.
* doc/talks/fosdem20/status.pdf: New file.
2020-03-13 11:54:42 +01:00
Jan Nieuwenhuizen 83a79020a5
doc: Add fosdem20 talk.
* doc/talks/fosdem20: New talk.
2020-03-13 11:54:34 +01:00
Jan Nieuwenhuizen 1c5fcbdf21
doc: Add fosdem19 talk.
* doc/talks/fosdem19: New talk.
2020-01-27 20:51:46 +01:00
Jan Nieuwenhuizen adf306350d
doc: Add fosdem17 talk.
* doc/talks/fosdem17: Add fosdem17 talk.
2020-01-27 20:51:38 +01:00
Jan Nieuwenhuizen ddc160c188
doc: Post-release update.
* NEWS: Add v0.22 hash.
* doc/announce/ANNOUNCE-0.22: Add gen-announce checksums; update NEWS,
typos.
2020-01-23 17:34:36 +01:00
293 changed files with 15036 additions and 17 deletions

17
.gitignore vendored
View File

@ -60,14 +60,15 @@
?
?.mes
\#*#
/doc/fosdem/fosdem.aux
/doc/fosdem/fosdem.log
/doc/fosdem/fosdem.nav
/doc/fosdem/fosdem.out
/doc/fosdem/fosdem.snm
/doc/fosdem/fosdem.tex
/doc/fosdem/fosdem.toc
/doc/fosdem/fosdem.*vrb
/doc/**/*.aux
/doc/**/*.log
/doc/**/*.nav
/doc/**/*.out
/doc/**/*.snm
/doc/**/*.tex
/doc/**/*.toc
/doc/**/*.*vrb
/doc/mes
/doc/mes.1
/doc/mes.info
/doc/mes.pdf

5
NEWS
View File

@ -16,7 +16,10 @@ Please send Mes bug reports to bug-mes@gnu.org.
Using --with-bootstrap on x86, a bin/mes-mescc is compiled with
mes+mescc, that shall have sha256sum
9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb bin/mes-mescc
722790ed261954eb53cf2cd2906c89c7589ef72b66171bbe2a9dce0f0af20232 bin/mes-mescc v0.22
9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb bin/mes-mescc v0.21
only differing in the version number string.
This has been verified on GNU Guix, Debian GNU/Linux and NixOS.
*** Mes now builds reproducibly with Guile+MesCC vs Mes+MesCC.

View File

@ -6,7 +6,7 @@ Subject: GNU Mes 0.22 released
We are pleased to announce the release of GNU Mes 0.22, representing
57 commits over 8 weeks.
Mes can now be built reproducibly by mes+mescc or guile+mescc accross
Mes can now be built reproducibly by mes+mescc or guile+mescc across
distributions such as GNU Guix, Debian GNU/Linux and NixOS. Also, many
build issues were fixed. A big thank you to reproducible-builds.org,
Vagrant Cascadian, Jelle van der Waa, Hannes Mehnert and David Terry!
@ -87,8 +87,8 @@ is built using
Here are the MD5 and SHA1 checksums:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx mes-0.22.tar.gz
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx mes-0.22.tar.gz
450c3043ad68ce942c1233282c9fa7e7 mes-0.22.tar.gz
a318150059a2bcff6b58e765e203c05d0dfaccee mes-0.22.tar.gz
[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact. First, be sure to download both the .sig file
@ -114,7 +114,10 @@ is built using
Using --with-bootstrap on x86, a bin/mes-mescc is compiled with
mes+mescc, that shall have sha256sum
9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb bin/mes-mescc
722790ed261954eb53cf2cd2906c89c7589ef72b66171bbe2a9dce0f0af20232 bin/mes-mescc v0.22
9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb bin/mes-mescc v0.21
only differing in the version number string.
This has been verified on GNU Guix, Debian GNU/Linux and NixOS.
*** Mes now builds reproducibly with Guile+MesCC vs Mes+MesCC.

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@ -0,0 +1 @@
LISP-1.5-page-13-bottom.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

55
doc/talks/fosdem17/README Normal file
View File

@ -0,0 +1,55 @@
-*- org -*-
#+TITLE: Talk @Fosdem 2017
Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
This talk is
Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
Permission is granted to copy, distribute and/or modify this talk
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
copy of the license is included in doc/fdl-1.3.texi, included in the
manual in the section entitled ``GNU Free Documentation License''.
beamercolorthemeX.sty
beamerthemeX.sty
fosdem.org
fosdem.pdf
egg.jpeg
egg.png
egg.xcf
fsb-logo-guile-guix-gnu.png
fsb-logo-guile-guix-gnu.xcf
fsb-logo-guile-guix-mes.png
fsb-logo-guile-guix-mes.xcf
fsb-logo.png
mes.png
mes.xcf
Permission is granted to copy, distribute and/or modify
these works under the terms of the Creative Commons
Attribution-ShareAlike 4.0 International License.
GuixSD.png
Copyright © 2015 Luis Felipe López Acevedo
Permission is granted to copy, distribute and/or modify
this work under the terms of the Creative Commons
Attribution-ShareAlike 4.0 International License.
LISP-1.5-page-13.pdf
One page from
http://www.softwarepreservation.org/projects/LISP/book/LISP%25201.5%2520Programmers%2520Manual.pdf
MIT Press: Reproduction in whole or in part is permitted for any
purpose of the of the United States Government.
Generated files:
bootstrap-graph.png
guix-build-bootstrap-tarballs.log
LISP-1.5-page-13.png
LISP-1.5-page-13-bottom.png

View File

@ -0,0 +1,27 @@
% GNU Mes --- Maxwell Equations of Software
% Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
%
% This file is part of GNU Mes.
%
% GNU Mes is free software; you can redistribute it and/or modify it
% under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 3 of the License, or (at
% your option) any later version.
%
% GNU Mes is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
\mode<presentation>
\usecolortheme{spruce}
\setbeamercolor*{structure}{fg=blue!25!white}
\setbeamercolor*{structure}{fg=MSUgreen!80!white}
\setbeamercolor{block title}{use=structure,fg=white,bg=structure.fg!75!black}
\mode
<all>

View File

@ -0,0 +1,36 @@
% GNU Mes --- Maxwell Equations of Software
% Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
%
% This file is part of GNU Mes.
%
% GNU Mes is free software; you can redistribute it and/or modify it
% under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 3 of the License, or (at
% your option) any later version.
%
% GNU Mes is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
\mode<presentation>
\setbeamertemplate{navigation symbols}{}
\newif\ifbeamer@secheader
\beamer@secheaderfalse
\DeclareOptionBeamer{secheader}{\beamer@secheadertrue}
\ProcessOptionsBeamer
\usecolortheme{X}
\useinnertheme[shadow]{rounded}
\useoutertheme{infolines}
\ifbeamer@secheader\else\setbeamertemplate{headline}[default]\fi
\mode
<all>

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

BIN
doc/talks/fosdem17/egg.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
doc/talks/fosdem17/egg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
doc/talks/fosdem17/egg.xcf Normal file

Binary file not shown.

View File

@ -0,0 +1,662 @@
#+TITLE: GNU Mes
#+TITLE: \smaller[2]{Maxwell Equations of Software}
#+DATE:2017-02-05
#+EMAIL: janneke@gnu.org
#+AUTHOR: janneke@gnu.org
#+COPYRIGHT: Jan (janneke) Nieuwenhuizen <janneke@gn.org>
#+LICENSE: GNU Free Documentation License, version 1.3 or later.
#+LATEX_HEADER:\institute{FOSDEM'17}
#+LATEX_HEADER:\def\ahref#1#2{\htmladdnormallink{#2}{#1}}
#+OPTIONS: H:2
#+LATEX_CLASS: beamer
#+LATEX_CLASS_OPTIONS: [presentation]
#+LATEX_HEADER: \usepackage{relsize}
#+LATEX_HEADER: \usepackage{hyperref}
#+latex_header: \mode<beamer>{\usetheme{X}}
#+BEAMER_THEME: X
#+BEAMER_FRAME_LEVEL: 2
#+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col) %8BEAMER_OPT(Opt)
* Mes, WHAT?
# ** TEST
# - @@beamer:<1->@@ Item 1
# - @@beamer:<2->@@ Item 2
# GNU LilyPond, Verum
# Depression: France, Netherlands, US: about 20%; 10x more than 50 years ago
** Mes: Full Source Bootstrapping
*** Bootstrapping :B_block:BMCOL:
:PROPERTIES:
:BEAMER_COL: 0.6
:END:
* Where do compilers come from?
* Who compiled the compiler?
* Chicken and Egg
*** WTF :B_block:BMCOL:
#+LATEX:\includegraphics[width=0.4\textwidth]{mes.png}
:PROPERTIES:
:BEAMER_COL: 0.3
:xBEAMER_ACT: <2->
:xBEAMER_ENV: block
:END:
*** mes: A tiny Scheme interpreter in Hex [or simple C?]
:PROPERTIES:
:BEAMER_ACT: <2->
:END:
*** mescc: A C compiler in Scheme, executed by Mes
:PROPERTIES:
:BEAMER_ACT: <3->
:END:
* Mes + CC =
#+xATTR_LATEX: :=\linewidth
#+xLATEX:\includegraphics[width=0.25\textwidth]{fsb-logo.png}
#+LATEX:\rightskip=-3cm\includegraphics[width=0.2\textwidth]{fsb-logo-guile-guix-mes.png}
* Mes, what NOT?
:PROPERTIES:
:xBEAMER_ENV: note
:END:
** Mes is a strategy
* NOT a goal in itself -- only a means or proof of concept
* NOT a general purpose Scheme -- close to R6RS
* NOT an alternative for Guile -- reuse Guile modules
* Mes, WHY?
** Inspiration: what do you want?
*** Meaning, Autonomy, Co-Creation, Self-Realization
:PROPERTIES:
:BEAMER_ACT: <2->
:END:
* Discovering, Hacking, Motivating, Playing
*** A planet of enlightened beings
:PROPERTIES:
:BEAMER_ACT: <3->
:END:
# * Awakening of consciousness
* Look inward
* Be happy
* Be helpful
*** A world where all software is free
:PROPERTIES:
:BEAMER_ACT: <4->
:END:
* Support \ahref{https://gnu.org}{GNU}
* Create free software
# * Be patient, be wise
** Inspiration: when do you want it?
*** NOW!!!
:PROPERTIES:
:BEAMER_ACT: <2->
:END:
** Inspiration
*** To finally run GNU
* GuixSD: GNU in the flesh
:PROPERTIES:
# :BEAMER_ACT: <1->
:END:
# * Michael Nielsen: \ahref{http://www.michaelnielsen.org/ddi/lisp-as-the-maxwells-equations-of-software}{Lisp as the Maxwell's Equations of Software}
# *** recap the 4 freedoms
# :PROPERTIES:
# :BEAMER_ACT: <3->
# :END:
** 1941: The \ahref{https://en.wikipedia.org/wiki/Four_Freedoms}{Four Freedoms}
:PROPERTIES:
:BEAMER_ENV: note
:END:
*** for all people on our planet
* Freedom of speech
* Freedom of worship
* Freedom from want
* Freedom from fear
-- Franklin D. Roosevelt
** 1984 Four Software Freedoms: GNU GPL
:PROPERTIES:
:xBEAMER_ENV: note
:END:
*** The freedom to
* 0 run the program as you wish, for any purpose
* 1 study how the program works, and change it if you wish
* 2 redistribute copies so you can help your neighbor
* 3 share copies of your modified versions with others
-- Richard M. Stallman
# 1: Access to the source code is a precondition for this.
# 3: By doing this you can give the whole community a chance to benefit
# from your changes. Access to the source code is a precondition for
# this.
** 2013 Debian's \ahref{https://reproducible-builds.org}{reproducible-builds.org}
*** Verifiable path: source -> binary
Reproducible builds are a set of software development practices that
create a verifiable path from human readable source code to the binary
code used by computers.
*** Does this binary come from the given source?
* Always different binary...dunno?
* Same binary
* Always good, always bad?
** 2015 GuixSD \ahref{https://www.gnu.org/software/guix/news/reproducible-builds-a-means-to-an-end.html}{Reproducible builds: a means to an end}
# GNU Guix is committed to improving the freedom and autonomy of
# computer users. This obviously manifests in the fact that GuixSD is a
# fully free distro, and this is what GNU stands for. All the packages
# in Guix are built from source, including things like firmware where
# there is an unfortunate tendency to use pre-built binaries; that way,
# users can know what software they run. On the technical side, Guix
# also tries hard to empower users by making the whole system as
# hackable as possible, in a uniform way—making Freedom #1 practical, à
# la Emacs.
*** A technical means to an end
* guarantee user autonomy and safety
* GNU+GuixSD: fully free distro
* NixOS: fully isolated build environment
* NixOS: full list of dependencies
* reproducible builds: bit-for-bit identical binaries
-- Ludovic Courtès
** 2016 From GuixSD to Mes: The bootstrap binaries
*** GuixSD ... source
* source/binary transparency
* all is built from source
* *EVERYTHING*
* starting from the ... *bootstrap binaries*
The distribution is fully “bootstrapped” and “self-contained”: each
package is built based solely on other packages in the distribution.
The root of this dependency graph is a small set of “bootstrap
binaries”, provided by the (gnu packages bootstrap) module. For more
information on bootstrapping, *note Bootstrapping::.
[2010]: Eelco Dolstra, Andres Löh, and Nicolas Pierron described
sources of non-determinism in their 2010 JFP paper about NixOS
** GuixSD bootstrap graph
#+LATEX:\includegraphics[width=0.8\textwidth]{bootstrap-graph.png}
** GuixSD bootstrap tarballs
#+BEGIN_SRC bash
$ du -schx $(readlink $(guix build bootstrap-tarballs)/*)
2.1M /gnu/store/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27/binutils-static-stripped-2.27-x86_64-linux.tar.xz
16M /gnu/store/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4/gcc-stripped-4.9.4-x86_64-linux.tar.xz
1.7M /gnu/store/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24/glibc-stripped-2.24-x86_64-linux.tar.xz
3.1M /gnu/store/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12/guile-static-stripped-2.0.12-x86_64-linux.tar.xz
5.7M /gnu/store/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0/static-binaries-0-x86_64-linux.tar.xz
28M total
$ for i in $(readlink $(guix build bootstrap-tarballs)/*);\
do sudo tar xf $i; done
$ du -schx *
125M bin
13M include
18M lib
43M libexec
4.3M share
202M total
#+END_SRC
** Inspiration
*** To finally run GNU
:PROPERTIES:
:BEAMER_ACT: <1->
:END:
* GuixSD: GNU in the flesh
*** Bootstrap binaries: source all the way down?
:PROPERTIES:
:BEAMER_ACT: <1->
:END:
* OriansJ: \ahref{https://github.com/oriansj/stage0}{self-hosting hex assembler}
*** The computer revolution hasn't happened yet
:PROPERTIES:
:BEAMER_ACT: <2->
:END:
* Alan Kay
The computer revolution is very new, and all of the good ideas have
not been universally implemented
** Bootstrapping: Chicken and Egg
#+LATEX:\includegraphics[width=0.3\textwidth]{egg.png}
** Inspiration
*** To finally run GNU
:PROPERTIES:
:BEAMER_ACT: <1->
:END:
* GuixSD: GNU in the flesh
*** Bootstrap binaries: source all the way down?
:PROPERTIES:
:BEAMER_ACT: <1->
:END:
* OriansJ: \ahref{https://github.com/oriansj/stage0}{self-hosting hex assembler}
*** The computer revolution hasn't happened yet
:PROPERTIES:
:BEAMER_ACT: <1->
:END:
* Alan Kay
The computer revolution is very new, and all of the good ideas have
not been universally implemented
*** \ahref{http://queue.acm.org/detail.cfm?id=1039523}{LISP as the Maxwell's Equations of Software}
:PROPERTIES:
:BEAMER_ACT: <1->
:END:
That was the big revelation to me when I [..] finally understood that
the half page of code on the bottom of page 13 of the Lisp 1.5 manual
was Lisp in itself. These were “Maxwells Equations of Software!”
* \ahref{http://www.softwarepreservation.org/projects/LISP/book/LISP\%25201.5\%2520Programmers\%2520Manual.pdf}{LISP-1.5}: page 13
** Chicken and Egg
* the shortest path from hex to gcc
* using Maxwell's Equations of Software
** Bootstrapping: Chicken and Egg
#+LATEX:\includegraphics[width=0.3\textwidth]{mes.png}
* Mes: HOW?
** LISP-1.5 John McCarthy: page 13
# convert -density 150 -quality 100 -flatten -sharpen 0x1.0 LISP-1.5-page-13.pdf LISP-1.5-page-13.png
#+BEGIN_COMMENT
[[file:LISP-1-5-page-13-bottom.png][LISP-1.5 page 13 bottom]]
#+END_COMMENT
#+ATTR_LATEX: :width=\linewidth
#+LATEX:\includegraphics[width=\textwidth]{LISP-1-5-page-13-bottom.png}
** Eval/Apply
* core
* apply
* eval
* helpers
* assoc
* pairlis
* evcon
* evlis
* primitives
* atom
* car
* cdr
* cons
* eq
** LISP-1.5 in Guile Scheme: APPLY
#+BEGIN_SRC scheme
(define (apply fn x a)
(cond
((atom fn)
(cond
((eq fn CAR) (caar x))
((eq fn CDR) (cdar x))
((eq fn CONS) (cons (car x) (cadr x)))
((eq fn ATOM) (atom (car x)))
((eq fn EQ) (eq (car x) (cadr x)))
(#t (apply (eval fn a) x a))))
((eq (car fn) LAMBDA)
(eval (caddr fn) (pairlis (cadr fn) x a)))
((eq (car fn) LABEL)
(apply (caddr fn) x (cons (cons (cadr fn)
(caddr fn))
a)))))
#+END_SRC
** LISP-1.5 in Guile Scheme: EVAL
#+BEGIN_SRC scheme
(define (eval e a)
(cond
((atom e) (cdr (assoc e a)))
((atom (car e))
(cond ((eq (car e) QUOTE) (cadr e))
((eq (car e) COND) (evcon (cdr e) a))
(#t (apply (car e)
(evlis (cdr e) a) a))))
(#t (apply (car e) (evlis (cdr e) a) a))))
#+END_SRC
** LISP-1.5 in Scheme: ASSOC, PAIRLIS, EVCON, EVLIS
#+BEGIN_SRC scheme
(define (assoc x a)
(cond ((eq (caar a) x) (car a))
(#t (assoc x (cdr a)))))
(define (pairlis x y a)
(cond ((null x) a)
(#t (cons (cons (car x) (car y))
(pairlis (cdr x) (cdr y) a)))))
(define (evcon c a)
(cond ((eval (caar c) a) (eval (cadar c) a))
(#t (evcon (cdr c) a))))
(define (evlis m a)
(cond ((null m) NIL)
(#t (cons (eval (car m) a) (evlis (cdr m) a)))))
#+END_SRC
** LISP-1.5 in C
* closures
* symbols
* specials? =()= =#t= =#f= =*unspecified*= =*undefined*=
* macros
* syntax-rules
* records
* modules/importing
** Garbage/Jam Collector
*** Abelson & Sussman
With a real computer we will eventually run out of free
space in which to construct new pairs.(1)
*** footnote(1)
This may not be true eventually, because memories may get large
enough so that it would be impossible to run out of free memory in the
lifetime of the computer. For example, there are about {3\cdot10^{13}}
microseconds in a year, so if we were to cons once per microsecond we
would need about 10^{15} cells of memory to build a machine that could
operate for 30 years without running out of memory.
** C parser: roll your own LALR
*** Lalr
* minimal ANSI-C parser
=int main (){puts ("Hello, world!");return 0;}=
** C parser: Nyacc
*** Pros
* full C99 parser
* ...including C pre-processor
* perspective of building complete C compiler in Guile
* tsunami of enthusiasm and contributors!
** C parser: Nyacc
*** Cons: more TODO for Mes
* keywords
* =define*=, =lambda*=
* optargs
* exeptions, =catch=, =throw=
* =call/cc=
* fluids, =with-fluid=
* =syntax-case=
* André van Tonder's 2006-2007 streak in 14 "commits"
* psyntax: another bootstrap loop?!
* R7RS's Ellipsis
* Guile-1.8
* =#;=-comments
* =#||#=-comments
** C parser: Nyacc
*** Cons: more TODO for Mes
* Cond supports ==>=
* Bugfixes
* Cond now evaluates its test clauses only once
* Append can also handle one argument
* For-each now supports 2 list arguments
* Map now supports 3 list arguments
* Backslash in string is supported
* Closure is not a pair
* All standard characters are supported
* 36 new functions
#+BEGIN_SRC scheme
1+, 1-, abs, and=>, append-reverse, ash, char<\=?, char<?,
char>=?, char>?, even?, filter, delete, delq, vector-copy,
fold, fold-right, getenv, iota, keyword->symbol list-head,
list-tail, negative?, odd?, positive?, remove!, remove,
string->number, string-copy, string-prefix?, string=,
string=?, symbol->keyword symbol-append, symbol-prefix?,
unless, write, zero?
#+END_SRC
* Mes: WHERE?
** Timeline
*** June 19: \ahref{https://lists.gnu.org/archive/html/guile-user/2016-06/msg00061.html}{on bootstrapping: introducing Mes}
# https://gnunet.org/bot/log/guile/2016-05-19
* LISP-1.5 in Scheme and in C
*** September 25: \ahref{https://lists.gnu.org/archive/html/guile-user/2016-09/msg00061.html}{on bootstrapping: 2nd status report on Mes}
# https://gnunet.org/bot/log/guile/2016-09-25
* Scheme primitives in C, closures, macros, 97 tests, LALR
* Produce ELF binary from
#+BEGIN_SRC C
int main ()
{
int i;
puts ("Hi Mes!\n");
for (i = 0; i < 4; ++i)
puts (" Hello, world!\n");
return 1;
}
#+END_SRC
* in 1'20"
** Timeline
*** October 23: 0.1 [not announced]
* =let-syntax=, =match=
* compile main.c in 2s (was 1'20")
* add REPL
*** November 21: 0.2 [not announced]
* psyntax integration, =syntax-case=, =load=
*** December 12: \ahref{https://lists.gnu.org/archive/html/guile-user/2016-12/msg00008.html}{on bootstrapping: first Mes 0.3 released}
# https://gnunet.org/bot/log/guile/2016-12-12
* Garbage Collector/Jam Scraper
*** December 25: \ahref{https://lists.gnu.org/archive/html/guile-user/2016-12/msg00041.html}{Mes 0.4 released}
# https://gnunet.org/bot/log/guile/2016-12-25
* run Nyacc, PEG, reduced core
** Status
*** core C prototype: 1150 lines
*** non-essential C sources:
#+BEGIN_SRC bash
210 lib.c
157 math.c
126 posix.c
134 reader.c
627 total
#+END_SRC
** Status
*** tiny-mes.c: 270 lines
* compiles with mescc
* i386-lib: =i386:exit=, =i3886:open=, =i386:read=, =i386:write=
* tiny-libc: =getchar=, =putchar=, =puts=, =strcmp=, =strlen=
* runs
#+BEGIN_SRC bash
Hello tiny-mes!
reading: module/mes/hack-32.mo
MES *GOT MES*
(#\A(#\B))
#+END_SRC
** Status
*** mini-mes.c: 800 lines
* 12kB binary
* 2500 lines assembly
* runs with gcc
#+BEGIN_SRC bash
Hello mini-mes!
reading: module/mes/hack-32.mo
MES *GOT MES*
cells read: 19
symbols: 1
program[10]: (cons(0(1)))
(0 . 1)
#+END_SRC
* compiles with mescc
* 83 statements skipped
** Status
*** current Guix package
#+BEGIN_SRC bash
01:16:51 janneke@dundal:~/src/mes
$ guix package -f guix.scm
The following package will be upgraded:
mes 0.4.f84e97fc -> 0.4.f84e97fc /gnu/store/2fsy1cd24pnwkv7a1zd0anzk3zz8ysdn-mes-0.4.f84e97fc
#+END_SRC
** Misc
:PROPERTIES:
:BEAMER_ENV: note
:END:
civodul
Impressive!
Is it a goal to try interpret a language as close as possible to that of
Guile, and have the same libraries? I guess that could help in the
future: we could use (system base lalr), nyacc, etc.
Also, currently theres approximately 2K lines of C. How do you plan to
make sure that it doesnt grow over time, or even that it shrinks? :-)
This all sounds very promising, thanks a lot!
arnebab
This is really cool! Thank you for your work!
> How do you compile the interpreter?
paroneayea/cwebber
First, I'm really excited you're making progress on Mes!
> Second, Scheme48 did something similar to this, called "Pre-Scheme",
which is how they bootstrapped Scheme48 iirc. Have you heard of it or
looked at it?
https://en.wikipedia.org/wiki/PreScheme
* PreScheme in Scheme48
* \ahref{http://canonical.org/~kragen/sw/urscheme/}{Ur-Scheme}
R5RS to x86 Assembly
** What's next?
* psyntax
* source or binary?
* alternative syntax-case?
* rewrite Nyacc without syntax-case, R7RS-ellipsis?
* call/cc vs eval/apply/evlis?
* merge with Guile?
* compile Guile or compile Gcc?
* prototype? in C
* move from C to Hex?
* move from C to [Pre]Scheme
** Thanks
*** Thanks :B_block:BMCOL:
:PROPERTIES:
:BEAMER_COL: 0.48
:BEAMER_ENV: block
:END:
* John McCarthy
* Richard Stallman
* Eelco Dolstra
* Ludovic Courtès
* Rutger van Beusekom
* Christopher A. Webber
*** Thanks everyone else :B_block:BMCOL:
:PROPERTIES:
:BEAMER_COL: 0.48
:xBEAMER_ACT: <2->
:BEAMER_ENV: block
:END:
* LISP-1.5
* GNU
* NixOS
* Debian reproducible builds
* GuixSD
* FOSDEM
*** Connect
* irc freenode.net [[irc://guix@freenode.net][#guix]] [[irc://guile@freenode.net][#guile]]
* mail [[mailto://guile-user@gnu.org][guile-user@gnu.org]]
* git [[https://gitlab.com/janneke/mes][git@gitlab.com:janneke/mes.git]]
# * Copying
# :PROPERTIES:
# :COPYING: t
# :END:
# Copyright \copy 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
# C-c C-e l b (org-beamer-export-to-latex)
# C-c C-e l P (org-beamer-export-to-pdf)
* Legalese
:PROPERTIES:
:COPYING: t
:END:
Copyright \copy 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#+BEGIN_QUOTE
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover Texts,
and with no Back-Cover Texts.
#+END_QUOTE

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

View File

@ -0,0 +1,44 @@
11:12:26 janneke@dundal:~/src/mes/doc
$ guix build bootstrap-tarballs
substitute: updating list of substitutes from 'http://mirror.hydra.gnu.org'... 100.0%
The following files will be downloaded:
/gnu/store/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0
/gnu/store/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4
/gnu/store/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0
/gnu/store/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27
/gnu/store/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24
/gnu/store/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12
@ substituter-started /gnu/store/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute
Downloading http://mirror.hydra.gnu.org/nar/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27 (2.0MiB installed)...
binutils-static-stripped-tarball-2.27 3.5MiB/s 00:01 | 2.0MiB transferred
@ substituter-succeeded /gnu/store/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27
@ substituter-started /gnu/store/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute
Downloading http://mirror.hydra.gnu.org/nar/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4 (15.5MiB installed)...
gcc-stripped-tarball-4.9.4 4.0MiB/s 00:04 | 15.5MiB transferred
@ substituter-succeeded /gnu/store/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4
@ substituter-started /gnu/store/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute
Downloading http://mirror.hydra.gnu.org/nar/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24 (1.6MiB installed)...
glibc-stripped-tarball-2.24 697KiB/s 00:02 | 1.6MiB transferred
@ substituter-succeeded /gnu/store/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24
@ substituter-started /gnu/store/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute
Downloading http://mirror.hydra.gnu.org/nar/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12 (3.1MiB installed)...
guile-static-stripped-tarball-2.0.12 3.2MiB/s 00:01 | 3.1MiB transferred
@ substituter-succeeded /gnu/store/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12
@ substituter-started /gnu/store/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute
Downloading http://mirror.hydra.gnu.org/nar/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0 (5.7MiB installed)...
static-binaries-tarball-0 4.1MiB/s 00:01 | 5.7MiB transferred
@ substituter-succeeded /gnu/store/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0
@ substituter-started /gnu/store/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute
Downloading http://mirror.hydra.gnu.org/nar/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0 (2KiB installed)...
bootstrap-tarballs-0 385KiB/s 00:00 | 520B transferred
@ substituter-succeeded /gnu/store/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0
/gnu/store/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0
12:05:09 janneke@dundal:~/src/mes/doc
$ 12:05:09 janneke@dundal:~/src/mes/doc
$

BIN
doc/talks/fosdem17/mes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
doc/talks/fosdem17/mes.xcf Normal file

Binary file not shown.

BIN
doc/talks/fosdem19/Guix.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -0,0 +1 @@
../fosdem17/LISP-1-5-page-13-bottom.png

View File

@ -0,0 +1,27 @@
% GNU Mes --- Maxwell Equations of Software
% Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
%
% This file is part of GNU Mes.
%
% GNU Mes is free software; you can redistribute it and/or modify it
% under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 3 of the License, or (at
% your option) any later version.
%
% GNU Mes is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
\mode<presentation>
\usecolortheme{spruce}
\setbeamercolor*{structure}{fg=blue!25!white}
\setbeamercolor*{structure}{fg=MSUgreen!80!white}
\setbeamercolor{block title}{use=structure,fg=white,bg=structure.fg!75!black}
\mode
<all>

View File

@ -0,0 +1,36 @@
% GNU Mes --- Maxwell Equations of Software
% Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
%
% This file is part of GNU Mes.
%
% GNU Mes is free software; you can redistribute it and/or modify it
% under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 3 of the License, or (at
% your option) any later version.
%
% GNU Mes is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
\mode<presentation>
\setbeamertemplate{navigation symbols}{}
\newif\ifbeamer@secheader
\beamer@secheaderfalse
\DeclareOptionBeamer{secheader}{\beamer@secheadertrue}
\ProcessOptionsBeamer
\usecolortheme{X}
\useinnertheme[shadow]{rounded}
\useoutertheme{infolines}
\ifbeamer@secheader\else\setbeamertemplate{headline}[default]\fi
\mode
<all>

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 936 KiB

View File

@ -0,0 +1 @@
../fosdem17/bootstrap-graph.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

1
doc/talks/fosdem19/egg.png Symbolic link
View File

@ -0,0 +1 @@
../fosdem17/egg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -0,0 +1 @@
../fosdem17/fsb-logo-guile-guix-mes.png

View File

@ -0,0 +1,92 @@
digraph "Guix bag" {
node[width=1,height=0.25];
edge [height=0.25];
dpi=75
# "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [fontcolor = red]
//HANDCRAFTED UNTIL HERE TO BE ABLE TO CUSTOMIZE
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" [label = "gcc-mesboot0@2.95.3", shape = box, fontname = Helvetica];
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" [color = darkgoldenrod];
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" [color = darkgoldenrod];
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" [color = darkgoldenrod];
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkgoldenrod];
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" [color = darkgoldenrod];
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkgoldenrod];
"/gnu/store/mywrsxmbsz9k87z755mnymmpdjv0jvf1-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" [color = darkgoldenrod];
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = Helvetica];
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" [color = peachpuff4];
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4];
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" [color = peachpuff4];
"/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" [color = peachpuff4];
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica];
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" -> "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" [color = red];
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" -> "/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" [color = red];
"/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red];
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" [label = "mes-boot@0.19", shape = box, fontname = Helvetica];
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = darkseagreen];
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
"/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" -> "/gnu/store/629yzay882kh1yhpqddps2psfhpjrk2q-bootstrap-mes-0.19.drv" [color = darkseagreen];
# "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" -> "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [color = darkseagreen];
"/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica];
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [label = "bootstrap-binaries@0", shape = box, fontname = Helvetica];
"/gnu/store/629yzay882kh1yhpqddps2psfhpjrk2q-bootstrap-mes-0.19.drv" [label = "bootstrap-mes@0.19", shape = box, fontname = Helvetica];
# "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [label = "guile-bootstrap@2.0", shape = box, fontname = Helvetica];
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" [label = "tcc-boot0@0.9.26-5.c7b3f59", shape = box, fontname = Helvetica];
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" [color = dimgrey];
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = dimgrey];
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/629yzay882kh1yhpqddps2psfhpjrk2q-bootstrap-mes-0.19.drv" [color = dimgrey];
# "/gnu/store/kd9ly1185dn9z1mbkn0wd2r3fcv1bkw5-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/gz3agxnnlgkafw2c8jnvk2hqmlh85pkc-guile-bootstrap-2.0.drv" [color = dimgrey];
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica];
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" -> "/gnu/store/pa9s0y0dx6a60a72434syb1zfxgmqilr-mes-boot-0.19.drv" [color = blue];
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" [color = blue];
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
"/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" [color = blue];
"/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica];
"/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" [color = blue];
"/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" [label = "gcc-core-mesboot@2.95.3", shape = box, fontname = Helvetica];
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen];
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/7lcpxky7sn4c9c86ywri6y3x2d4681iv-tcc-boot-0.9.27.drv" [color = darkseagreen];
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" [color = darkseagreen];
"/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" [color = darkseagreen];
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" [label = "glibc-mesboot0@2.2.5", shape = box, fontname = Helvetica];
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/fh33abhfvsdgdrg54m86yhmkihfp1g2j-binutils-mesboot0-2.20.1a.drv" [color = blue];
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/52nz2cbswm4n91707gy8945h2s4jgvfb-gcc-core-mesboot-2.95.3.drv" [color = blue];
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/qf1x4bvxg8ihbgmv57yyiwkj5y8zzmk0-diffutils-mesboot-2.7.drv" [color = blue];
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.19.drv" [color = blue];
"/gnu/store/rn88dllv6vh4mxwbr4v9wjmnl4ml3xs2-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/vys62fkr9p3qfp9mc36456ffbpz24n60-make-mesboot0-3.80.drv" [color = blue];
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.19.drv" [label = "mesboot-headers@0.19", shape = box, fontname = Helvetica];
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.19.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = cyan3];
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.19.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = cyan3];
"/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [label = "linux-libre-headers-bootstrap@0", shape = box, fontname = Helvetica];
// HANDCRAFTED FROM HERE TO MAKE THE STATIC BOOTSTRAP BINARIES VISIBLE
bash [fontname = Helvetica]
bzip2 [fontname = Helvetica]
coreutils [fontname = Helvetica]
gawk [fontname = Helvetica]
grep [fontname = Helvetica]
gzip [fontname = Helvetica]
patch [fontname = Helevtica]
sed [fontname = Helvetica]
tar [fontname = Helvetica]
xz [fontname = Helevtica]
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> bash
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> bzip2
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> coreutils
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> gawk
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> grep
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> gzip
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> patch
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> sed
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> tar
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" -> xz
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

BIN
doc/talks/fosdem19/gcc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

1
doc/talks/fosdem19/mes.png Symbolic link
View File

@ -0,0 +1 @@
../fosdem17/mes.png

View File

@ -0,0 +1,107 @@
digraph {
node[shape=box,width=1,height=0.25];
edge [height=0.25];
"hex0-monitor" [label = "hex0 Monitor", color = black, shape = box];
"hex0-assembler" [label = "hex0 Assembler", color = black, shape = box];
"SET" [label = "SET editor", color = cyan3, shape = box];
# "hex1-assembler" [label = "hex1 Assembler", color = black, shape = box];
# "hex2-assembler" [label = "hex2 Assembler", color = black, shape = box];
# "M1-Macro" [label = "M1 Macro assembler", color = black, shape = box];
# "cat" [label = "cat", color = cyan3, shape = box];
# "Slow_Lisp" [label = "Slow Lisp", color = green3, shape = box];
# "Stage0-FORTH" [label = "Stage0 FORTH", color = green3, shape = box];
# "cc_x86" [label = "cc_x86", color = black, shape = box];
# "M2-Planet" [label = "M2-PLanet", color = black, shape = box];
# "M2-Moon" [label = "M2-Moon", color = red1, shape = box];
# "mescc-tools-seed" [label = "mescc-tools-seed", color = black, shape = box];
# "?" [label = "?", color = red1, shape = box];
# "bootstrap-binaries" [label = "bootstrap-binaries", color=red1, shape = box];
# "mescc-tools" [label = "mescc-tools", color = black, shape = box];
# "Mes C Lib.M2" [label = "Mes C Lib.M2", color = red1, shape = box];
# "mes.M2" [label = "mes.M2", color = red1, shape = box];
# "mescc" [label = "mescc", color = black, shape = box];
# "Mes C Lib +tcc" [label = "Mes C Lib +tcc", color = black, shape = box];
# "tcc" [label = "tcc", color = black, shape = box];
# "Mes C Lib +GNU" [label = "Mes C Lib +GNU", color = black, shape = box];
# "gcc-core 2.95.3" [label = "gcc-core 2.95.3", color = black, shape = box];
# "glibc 2.2.5" [label = "glibc 2.2.5", color = black, shape = box];
# "gcc 2.95.3" [label = "gcc 2.95.3", color = black, shape = box];
# "glibc 2.16" [label = "glibc 2.16", color = black, shape = box];
# "gcc 4.7.4" [label = "gcc 4.7.4", color = black, shape = box];
"SET" -> "hex0-monitor" [color = cyan3];
"hex0-assembler" -> "hex0-monitor" [color = black];
"hex1-assembler" -> "hex0-assembler" [color = black];
# "hex2-assembler" -> "hex1-assembler" [color = black];
# "M1-Macro" -> "hex2-assembler" [color = black];
# "cat" -> "M1-Macro" [color = cyan3];
# "Slow_Lisp" -> "M1-Macro" [color = green3];
# "Stage0-FORTH" -> "M1-Macro" [color = green3];
# "cc_x86" -> "M1-Macro" [color = black];
# "M2-Planet" -> "cc_x86" [color = black];
# "M2-Moon" -> "M1-Macro" [color = red1];
# "mescc-tools-seed" -> "cc_x86" [color = black];
# "mescc-tools" -> "mescc-tools-seed" [color = black];
# "mescc-tools" -> "M2-Planet" [color = black];
# "Mes C Lib.M2" -> "mescc-tools" [color = red1];
# "Mes C Lib.M2" -> "M2-Planet" [color = red1];
# "mes.M2" -> "mescc-tools" [color = red1];
# "mes.M2" -> "Mes C Lib.M2" [color = red1];
# "mes.M2" -> "M2-Planet" [color = red1];
# "mescc" -> "mes.M2" [color = black];
# "Mes C Lib +tcc" -> "mes.M2" [color = red1];
# "tcc" -> "Mes C Lib +tcc" [color = black];
# "tcc" -> "bootstrap-binaries" [color = black];
# "tcc" -> "mescc" [color = black];
# "gcc-core 2.95.3" -> "Mes C Lib +GNU " [color = black];
# "gcc-core 2.95.3" -> "bootstrap-binaries" [color = black];
# "gcc-core 2.95.3" -> "tcc" [color = black];
# "make" -> "Mes C Lib +GNU" [color = black];
# "make" -> "tcc" [color = black];
# "make" -> "bootstrap-binaries" [color = black];
# "glibc 2.2.5" -> "gcc-core 2.95.3" [color = black];
# "glibc 2.2.5" -> "binutils" [color = black];
# "glibc 2.2.5" -> "Mes C Lib +GNU" [color = black];
# "glibc 2.2.5" -> "make" [color = black];
# "glibc 2.2.5" -> "bootstrap-binaries" [color = black];
# "gcc 2.95.3" -> "gcc-core 2.95.3" [color = black];
# "gcc 2.95.3" -> "binutils" [color = black];
# "gcc 2.95.3" -> "glibc 2.2.5" [color = black];
# "gcc 2.95.3" -> "make" [color = black];
# "gcc 2.95.3" -> "bootstrap-binaries" [color = black];
# "glibc 2.16" -> "glibc 2.2.5" [color = black];
# "glibc 2.16" -> "binutils" [color = black];
# "glibc 2.16" -> "gcc 2.95.3" [color = black];
# "glibc 2.16" -> "make" [color = black];
# "glibc 2.16" -> "bootstrap-binaries" [color = black];
# "gcc 4.7.4" -> "glibc 2.16" [color = black];
# "gcc 4.7.4" -> "binutils" [color = black];
# "gcc 4.7.4" -> "gcc 2.95.3" [color = black];
# "gcc 4.7.4" -> "make" [color = black];
# "gcc 4.7.4" -> "bootstrap-binaries" [color = black];
node [shape=plaintext]
subgraph cluster_01 {
key [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0">
<tr><td align="left"><font color="black">black</font></td><td align="left">done, essential</td></tr>
<tr><td align="left"><font color="cyan3">cyan</font></td><td align="left">done, optional</td></tr>
<!--
<tr><td align="left"><font color="green3">green</font></td><td align="left">done, undecided</td></tr>
<tr><td align="left"><font color="red1">red</font></td><td align="left">in progress, essential</td></tr>
<tr><td align="left"><font color="orange">orange</font></td><td align="left">in progress, undecided</td></tr>
!-->
</table>>]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,103 @@
digraph {
node[shape=box,width=1,height=0.25];
edge [height=0.25];
# "hex0-monitor" [label = "hex0 Monitor", color = black, shape = box];
# "hex0-assembler" [label = "hex0 Assembler", color = black, shape = box];
# "SET" [label = "SET editor", color = black, shape = box];
"hex1-assembler" [label = "hex1 Assembler", color = black, shape = box];
"hex2-assembler" [label = "hex2 Assembler", color = black, shape = box];
"M1-Macro" [label = "M1 Macro assembler", color = black, shape = box];
"cat" [label = "cat", color = cyan3, shape = box];
"Slow_Lisp" [label = "Slow Lisp", color = green3, shape = box];
"Stage0-FORTH" [label = "Stage0 FORTH", color = green3, shape = box];
"cc_x86" [label = "cc_x86", color = black, shape = box];
"M2-Planet" [label = "M2-PLanet", color = black, shape = box];
"M2-Moon" [label = "M2-Moon", color = orange, shape = box];
# "mescc-tools-seed" [label = "mescc-tools-seed", color = black, shape = box];
# "?" [label = "?", color = red1, shape = box];
# "bootstrap-binaries" [label = "bootstrap-binaries", color=red1, shape = box];
# "mescc-tools" [label = "mescc-tools", color = black, shape = box];
# "Mes C Lib.M2" [label = "Mes C Lib.M2", color = red1, shape = box];
# "mes.M2" [label = "mes.M2", color = red1, shape = box];
# "mescc" [label = "mescc", color = black, shape = box];
# "Mes C Lib +tcc" [label = "Mes C Lib +tcc", color = black, shape = box];
# "tcc" [label = "tcc", color = black, shape = box];
# "Mes C Lib +GNU" [label = "Mes C Lib +GNU", color = black, shape = box];
# "gcc-core 2.95.3" [label = "gcc-core 2.95.3", color = black, shape = box];
# "glibc 2.2.5" [label = "glibc 2.2.5", color = black, shape = box];
# "gcc 2.95.3" [label = "gcc 2.95.3", color = black, shape = box];
# "glibc 2.16" [label = "glibc 2.16", color = black, shape = box];
# "gcc 4.7.4" [label = "gcc 4.7.4", color = black, shape = box];
# "SET" -> "hex0-monitor" [color = cyan3];
# "hex0-assembler" -> "hex0-monitor" [color = black];
# "hex1-assembler" -> "hex0-assembler" [color = black];
"hex2-assembler" -> "hex1-assembler" [color = black];
"M1-Macro" -> "hex2-assembler" [color = black];
"cat" -> "M1-Macro" [color = cyan3];
"Slow_Lisp" -> "M1-Macro" [color = green3];
"Stage0-FORTH" -> "M1-Macro" [color = green3];
"cc_x86" -> "M1-Macro" [color = black];
"M2-Planet" -> "cc_x86" [color = black];
"M2-Moon" -> "M1-Macro" [color = orange];
# "mescc-tools-seed" -> "cc_x86" [color = black];
# "mescc-tools" -> "mescc-tools-seed" [color = black];
# "mescc-tools" -> "M2-Planet" [color = black];
# "mes.M2" -> "mescc-tools" [color = red1];
# "mes.M2" -> "Mes C Lib.M2" [color = red1];
# "mes.M2" -> "M2-Planet" [color = red1];
# "mescc" -> "mes.M2" [color = black];
# "Mes C Lib +tcc" -> "mes.M2" [color = red1];
# "tcc" -> "Mes C Lib +tcc" [color = black];
# "tcc" -> "bootstrap-binaries" [color = black];
# "tcc" -> "mescc" [color = black];
# "gcc-core 2.95.3" -> "Mes C Lib +GNU " [color = black];
# "gcc-core 2.95.3" -> "bootstrap-binaries" [color = black];
# "gcc-core 2.95.3" -> "tcc" [color = black];
# "make" -> "Mes C Lib +GNU" [color = black];
# "make" -> "tcc" [color = black];
# "make" -> "bootstrap-binaries" [color = black];
# "glibc 2.2.5" -> "gcc-core 2.95.3" [color = black];
# "glibc 2.2.5" -> "binutils" [color = black];
# "glibc 2.2.5" -> "Mes C Lib +GNU" [color = black];
# "glibc 2.2.5" -> "make" [color = black];
# "glibc 2.2.5" -> "bootstrap-binaries" [color = black];
# "gcc 2.95.3" -> "gcc-core 2.95.3" [color = black];
# "gcc 2.95.3" -> "binutils" [color = black];
# "gcc 2.95.3" -> "glibc 2.2.5" [color = black];
# "gcc 2.95.3" -> "make" [color = black];
# "gcc 2.95.3" -> "bootstrap-binaries" [color = black];
# "glibc 2.16" -> "glibc 2.2.5" [color = black];
# "glibc 2.16" -> "binutils" [color = black];
# "glibc 2.16" -> "gcc 2.95.3" [color = black];
# "glibc 2.16" -> "make" [color = black];
# "glibc 2.16" -> "bootstrap-binaries" [color = black];
# "gcc 4.7.4" -> "glibc 2.16" [color = black];
# "gcc 4.7.4" -> "binutils" [color = black];
# "gcc 4.7.4" -> "gcc 2.95.3" [color = black];
# "gcc 4.7.4" -> "make" [color = black];
# "gcc 4.7.4" -> "bootstrap-binaries" [color = black];
node [shape=plaintext]
subgraph cluster_01 {
key [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0">
<tr><td align="left"><font color="black">black</font></td><td align="left">done, essential</td></tr>
<tr><td align="left"><font color="cyan3">cyan</font></td><td align="left">done, optional</td></tr>
<tr><td align="left"><font color="green3">green</font></td><td align="left">done, undecided</td></tr>
<!-- <tr><td align="left"><font color="red1">red</font></td><td align="left">in progress, essential</td></tr>
!-->
<tr><td align="left"><font color="orange">orange</font></td><td align="left">in progress, undecided</td></tr>
</table>>]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -0,0 +1,108 @@
digraph {
node[shape=box,width=1,height=0.25];
edge [height=0.25];
# "hex0-monitor" [label = "hex0 Monitor", color = black, shape = box];
# "hex0-assembler" [label = "hex0 Assembler", color = black, shape = box];
# "SET" [label = "SET editor", color = cyan3, shape = box];
# "hex1-assembler" [label = "hex1 Assembler", color = black, shape = box];
# "hex2-assembler" [label = "hex2 Assembler", color = black, shape = box];
# "M1-Macro" [label = "M1 Macro assembler", color = black, shape = box];
# "cat" [label = "cat", color = cyan3, shape = box];
# "Slow_Lisp" [label = "Slow Lisp", color = green3, shape = box];
# "Stage0-FORTH" [label = "Stage0 FORTH", color = green3, shape = box];
"cc_x86" [label = "cc_x86", color = black, shape = box];
"M2-Planet" [label = "M2-PLanet", color = black, shape = box];
"M2-Moon" [label = "M2-Moon", color = orange, shape = box];
# "mescc-tools-seed" [label = "mescc-tools-seed", color = black, shape = box];
# "?" [label = "?", color = red1, shape = box];
# "bootstrap-binaries" [label = "bootstrap-binaries", color=red1, shape = box];
"mescc-tools" [label = "mescc-tools", color = black, shape = box];
"Mes C Lib.M2" [label = "Mes C Lib.M2", color = red1, shape = box];
"mes.M2" [label = "mes.M2", color = red1, shape = box];
# "mescc" [label = "mescc", color = black, shape = box];
# "Mes C Lib +tcc" [label = "Mes C Lib +tcc", color = black, shape = box];
# "tcc" [label = "tcc", color = black, shape = box];
# "Mes C Lib +GNU" [label = "Mes C Lib +GNU", color = black, shape = box];
# "gcc-core 2.95.3" [label = "gcc-core 2.95.3", color = black, shape = box];
# "glibc 2.2.5" [label = "glibc 2.2.5", color = black, shape = box];
# "gcc 2.95.3" [label = "gcc 2.95.3", color = black, shape = box];
# "glibc 2.16" [label = "glibc 2.16", color = black, shape = box];
# "gcc 4.7.4" [label = "gcc 4.7.4", color = black, shape = box];
# "SET" -> "hex0-monitor" [color = cyan3];
# "hex0-assembler" -> "hex0-monitor" [color = black];
# "hex1-assembler" -> "hex0-assembler" [color = black];
# "hex2-assembler" -> "hex1-assembler" [color = black];
# "M1-Macro" -> "hex2-assembler" [color = black];
# "cat" -> "M1-Macro" [color = cyan3];
# "Slow_Lisp" -> "M1-Macro" [color = green3];
# "Stage0-FORTH" -> "M1-Macro" [color = green3];
"cc_x86" -> "M1-Macro" [color = black];
"M2-Planet" -> "cc_x86" [color = black];
"M2-Moon" -> "M1-Macro" [color = orange];
# "mescc-tools-seed" -> "cc_x86" [color = black];
# "mescc-tools" -> "mescc-tools-seed" [color = black];
"mescc-tools" -> "M2-Planet" [color = black];
"Mes C Lib.M2" -> "mescc-tools" [color = red1];
"Mes C Lib.M2" -> "M2-Planet" [color = red1];
"mes.M2" -> "mescc-tools" [color = red1];
"mes.M2" -> "Mes C Lib.M2" [color = red1];
"mes.M2" -> "M2-Planet" [color = red1];
"mescc" -> "mes.M2" [color = black];
# "Mes C Lib +tcc" -> "mes.M2" [color = red1];
# "tcc" -> "Mes C Lib +tcc" [color = black];
# "tcc" -> "bootstrap-binaries" [color = black];
# "tcc" -> "mescc" [color = black];
# "gcc-core 2.95.3" -> "Mes C Lib +GNU " [color = black];
# "gcc-core 2.95.3" -> "bootstrap-binaries" [color = black];
# "gcc-core 2.95.3" -> "tcc" [color = black];
# "make" -> "Mes C Lib +GNU" [color = black];
# "make" -> "tcc" [color = black];
# "make" -> "bootstrap-binaries" [color = black];
# "glibc 2.2.5" -> "gcc-core 2.95.3" [color = black];
# "glibc 2.2.5" -> "binutils" [color = black];
# "glibc 2.2.5" -> "Mes C Lib +GNU" [color = black];
# "glibc 2.2.5" -> "make" [color = black];
# "glibc 2.2.5" -> "bootstrap-binaries" [color = black];
# "gcc 2.95.3" -> "gcc-core 2.95.3" [color = black];
# "gcc 2.95.3" -> "binutils" [color = black];
# "gcc 2.95.3" -> "glibc 2.2.5" [color = black];
# "gcc 2.95.3" -> "make" [color = black];
# "gcc 2.95.3" -> "bootstrap-binaries" [color = black];
# "glibc 2.16" -> "glibc 2.2.5" [color = black];
# "glibc 2.16" -> "binutils" [color = black];
# "glibc 2.16" -> "gcc 2.95.3" [color = black];
# "glibc 2.16" -> "make" [color = black];
# "glibc 2.16" -> "bootstrap-binaries" [color = black];
# "gcc 4.7.4" -> "glibc 2.16" [color = black];
# "gcc 4.7.4" -> "binutils" [color = black];
# "gcc 4.7.4" -> "gcc 2.95.3" [color = black];
# "gcc 4.7.4" -> "make" [color = black];
# "gcc 4.7.4" -> "bootstrap-binaries" [color = black];
node [shape=plaintext]
subgraph cluster_01 {
key [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0">
<tr><td align="left"><font color="black">black</font></td><td align="left">done, essential</td></tr>
<!--
<tr><td align="left"><font color="cyan3">cyan</font></td><td align="left">done, optional</td></tr>
<tr><td align="left"><font color="green3">green</font></td><td align="left">done, undecided</td></tr>
!-->
<tr><td align="left"><font color="red1">red</font></td><td align="left">in progress, essential</td></tr>
<tr><td align="left"><font color="orange">orange</font></td><td align="left">in progress, undecided</td></tr>
</table>>]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -0,0 +1,109 @@
digraph {
node[shape=box,width=1,height=0.25];
edge [height=0.25];
# "hex0-monitor" [label = "hex0 Monitor", shape = box];
# "hex0-assembler" [label = "hex0 Assembler", shape = box];
# "SET" [label = "SET editor", shape = box];
# "hex1-assembler" [label = "hex1 Assembler", shape = box];
# "hex2-assembler" [label = "hex2 Assembler", shape = box];
# "M1-Macro" [label = "M1 Macro assembler", shape = box];
# "cat" [label = "cat", shape = box];
# "Slow_Lisp" [label = "Slow Lisp", shape = box];
# "Stage0-FORTH" [label = "Stage0 FORTH", shape = box];
# "cc_x86" [label = "cc_x86", shape = box];
# "M2-Planet" [label = "M2-PLanet", shape = box];
# "M2-Moon" [label = "M2-Moon", color = red1, shape = box];
# "mescc-tools-seed" [label = "mescc-tools-seed", shape = box];
"?" [label = "?", color = red1, shape = box];
"bootstrap-binaries" [label = "bootstrap-binaries", color = red1, shape = box];
"mescc-tools" [label = "mescc-tools", shape = box];
"Mes C Lib.M2" [label = "Mes C Lib.M2", color = red1, shape = box];
"mes.M2" [label = "mes.M2", color = red1, shape = box];
"mescc" [label = "mescc", shape = box];
"Mes C Lib +tcc" [label = "Mes C Lib +tcc", color = red1, shape = box];
"tcc" [label = "tcc", shape = box];
"Mes C Lib +GNU" [label = "Mes C Lib +GNU", shape = box];
"gcc-core 2.95.3" [label = "gcc-core 2.95.3", shape = box];
# "glibc 2.2.5" [label = "glibc 2.2.5", shape = box];
# "gcc 2.95.3" [label = "gcc 2.95.3", shape = box];
# "glibc 2.16" [label = "glibc 2.16", shape = box];
# "gcc 4.7.4" [label = "gcc 4.7.4", shape = box];
# "SET" -> "hex0-monitor" [color = cyan];
# "hex0-assembler" -> "hex0-monitor" [color = black];
# "hex1-assembler" -> "hex0-assembler" [color = black];
# "hex2-assembler" -> "hex1-assembler" [color = black];
# "M1-Macro" -> "hex2-assembler" [color = black];
# "cat" -> "M1-Macro" [color = cyan];
# "Slow_Lisp" -> "M1-Macro" [color = green2];
# "Stage0-FORTH" -> "M1-Macro" [color = green2];
# "cc_x86" -> "M1-Macro" [color = black];
# "M2-Planet" -> "cc_x86" [color = black];
# "M2-Moon" -> "M1-Macro" [color = red1];
# "mescc-tools-seed" -> "cc_x86" [color = black];
# "mescc-tools" -> "mescc-tools-seed" [color = black];
# "mescc-tools" -> "M2-Planet" [color = black];
"bootstrap-binaries" -> "?" [color = red1];
"mes.M2" -> "bootstrap-binaries" [color = black];
"mes.M2" -> "mescc-tools" [color = red1];
"mes.M2" -> "Mes C Lib.M2" [color = red1];
"mes.M2" -> "M2-Planet" [color = red1];
"mescc" -> "mes.M2" [color = black];
"Mes C Lib +tcc" -> "mes.M2" [color = red1];
"tcc" -> "Mes C Lib +tcc" [color = black];
"tcc" -> "bootstrap-binaries" [color = black];
"tcc" -> "mescc" [color = black];
"Mes C Lib +GNU" -> "tcc" [color = black];
"gcc-core 2.95.3" -> "Mes C Lib +GNU" [color = black];
"gcc-core 2.95.3" -> "bootstrap-binaries" [color = black];
"gcc-core 2.95.3" -> "tcc" [color = black];
# "make" -> "Mes C Lib +GNU" [color = black];
# "make" -> "tcc" [color = black];
# "make" -> "bootstrap-binaries" [color = black];
# "glibc 2.2.5" -> "gcc-core 2.95.3" [color = black];
# "glibc 2.2.5" -> "binutils" [color = black];
# "glibc 2.2.5" -> "Mes C Lib +GNU" [color = black];
# "glibc 2.2.5" -> "make" [color = black];
# "glibc 2.2.5" -> "bootstrap-binaries" [color = black];
# "gcc 2.95.3" -> "gcc-core 2.95.3" [color = black];
# "gcc 2.95.3" -> "binutils" [color = black];
# "gcc 2.95.3" -> "glibc 2.2.5" [color = black];
# "gcc 2.95.3" -> "make" [color = black];
# "gcc 2.95.3" -> "bootstrap-binaries" [color = black];
# "glibc 2.16" -> "glibc 2.2.5" [color = black];
# "glibc 2.16" -> "binutils" [color = black];
# "glibc 2.16" -> "gcc 2.95.3" [color = black];
# "glibc 2.16" -> "make" [color = black];
# "glibc 2.16" -> "bootstrap-binaries" [color = black];
# "gcc 4.7.4" -> "glibc 2.16" [color = black];
# "gcc 4.7.4" -> "binutils" [color = black];
# "gcc 4.7.4" -> "gcc 2.95.3" [color = black];
# "gcc 4.7.4" -> "make" [color = black];
# "gcc 4.7.4" -> "bootstrap-binaries" [color = black];
node [shape=plaintext]
subgraph cluster_01 {
key [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0">
<tr><td align="left"><font color="black">black</font></td><td align="left">done, essential</td></tr>
<!--
<tr><td align="left"><font color="cyan3">cyan</font></td><td align="left">done, optional</td></tr>
<tr><td align="left"><font color="green3">green</font></td><td align="left">done, undecided</td></tr>
!-->
<tr><td align="left"><font color="red1">red</font></td><td align="left">in progress, essential</td></tr>
<!--
<tr><td align="left"><font color="orange">orange</font></td><td align="left">in progress, undecided</td></tr>
!-->
</table>>]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@ -0,0 +1,111 @@
digraph {
node[shape=box,width=1,height=0.25];
edge [height=0.25];
# "hex0-monitor" [label = "hex0 Monitor", shape = box];
# "hex0-assembler" [label = "hex0 Assembler", shape = box];
# "SET" [label = "SET editor", shape = box];
# "hex1-assembler" [label = "hex1 Assembler", shape = box];
# "hex2-assembler" [label = "hex2 Assembler", shape = box];
# "M1-Macro" [label = "M1 Macro assembler", shape = box];
# "cat" [label = "cat", shape = box];
# "Slow_Lisp" [label = "Slow Lisp", shape = box];
# "Stage0-FORTH" [label = "Stage0 FORTH", shape = box];
# "cc_x86" [label = "cc_x86", shape = box];
# "M2-Planet" [label = "M2-PLanet", shape = box];
# "M2-Moon" [label = "M2-Moon", color = red1, shape = box];
# "mescc-tools-seed" [label = "mescc-tools-seed", shape = box];
"?" [label = "?", color = red1, shape = box];
"bootstrap-binaries" [label = "bootstrap-binaries", color=red1, shape = box];
# "mescc-tools" [label = "mescc-tools", shape = box];
# "Mes C Lib.M2" [label = "Mes C Lib.M2", color = red1, shape = box];
# "mes.M2" [label = "mes.M2", color = red1, shape = box];
# "mescc" [label = "mescc", shape = box];
# "Mes C Lib +tcc" [label = "Mes C Lib +tcc", color = red1, shape = box];
"tcc" [label = "tcc", shape = box];
"Mes C Lib +GNU" [label = "Mes C Lib +GNU", shape = box];
"gcc-core 2.95.3" [label = "gcc-core 2.95.3", shape = box];
"glibc 2.2.5" [label = "glibc 2.2.5", shape = box];
"gcc 2.95.3" [label = "gcc 2.95.3", shape = box];
"glibc 2.16" [label = "glibc 2.16", shape = box];
"gcc 4.7.4" [label = "gcc 4.7.4", shape = box];
# "SET" -> "hex0-monitor" [color = cyan];
# "hex0-assembler" -> "hex0-monitor" [color = black];
# "hex1-assembler" -> "hex0-assembler" [color = black];
# "hex2-assembler" -> "hex1-assembler" [color = black];
# "M1-Macro" -> "hex2-assembler" [color = black];
# "cat" -> "M1-Macro" [color = cyan];
# "Slow_Lisp" -> "M1-Macro" [color = green2];
# "Stage0-FORTH" -> "M1-Macro" [color = green2];
# "cc_x86" -> "M1-Macro" [color = black];
# "M2-Planet" -> "cc_x86" [color = black];
# "M2-Moon" -> "M1-Macro" [color = red1];
# "mescc-tools-seed" -> "cc_x86" [color = black];
# "mescc-tools" -> "mescc-tools-seed" [color = black];
# "mescc-tools" -> "M2-Planet" [color = black];
"bootstrap-binaries" -> "?" [color = red1];
# "mes.M2" -> "bootstrap-binaries" [color = black];
# "mes.M2" -> "mescc-tools" [color = red1];
# "mes.M2" -> "Mes C Lib.M2" [color = red1];
# "mes.M2" -> "M2-Planet" [color = red1];
# "mescc" -> "mes.M2" [color = black];
# "Mes C Lib +tcc" -> "mes.M2" [color = red1];
# "tcc" -> "Mes C Lib +tcc" [color = black];
# "tcc" -> "bootstrap-binaries" [color = black];
# "tcc" -> "mescc" [color = black];
"gcc-core 2.95.3" -> "Mes C Lib +GNU" [color = black];
"gcc-core 2.95.3" -> "tcc" [color = black];
"gcc-core 2.95.3" -> "bootstrap-binaries" [color = black];
"binutils" -> "Mes C Lib +GNU" [color = black];
"binutils" -> "tcc" [color = black];
"binutils" -> "bootstrap-binaries" [color = black];
"make" -> "Mes C Lib +GNU" [color = black];
"make" -> "tcc" [color = black];
"make" -> "bootstrap-binaries" [color = black];
"glibc 2.2.5" -> "gcc-core 2.95.3" [color = black];
"glibc 2.2.5" -> "binutils" [color = black];
"glibc 2.2.5" -> "Mes C Lib +GNU" [color = black];
"glibc 2.2.5" -> "make" [color = black];
"glibc 2.2.5" -> "bootstrap-binaries" [color = black];
"gcc 2.95.3" -> "gcc-core 2.95.3" [color = black];
"gcc 2.95.3" -> "binutils" [color = black];
"gcc 2.95.3" -> "glibc 2.2.5" [color = black];
"gcc 2.95.3" -> "make" [color = black];
"gcc 2.95.3" -> "bootstrap-binaries" [color = black];
"glibc 2.16" -> "glibc 2.2.5" [color = black];
"glibc 2.16" -> "binutils" [color = black];
"glibc 2.16" -> "gcc 2.95.3" [color = black];
"glibc 2.16" -> "make" [color = black];
"glibc 2.16" -> "bootstrap-binaries" [color = black];
"gcc 4.7.4" -> "glibc 2.16" [color = black];
"gcc 4.7.4" -> "binutils" [color = black];
"gcc 4.7.4" -> "gcc 2.95.3" [color = black];
"gcc 4.7.4" -> "make" [color = black];
"gcc 4.7.4" -> "bootstrap-binaries" [color = black];
node [shape=plaintext]
subgraph cluster_01 {
key [label=<<table border="0" cellpadding="2" cellspacing="0" cellborder="0">
<tr><td align="left"><font color="black">black</font></td><td align="left">done, essential</td></tr>
<!--
<tr><td align="left"><font color="cyan3">cyan</font></td><td align="left">done, optional</td></tr>
<tr><td align="left"><font color="green3">green</font></td><td align="left">done, undecided</td></tr>
!-->
<tr><td align="left"><font color="red1">red</font></td><td align="left">in progress, essential</td></tr>
<!--
<tr><td align="left"><font color="orange">orange</font></td><td align="left">in progress, undecided</td></tr>
!-->
</table>>]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
doc/talks/fosdem19/tcc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 814 KiB

BIN
doc/talks/fosdem20/Guix.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 953 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 KiB

View File

@ -0,0 +1,292 @@
# time grep -E '^([^#]|$)' autocue.org | sed -re 's/^[*]+.*/. . slide. ./' | head -264 | tr '\n' ' ' | espeak -s 110 -l 1
#+TITLE: GNU Mes
* Introduction
hello, i am janneke.
this talk is about GNU Mes and the ongoing effort to remove all
the binaries that we inject into our free software stack.
** Scheme-only bootstrap: Why?
hopefully you will learn what the new bootstrapping hype is all about.
** Scheme-only bootstrap: GNU Mes
to crack the chicken and egg problem that bootstrapping is, i wrote GNU
Mes.
MesCC is a C99 compiler written in a subset of Guile Scheme and comes
with Mes, a Scheme interpreter to run it.
** Auditable Elegance
it has been known from the early days of computing that LISP gives us an
excellent way to jump from a low level language to an elegant, high
level language.
** Long path: Best Practice
before we had mes, how were our systems bootstrapped, you may wonder?
in short: they weren't, really.
** Reduce binary seeds to bare minimum
not so GNU Guix. Like NixOS, it has had a proper bootstrap.
** Guix /pronounced geeks/
So what is different? Ludovic noted that injecting these binary
bootstrap seeds is a problem, and suggested we get rid of them.
** A big problem, predicted 40y ago
in the eighties, ken thompson showed us that we were having a big problem
in computing.
how do we react when someone points out a big problem that will be
affecting almost everyone and is very hard to solve?
** Long path: Ignoring the problem
we ignore it.
** Long path: GNU Guix System v1.0
Guix and its sister Nix use a much smaller set of binary bootstrap
seeds.
but there is a another reason why Nix and Guix are great for
bootstrapping research and experiments.
the dependencies between packages are an acyclic, directed graph; unlike
others there are no bootstrap cycles.
this means that if we find a way to reduce the bootstrap binary seed,
the the system will still build.
** Carl Dong -- bitcoin build system security
the importance of this was evident to bitcoin developer Carl Dong of
Chaincode Labs.
i warmly recommend his talk he gave this summer at the breaking bitcoin
conference, it will only take 18 minutes of your time.
** Reproducible-Builds.org
carl dong explains that bitcoin, driven by the wish to provide secure
bitcoin downloads, have implemented Gitian, a system that uses
reproducible builds.
** What is a Bootstrap?
in computing, bootstrapping is slang for doing something that is
impossible.
for example, let's say you wrote the very first C compiler in C and you
called it GNU CC; it is impossible to compile this C source code into a
a working gcc program.
** How to Bootstrap: An Old Recipe...
when we want to do something that is impossible, yet we know something
quite similar has been done before, what do we do? we just ask grandma.
grandma, show mee again how you made that yoghurt. well son, you can
use fresh milk, and add a some yoghurt leftover from yesterday.
** How to Bootstrap: Create your second GCC
using this wisdom, we can now create our second GCC!
** Pour milk
we would like this second GCC to be really bug-free, feature-full and
secure. so while this may look like ordinary milk, it is actually a
carefully crafted piece of software. a masterpiece. peer reviewed.
free software, the real difficult bits may have been pair programmed.
if at all possible, we apply formal verification methods to make our
second compiler really secure!
** Add yoghurt
we publish the recipe, so that others may verify the result. their
second compiler.
** We're reproducible
and low and behold, your second compiler exactly matches ours!
as long as you follow our recipe.
** Add evil yoghurt
and use the exact same, FIRST compiler...
** We're reproducible
everyone is ...
** Evil yoghurt
just as bug-free and secure
** We're reproducibly malicous
as our shared, FIRST compiler is
** Reproducibility is not enough
reproducibility is no substitute for bootstrappability
** Reproducibility plus clean source code is not enough
and while bug-free source code remains important, we need something
else.
** Guix /pronounced geeks/
Carl Dong noticed that Gitian, to build reproducibly, starts by
downloading "almost all of ubuntu".
so as an attempt to create a more secure and trustworthy bitcoin binary
download, we download a whole lot of binaries that we must first trust.
hmm?
Carl went looking for a more acceptable solution and found it in Guix.
** Long path: Reduced Binary Seed bootstrap
last year at fosdem, i presented the reduced binary seed bootstrap.
the next release of Guix has a bootstrap path without GCC.
no more trusting the first GCC.
** GCC mesboot0
could we possibly reduce the binary seed even further? we would have to
remove bash, core utils, awk, grep, gzip, make, sed, tar.
that's a lot of work.
** NLnet Foundation
so we are very excited that NlNet believes that what we are doing is
important. nlnet provided a grant for me to work on the Scheme-only
bootstrap.
** Long path: Scheme-only bootstrap
and that's what i present you this year; another reduction by 50%
** Scheme-only bootstrap: Gash Core Utils
a key ingredient was the development of gash core utils. currently
focussed single-mindedly on supporting the bootstrap, we plan to create
a scheme library for shell scripting.
** GCC core-mesboot0-scheme-only
this is what the graph looks like now: the only interesting binaries
left, are a scheme interpreter and scheme compiler: mes and guile.
** GCC mesboot0-scheme-only
???
** Cross distro reproducibility
after Vagrant Cascadian packaged Mes for Debian and got it into
unstable, he wondered if there was something we could do to increase the
trust in Mes.
when he suggested a cross-distro reproducibility test at the
reproducible build summit, david terry and jelle van der waa joined in
** The holy grail
something else we can do?
** Full Source Bootstrap
given that we dislike downloading binaries and trusting them, why not
stop doing so altogether?
** Long path: Full Source Bootstrap
the coming year, we will create a full source bootstrap path
** Trusted Computing Base
anything else?
** Trusted Computing Base
when building a package on Guix, the trusted computing base includes
the build daemon and the linux kernel.
ludovic has built a package in the intial ramdisk, thereby removing the
build daemon from the trusted computing base.
an obvious next step is linux.
mes v0.22 now runs on the hurd, a micro kernel is another possibility to
reduce the trusted computing base.
** Raising the bar on auditibility
are our efforts coming to an end? jeremiah orians has some ideas to
keep us busy.
** Won't your life be boring?
and so does mark weaver, who is making an excellent point.
** Joy of Source
are we doing this only to counter the trusting trust attack?
i'm not sure, i think that building from source is the proper way to do
computing; and the trusting trust attack is only a symptom of confusing
a binary substitute with the compilation of source code.
* Thanks
i am very grateful for getting so much help and seeing this crazy
project grow!
** Want to join?
that's all folks!
*** You can help
* make Guix run on Mes
* write a bootstrappable syntax-case
* simplify MesCC and target GCC-4.6
* bootstrap NixOS, Debian
* port MesCC to the Hurd, FreeBSD
* spread the message
* retweet =@janneke_gnu= =janneke@octodon.social=
*** Connect
* irc freenode.net [[irc://bootstrappable@freenode.net][#bootstrappable]] [[irc://guix@freenode.net][#guix]]
* mail [[mailto:bug-mes@gnu.org][bug-mes@gnu.org]] [[mailto://guix-devel@gnu.org][guix-devel@gnu.org]]
* git [[https://git.savannah.gnu.org/git/mes.git][https://git.savannah.gnu.org/git/mes.git]]
* web [[http://bootstrappable.org][bootstrappable.org]]
* legalese
Copyright \copy 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#+BEGIN_QUOTE
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts.
#+END_QUOTE

View File

@ -0,0 +1,27 @@
% GNU Mes --- Maxwell Equations of Software
% Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
%
% This file is part of GNU Mes.
%
% GNU Mes is free software; you can redistribute it and/or modify it
% under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 3 of the License, or (at
% your option) any later version.
%
% GNU Mes is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
\mode<presentation>
\usecolortheme{spruce}
\setbeamercolor*{structure}{fg=blue!25!white}
\setbeamercolor*{structure}{fg=MSUgreen!80!white}
\setbeamercolor{block title}{use=structure,fg=white,bg=structure.fg!75!black}
\mode
<all>

View File

@ -0,0 +1,36 @@
% GNU Mes --- Maxwell Equations of Software
% Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
%
% This file is part of GNU Mes.
%
% GNU Mes is free software; you can redistribute it and/or modify it
% under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 3 of the License, or (at
% your option) any later version.
%
% GNU Mes is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with GNU Mes. If not, see <http://www.gnu.org/licenses/>.
\mode<presentation>
\setbeamertemplate{navigation symbols}{}
\newif\ifbeamer@secheader
\beamer@secheaderfalse
\DeclareOptionBeamer{secheader}{\beamer@secheadertrue}
\ProcessOptionsBeamer
\usecolortheme{X}
\useinnertheme[shadow]{rounded}
\useoutertheme{infolines}
\ifbeamer@secheader\else\setbeamertemplate{headline}[default]\fi
\mode
<all>

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 936 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
doc/talks/fosdem20/egg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
doc/talks/fosdem20/egg.xcf Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 915 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 684 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 814 KiB

View File

@ -0,0 +1,572 @@
#+TITLE: GNU Mes
#+TITLE: \smaller[2]{-- Scheme-only bootstrap}
#+DATE:2020-02-02
#+EMAIL: janneke@gnu.org
#+AUTHOR: janneke@gnu.org
#+COPYRIGHT: janneke (Jan) Nieuwenhuizen <janneke@gn.org>
#+LICENSE: GNU Free Documentation License, version 1.3 or later.
#+OPTIONS: H:2 @:t ::t
#+OPTIONS: tex:t latex:t todo:t tasks:t
#+LATEX_HEADER:\institute{FOSDEM'20}
#+LATEX_HEADER:\def\ahref#1#2{\htmladdnormallink{#2}{#1}}
#+LATEX_CLASS: beamer
#+LATEX_CLASS_OPTIONS: [presentation]
#+LATEX_HEADER: \usepackage{relsize}
#+LATEX_HEADER: \usepackage{hyperref}
#+LATEX_HEADER: \mode<beamer>{\usetheme{X}}
#+KEYWORDS: GNU, Mes, Mes, Guix, bootstrappable, reproducible
#+BEAMER_THEME: X
#+BEAMER_FRAME_LEVEL: 2
#+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col) %8BEAMER_OPT(Opt)
# #+LATEX_HEADER:\usepackage{pgfpages}
# #+LATEX_HEADER:\setbeameroption{show notes}
# #+LATEX_HEADER:\setbeameroption{show notes on second screen=left}
* Introduction
** Scheme-only bootstrap: Why?
#+LATEX:\begin{center}
Why bootstrapping is important to you.
or
Why bootstrapping is something you wish to ignore.
#+LATEX:\end{center}
** Scheme-only bootstrap: GNU Mes
*** GNU Mes
:PROPERTIES:
:BEAMER_COL: 0.6
:BEAMER_ENV: block
:END:
* A Scheme interpreter written in ~5,000LOC of simple C.
* A C compiler written in Scheme.
* Built on LISP: eval/apply, the *Maxwell Equations of Software*.
*** LOGO
:PROPERTIES:
:BEAMER_COL: 0.3
:BEAMER_ENV: quote
:END:
#+LATEX:\rightskip=2cm\includegraphics[width=0.7\textwidth]{mes.png}
** Auditable Elegance
#+LATEX:\tiny
#+BEGIN_SRC scheme
(define (apply fn x a)
(cond
((atom fn)
(cond
((eq fn CAR) (caar x))
((eq fn CDR) (cdar x))
((eq fn CONS) (cons (car x) (cadr x)))
((eq fn ATOM) (atom (car x)))
((eq fn EQ) (eq (car x) (cadr x)))
(#t (apply (eval fn a) x a))))
((eq (car fn) LAMBDA)
(eval (caddr fn) (pairlis (cadr fn) x a)))
((eq (car fn) LABEL)
(apply (caddr fn) x
(cons (cons (cadr fn) (caddr fn)) a)))))
(define (eval e a)
(cond
((atom e) (cdr (assoc e a)))
((atom (car e))
(cond ((eq (car e) QUOTE) (cadr e))
((eq (car e) COND) (evcon (cdr e) a))
(#t (apply (car e) (evlis (cdr e) a) a))))
(#t (apply (car e) (evlis (cdr e) a) a))))
#+END_SRC
#+LATEX:\normalsize
=eval= and =apply= are mutual recursing functions that---using
a few helper functions---describe the universe of computing.
** Long path: Best Practice
#+LATEX:\Large
*** GNU Mes
:PROPERTIES:
:BEAMER_COL: 0.7
:BEAMER_ENV: quote
:END:
#+LATEX:\normalfont
* *500+ MB:* no bootstrap
#+LATEX:\vskip 10cm
*** LOGO
:PROPERTIES:
:BEAMER_COL: 0.3
:BEAMER_ENV: quote
:END:
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
#+LATEX:\vskip 10cm
#+LATEX:\normalsize
** Guix /pronounced geeks/
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{guix-pronounced-geeks.png}}}
#+LATEX:\end{frame}}
** Reduce binary seeds to bare minimum
#+BEGIN_QUOTE
These big chunks of binary code are practically non-auditable which
breaks the source to binary transparency that we get in the rest of
the package dependency graph.
#+END_QUOTE
#+BEGIN_QUOTE
Every unauditable binary leaves us vulnerable to compiler backdoors as
described by Ken Thompson in the 1984 paper *Reflections on Trusting
Trust*.
#+END_QUOTE
#+BEGIN_QUOTE
Thus, our goal is to reduce the set of bootstrap binaries to the bare
minimum. -- Ludovic Courtès (GNU Guix documentation, December 2017)
#+END_QUOTE
** A big problem, predicted 40y ago
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{ken-thompson.png}}}
#+LATEX:\end{frame}}
** Long path: Ignoring the Problem
#+LATEX:\Large
*** GNU Mes
:PROPERTIES:
:BEAMER_COL: 0.7
:BEAMER_ENV: quote
:END:
#+LATEX:\normalfont
* *500+ MB:* no bootstrap
*** LOGO
:PROPERTIES:
:BEAMER_COL: 0.3
:BEAMER_ENV: quote
:END:
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
#+LATEX:\normalsize
*** FOO
:PROPERTIES:
:BEAMER_ENV: quote
:END:
#+LATEX:\includegraphics[width=2cm]{logos/android.png}
#+LATEX:{\includegraphics[height=0.8cm]{logos/apple.png}\includegraphics[width=1.2cm]{logos/macos.png}}
#+LATEX:\includegraphics[height=1cm]{logos/debian.png}
#+LATEX:\includegraphics[width=2cm]{logos/fedora.png}
#+LATEX:\includegraphics[height=0.8cm]{logos/freebsd.png}
#+LATEX:\includegraphics[height=0.8cm]{logos/netbsd.png}
#+LATEX:\includegraphics[height=1cm]{logos/openbsd.png}
#+LATEX:\includegraphics[height=0.7cm]{logos/opensuse.png}
#+LATEX:\includegraphics[width=2cm]{logos/redhat.png}
#+LATEX:\includegraphics[width=2cm]{logos/ubuntu.png}
#+LATEX:\includegraphics[width=2.2cm]{logos/windows.png}
#+LATEX:\vskip 5cm
#+LATEX:\normalsize
** Long path: GNU Guix System v1.0
#+LATEX:\Large
*** GNU Mes
:PROPERTIES:
:BEAMER_COL: 0.75
:BEAMER_ENV: quote
:END:
#+LATEX:\normalfont
* *500+ MB:* no bootstrap
* *252 MB:* GNU Guix System v1.0
#+LATEX:\vskip 6cm
*** LOGO
:PROPERTIES:
:BEAMER_COL: 0.25
:BEAMER_ENV: quote
:END:
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\includegraphics[height=0.4cm]{logos/nixos.png}\\[0.4cm]
#+LATEX:\vskip 5.5cm
#+LATEX:\normalsize
* Reproducibility
** Carl Dong -- bitcoin build system security
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{bitcoin-carl-dong.png}}}
#+LATEX:\end{frame}}
** Reproducible-Builds.org
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducible-builds.png}}}
#+LATEX:\end{frame}}
** What is a Bootstrap?
*** Impossible task: pull yourself up on your boot straps
#+LATEX:\rightskip=2cm\includegraphics[width=0.3\textwidth]{boot-strap.png}
*** Software: to create your first: kernel, shell, C compiler, ...
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
#+LATEX:{\fontsize{20}{10}\selectfont source\normalsize}
#+LATEX:{\fontsize{40}{20}\selectfont + ?? =}
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
#+LATEX:{\fontsize{20}{10}\selectfont binary\normalsize}
** How to Bootstrap: An Old Recipe...
#+LATEX:\rightskip=2cm\includegraphics[width=0.3\textwidth]{yoghurt.png}\\
#+BEGIN_QUOTE
Recipe for yoghurt: Add yoghurt to milk -- Anonymous
#+END_QUOTE
** How to Bootstrap: Create your second GCC
*** IGNORE
:PROPERTIES:
:BEAMER_env: ignoreheading
:END:
Traditional recipe: like yoghurt
#+LATEX:\\[1cm]
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
#+LATEX:{\fontsize{10}{5}\selectfont source\normalsize}
#+LATEX:{\fontsize{40}{20}\selectfont +}
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
#+LATEX:{\fontsize{10}{5}\selectfont binary - 1\normalsize}
#+LATEX:{\fontsize{40}{10}\selectfont = \normalsize}
#+LATEX:\includegraphics[width=0.15\textwidth]{gcc.png}
#+LATEX:{\fontsize{10}{5}\selectfont binary\normalsize}
#+LATEX:\\[1cm]
*** IGNORE
:PROPERTIES:
:BEAMER_env: ignoreheading
:END:
... and done!
** Pour milk
#+LATEX:{\begin{frame}[plain]
#+LATEX:{\vskip-2cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{pour-milk.png}}
#+LATEX:\end{frame}}
** Add yoghurt
#+LATEX:{\begin{frame}[plain]
#+LATEX:{\vskip-2cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{add-yoghurt.png}}
#+LATEX:\end{frame}}
** We're reproducible
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{we-are-reproducible.png}}}
#+LATEX:\end{frame}}
** Add evil yoghurt
#+LATEX:{\begin{frame}[plain]
#+LATEX:{\vskip-2.5cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{add-evil-yoghurt.png}}
#+LATEX:\end{frame}}
** We're reproducible
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{we-are-reproducible.png}}}
#+LATEX:\end{frame}}
** Evil yoghurt
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{evil-yoghurt-rect-black.png}}}
#+LATEX:\end{frame}}
** We're reproducibly malicous
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{we-are-reproducibly-malicious.png}}}
#+LATEX:\end{frame}}
** Reproducibility is not enough
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducibility-is-not-enough.png}}}
#+LATEX:\end{frame}}
** Reproducibility plus clean source code is not enough
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{reproducibility+clean-source-code.png}}}
#+LATEX:\end{frame}}
* Bootstrappability
** Guix /pronounced geeks/
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{guix-pronounced-geeks.png}}}
#+LATEX:\end{frame}}
** Long path: Reduced Binary Seed bootstrap
#+LATEX:\Large
*** GNU Mes
:PROPERTIES:
:BEAMER_COL: 0.75
:BEAMER_ENV: quote
:END:
#+LATEX:\normalfont
* *500+ MB:* no bootstrap
* *252 MB:* GNU Guix System v1.0
* *145 MB:* Reduced Binary Seed
+ master branch
+ +GCC+, +GLIBC+, +Binutils+
+ + MesCC-Tools, + Mes
#+LATEX:\vskip 5cm
*** LOGO
:PROPERTIES:
:BEAMER_COL: 0.25
:BEAMER_ENV: quote
:END:
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\includegraphics[height=0.4cm]{logos/nixos.png}\\[0.4cm]
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\[1cm]
#+LATEX:\vskip 4.75cm
#+LATEX:\normalsize
** GCC mesboot0
#+LATEX:{\hspace{-0.55cm}\begin{frame}[plain]
#+LATEX:{{\vskip-1.9cm\includegraphics[width=1\paperwidth,height=1\paperheight]{gcc-mesboot0-unversioned.png}}}
#+LATEX:\end{frame}}
** NLnet Foundation
#+LATEX:\begin{center}
#+LATEX:\includegraphics[width=0.5\paperwidth,height=0.5\paperheight]{nl-net.png}
#+LATEX:\end{center}
** Long path: Scheme-only bootstrap
#+LATEX:\Large
*** GNU Mes
:PROPERTIES:
:BEAMER_COL: 0.75
:BEAMER_ENV: quote
:END:
#+LATEX:\normalfont
* *500+ MB:* no bootstrap
* *252 MB:* GNU Guix System v1.0
* *145 MB:* Reduced Binary Seed
+ master branch
+ +GCC+, +GLIBC+, +Binutils+
+ + MesCC-Tools, + Mes
* *57 MB:* Scheme-only
+ wip-bootstrap branch
+ +Awk+, +Bash+, +Bzip2+, +GNU Core Utilities+, +Grep+, +Gzip+,
+Make+, +Patch+, +Sed+, +Tar+, and +XZ+.
+ + Gash (source only!)
#+LATEX:\vskip 3cm
*** LOGO
:PROPERTIES:
:BEAMER_COL: 0.25
:BEAMER_ENV: quote
:END:
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\includegraphics[height=0.4cm]{logos/nixos.png}\\[0.4cm]
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\[1cm]
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\
#+LATEX:\vskip 4.75cm
#+LATEX:\normalsize
** Scheme-only bootstrap: Gash Core Utils
#+BEGIN_SRC sh
awk cp gash mv sleep uname
basename cut grep pwd sort uniq
bash diff gzip reboot tar wc
cat dirname head rm test which
chmod expr ln rmdir touch
cmp false ls sed tr
compress find mkdir sh true
#+END_SRC
** GCC core-mesboot0-scheme-only
#+LATEX:{\hspace{-0.55cm}\begin{frame}[plain]
#+LATEX:{{\vskip-1.9cm\includegraphics[width=1\paperwidth,height=1\paperheight]{gcc-core-mesboot0-scheme-only-unversioned.png}}}
#+LATEX:\end{frame}}
** GCC mesboot0-scheme-only
#+LATEX:{\hspace{-0.55cm}\begin{frame}[plain]
#+LATEX:{{\vskip-1.9cm\includegraphics[width=1\paperwidth,height=1\paperheight]{gcc-mesboot0-scheme-only-unversioned.png}}}
#+LATEX:\end{frame}}
** Cross distro reproducibility
The sha256sum for bin/mes-mescc on x86 shall be
#+LATEX:\scriptsize
#+BEGIN_SRC sh
722790ed261954eb53cf2cd2906c89c7589ef72b66171bbe2a9dce0f0af20232 v0.22
9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb v0.21
#+END_SRC
#+LATEX:\normalsize
only differing in the version number string.
#+LATEX:\begin{center}
#+LATEX:\begin{minipage}{0.8\paperwidth}
#+LATEX:$\vcenter{\hbox{\includegraphics[height=1.5cm]{logos/debian.png}}}$
#+LATEX:$\vcenter{\hbox{\includegraphics[height=0.5cm]{chain.png}}}$
#+LATEX:$\vcenter{\hbox{\includegraphics[height=1.5cm]{logos/guix.png}}}$
#+LATEX:$\vcenter{\hbox{\includegraphics[height=0.5cm]{chain.png}}}$
#+LATEX:$\vcenter{\hbox{\includegraphics[height=0.8cm]{logos/nixos.png}}}$
#+LATEX:\end{minipage}
#+LATEX:\end{center}
For v0.21 this has been verified on Guix System, Debian GNU/Linux and NixOS.
** The holy grail
#+BEGIN_QUOTE
The holy grail of bootstrappability will be connecting mes to hex0.
-- Carl Dong, Chaincode Labs
#+END_QUOTE
** Full Source Bootstrap
#+LATEX:\begin{center}
#+LATEX:\includegraphics[width=0.6\textwidth]{fsb-logo-guile-guix-mes.png}
#+LATEX:\end{center}
** Long path: Full Source Bootstrap
#+LATEX:\Large
*** GNU Mes
:PROPERTIES:
:BEAMER_COL: 0.75
:BEAMER_ENV: quote
:END:
#+LATEX:\normalfont
* *500+ MB:* no bootstrap
* *252 MB:* GNU Guix System v1.0
* *145 MB:* Reduced Binary Seed
+ master branch
+ +GCC+, +GLIBC+, +Binutils+
+ + MesCC-Tools, + Mes
* *57 MB:* Scheme-only
+ wip-bootstrap branch
+ +Awk+, +Bash+, +Bzip2+, +GNU Core Utilities+, +Grep+, +Gzip+,
+Make+, +Patch+, +Sed+, +Tar+, and +XZ+.
+ + Gash (source only!)
* *357 bytes:* Full Source
+ +MesCC-Tools+, +Mes+
+ + Stage0: 357 bytes (x86)
#+LATEX:\vskip 1cm
*** LOGO
:PROPERTIES:
:BEAMER_COL: 0.25
:BEAMER_ENV: quote
:END:
#+LATEX:\includegraphics[height=0.7cm]{logos/debian.png}
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\includegraphics[height=0.4cm]{logos/nixos.png}\\[0.4cm]
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\[1cm]
#+LATEX:\includegraphics[height=0.7cm]{logos/guix.png}\\
#+LATEX:\vskip 4.2cm
#+LATEX:\normalsize
** Trusted Computing Base
#+LATEX:{\hspace{-1.2cm}\begin{frame}[plain]
#+LATEX:{{\vskip-2.8cm\includegraphics[width=1.1\paperwidth,height=1.1\paperheight]{bowl-empty-spoon.png}}}
#+LATEX:\end{frame}}
** Trusted Computing Base
* Source code
* Binary seeds
* Guix System
* Linux
** Raising the bar on auditibility
#+BEGIN_QUOTE
I want code easy to reason about at the heart of this bootstrap, so that
everyone will be able to sit down in the morning and be done by lunch
time; understanding how every piece of it works.
-- Jeremiah Orians
#+END_QUOTE
** Won't your life be boring?
#+BEGIN_QUOTE
MesCC should optimize for the ease of convincing us of its correctness.
-- Mark H Weaver
#+END_QUOTE
** Joy of Source
#+LATEX:\large
#+BEGIN_QUOTE
Vulnerability to a *trusting trust attack* is a symptom of an
unauditable or missing bootstrap story. -- janneke
#+END_QUOTE
#+LATEX:\normalsize
* Thanks
** Thanks
# *** Mortals :B_block:BMCOL:
# :PROPERTIES:
# :BEAMER_COL: 0.48
# :BEAMER_ENV: block
# :END:
* Carl Dong
* Danny Milosavljevic
* David Terry
* Jeremiah Orians
* Ludovic Courtès
* Matt Wette
* Pjotr Prins
* Rutger van Beusekom
* Timothy Sample
* Vagrant Cascadian
# *** All the Giants :B_block:BMCOL:
# :PROPERTIES:
# :BEAMER_COL: 0.48
# :xBEAMER_ACT: <2->
# :BEAMER_ENV: block
# :END:
# * ...
# *** Connect
# * irc freenode.net [[irc://bootstrappable@freenode.net][#bootstrappable]] [[irc://guix@freenode.net][#guix]]
# * mail [[mailto:bug-mes@gnu.org][bug-mes@gnu.org]] [[mailto://guix-devel@gnu.org][guix-devel@gnu.org]]
# * git [[https://git.savannah.gnu.org/git/mes.git][https://git.savannah.gnu.org/git/mes.git]]
# * web [[http://bootstrappable.org][bootstrappable.org]]
** Want to join?
*** You can help
* make Guix run on Mes
* write a bootstrappable syntax-case
* simplify MesCC and target GCC-4.6
* bootstrap NixOS, Debian
* port MesCC to the Hurd, FreeBSD
* spread the message
* retweet =@janneke_gnu= =janneke@octodon.social=
*** Connect
* irc freenode.net [[irc://bootstrappable@freenode.net][#bootstrappable]] [[irc://guix@freenode.net][#guix]]
* mail [[mailto:bug-mes@gnu.org][bug-mes@gnu.org]] [[mailto://guix-devel@gnu.org][guix-devel@gnu.org]]
* git [[https://git.savannah.gnu.org/git/mes.git][https://git.savannah.gnu.org/git/mes.git]]
* web [[http://bootstrappable.org][bootstrappable.org]]
* legalese
:PROPERTIES:
:BEAMER_ENV: note
:COPYING: t
:END:
Copyright \copy 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
#+BEGIN_QUOTE
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover Texts,
and with no Back-Cover Texts.
#+END_QUOTE
By Debian - www.debian.org/logos/, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=3330975
By Canonical Ltd. - http://design.ubuntu.com/wp-content/uploads/logo-ubuntu_no%C2%AE-black_orange-hex.svg, Public Domain, https://commons.wikimedia.org/w/index.php?curid=18296544
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=60635229
By Original: Apple Inc.Vectorization: Totie - https://www.apple.com/macos/high-sierra/, Public Domain, https://commons.wikimedia.org/w/index.php?curid=59644704
By Original: Rob Janoff - https://www.apple.com/ac/globalnav/2.0/en_US/images/ac-globalnav/globalnav/apple/image_large.svg, Public Domain, https://commons.wikimedia.org/w/index.php?curid=10472152
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=26987122
By Source (WP:NFCC#4), Fair use, https://en.wikipedia.org/w/index.php?curid=38767733
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=13822991
By Microsoft - File:Windows Server 2012 logo.svg, Public Domain, https://commons.wikimedia.org/w/index.php?curid=45931123
By Source, Fair use, https://en.wikipedia.org/w/index.php?curid=28200444

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

View File

@ -0,0 +1,61 @@
digraph "Guix package" {
"gcc-cross-boot0@5.5.0" -> "libstdc++-boot0@4.9.4" [color = black];
"gcc-cross-boot0@5.5.0" -> "binutils-cross-boot0@2.31.1" [color = black];
"gcc-cross-boot0@5.5.0" -> "binutils-bootstrap@0" [color = black];
"gcc-cross-boot0@5.5.0" -> "bootstrap-binaries@0" [color = black];
"gcc-cross-boot0@5.5.0" -> "diffutils-boot0@3.6" [color = black];
"gcc-cross-boot0@5.5.0" -> "file-boot0@5.33" [color = black];
"gcc-cross-boot0@5.5.0" -> "findutils-boot0@4.6.0" [color = black];
"gcc-cross-boot0@5.5.0" -> "gcc-bootstrap@0" [color = black];
"gcc-cross-boot0@5.5.0" -> "glibc-bootstrap@0" [color = black];
"gcc-cross-boot0@5.5.0" -> "make-boot0@4.2.1" [color = black];
"gcc-cross-boot0@5.5.0" [label = "gcc-cross-boot0@5.5.0", shape = box, fontname = Helvetica];
"libstdc++-boot0@4.9.4" -> "binutils-bootstrap@0" [color = black];
"libstdc++-boot0@4.9.4" -> "bootstrap-binaries@0" [color = black];
"libstdc++-boot0@4.9.4" -> "diffutils-boot0@3.6" [color = black];
"libstdc++-boot0@4.9.4" -> "file-boot0@5.33" [color = black];
"libstdc++-boot0@4.9.4" -> "findutils-boot0@4.6.0" [color = black];
"libstdc++-boot0@4.9.4" -> "gcc-bootstrap@0" [color = black];
"libstdc++-boot0@4.9.4" -> "glibc-bootstrap@0" [color = black];
"libstdc++-boot0@4.9.4" -> "make-boot0@4.2.1" [color = black];
"libstdc++-boot0@4.9.4" [label = "libstdc++-boot0@4.9.4", shape = box, fontname = Helvetica];
"binutils-cross-boot0@2.31.1" -> "binutils-bootstrap@0" [color = black];
"binutils-cross-boot0@2.31.1" -> "bootstrap-binaries@0" [color = black];
"binutils-cross-boot0@2.31.1" -> "diffutils-boot0@3.6" [color = black];
"binutils-cross-boot0@2.31.1" -> "file-boot0@5.33" [color = black];
"binutils-cross-boot0@2.31.1" -> "findutils-boot0@4.6.0" [color = black];
"binutils-cross-boot0@2.31.1" -> "gcc-bootstrap@0" [color = black];
"binutils-cross-boot0@2.31.1" -> "glibc-bootstrap@0" [color = black];
"binutils-cross-boot0@2.31.1" -> "make-boot0@4.2.1" [color = black];
"binutils-cross-boot0@2.31.1" [label = "binutils-cross-boot0@2.31.1", shape = box, fontname = Helvetica];
"binutils-bootstrap@0" [label = "binutils-bootstrap@0", fontname = Helvetica];
"bootstrap-binaries@0" [label = "bootstrap-binaries@0", fontname = Helvetica];
"diffutils-boot0@3.6" -> "binutils-bootstrap@0" [color = black];
"diffutils-boot0@3.6" -> "bootstrap-binaries@0" [color = black];
"diffutils-boot0@3.6" -> "gcc-bootstrap@0" [color = black];
"diffutils-boot0@3.6" -> "glibc-bootstrap@0" [color = black];
"diffutils-boot0@3.6" -> "make-boot0@4.2.1" [color = black];
"diffutils-boot0@3.6" [label = "diffutils-boot0@3.6", shape = box, fontname = Helvetica];
"file-boot0@5.33" -> "binutils-bootstrap@0" [color = black];
"file-boot0@5.33" -> "bootstrap-binaries@0" [color = black];
"file-boot0@5.33" -> "gcc-bootstrap@0" [color = black];
"file-boot0@5.33" -> "glibc-bootstrap@0" [color = black];
"file-boot0@5.33" -> "make-boot0@4.2.1" [color = black];
"file-boot0@5.33" [label = "file-boot0@5.33", shape = box, fontname = Helvetica];
"findutils-boot0@4.6.0" -> "binutils-bootstrap@0" [color = black];
"findutils-boot0@4.6.0" -> "bootstrap-binaries@0" [color = black];
"findutils-boot0@4.6.0" -> "diffutils-boot0@3.6" [color = black];
"findutils-boot0@4.6.0" -> "gcc-bootstrap@0" [color = black];
"findutils-boot0@4.6.0" -> "glibc-bootstrap@0" [color = black];
"findutils-boot0@4.6.0" -> "make-boot0@4.2.1" [color = black];
"findutils-boot0@4.6.0" [label = "findutils-boot0@4.6.0", shape = box, fontname = Helvetica];
"gcc-bootstrap@0" -> "glibc-bootstrap@0" [color = black];
"gcc-bootstrap@0" [label = "gcc-bootstrap@0", fontname = Helvetica];
"glibc-bootstrap@0" [label = "glibc-bootstrap@0", fontname = Helvetica];
"make-boot0@4.2.1" -> "binutils-bootstrap@0" [color = black];
"make-boot0@4.2.1" -> "bootstrap-binaries@0" [color = black];
"make-boot0@4.2.1" -> "gcc-bootstrap@0" [color = black];
"make-boot0@4.2.1" -> "glibc-bootstrap@0" [color = black];
"make-boot0@4.2.1" [label = "make-boot0@4.2.1", shape = box, fontname = Helvetica];
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 KiB

View File

@ -0,0 +1,116 @@
digraph "Guix package" {
"gcc-core0" [label = "gcc-core0", shape = box, fontname = Helvetica];
"gcc-core0" -> "binutils0" [color = peachpuff4];
"gcc-core0" -> "bash0" [color = peachpuff4];
"gcc-core0" -> "bzip2" [color = peachpuff4];
"gcc-core0" -> "diffutils" [color = peachpuff4];
"gcc-core0" -> "gzip" [color = peachpuff4];
"gcc-core0" -> "patch" [color = peachpuff4];
"gcc-core0" -> "sed0" [color = peachpuff4];
"gcc-core0" -> "tcc" [color = peachpuff4];
"gcc-core0" -> "make0" [color = peachpuff4];
"gcc-core0" -> "gash" [color = peachpuff4];
"gcc-core0" -> "gash core utils" [color = peachpuff4];
# "gcc-core0" -> "139838140100384" [color = peachpuff4];
"gcc-core0" -> "bootstrap-guile" [color = peachpuff4];
"binutils0" [label = "binutils0", shape = box, fontname = Helvetica];
"binutils0" -> "bash0" [color = cyan3];
"binutils0" -> "bzip2" [color = cyan3];
"binutils0" -> "diffutils" [color = cyan3];
"binutils0" -> "gzip" [color = cyan3];
"binutils0" -> "patch" [color = cyan3];
"binutils0" -> "sed0" [color = cyan3];
"binutils0" -> "tcc" [color = cyan3];
"binutils0" -> "make0" [color = cyan3];
"binutils0" -> "gash" [color = cyan3];
"binutils0" -> "gash core utils" [color = cyan3];
# "binutils0" -> "139838140100384" [color = cyan3];
"binutils0" -> "bootstrap-guile" [color = cyan3];
"bash0" [label = "bash0", shape = box, fontname = Helvetica];
"bash0" -> "make0" [color = darkgoldenrod];
"bash0" -> "tcc0" [color = darkgoldenrod];
"bash0" -> "gash" [color = darkgoldenrod];
"bash0" -> "gash core utils" [color = darkgoldenrod];
# "bash0" -> "139838140100384" [color = darkgoldenrod];
"bash0" -> "bootstrap-guile" [color = darkgoldenrod];
"make0" [label = "make0", shape = box, fontname = Helvetica];
"make0" -> "tcc0" [color = blue];
"make0" -> "gash" [color = blue];
"make0" -> "gash core utils" [color = blue];
# "make0" -> "139838140100384" [color = blue];
"make0" -> "bootstrap-guile" [color = blue];
"tcc0" [label = "tcc0", shape = box, fontname = Helvetica];
"tcc0" -> "mes" [color = red];
"tcc0" -> "bootstrap-mescc-tools" [color = red];
"tcc0" -> "gash" [color = red];
"tcc0" -> "gash core utils" [color = red];
# "tcc0" -> "139838140100384" [color = red];
"tcc0" -> "bootstrap-guile" [color = red];
#"mes" [label = "mes", shape = box, fontname = Helvetica];
"mes" [label = "mes", shape = box, fontname = Helvetica];
"mes" -> "bootstrap-mes" [color = cyan3];
"mes" -> "bootstrap-mescc-tools" [color = cyan3];
"mes" -> "gash" [color = cyan3];
"mes" -> "gash core utils" [color = cyan3];
# "mes" -> "139838140100384" [color = cyan3];
"mes" -> "bootstrap-guile" [color = cyan3];
#"139837957673136" [label = "bootstrap-mes-rewired", shape = box, fontname = Helvetica];
#"139837957673136" [label = "bootstrap-mes", fontname = Helvetica];
#"bootstrap-mes" -> "139838140099152" [color = darkseagreen];
#"bootstrap-mes" -> "gash" [color = darkseagreen];
#"139838140099152" [label = "bootstrap-mes", shape = box, fontname = Helvetica];
#"139838140099152" [label = "bootstrap-mes", fontname = Helvetica];
"gash" [label = "gash", shape = box, fontname = Helvetica];
"gash" -> "bootstrap-guile" [color = red];
#"bootstrap-guile" [label = "bootstrap-guile+guild", shape = box, fontname = Helvetica];
"bootstrap-guile" [label = "bootstrap-guile", fontname = Helvetica];
# "bootstrap-guile" -> "139838140100384" [color = darkviolet];
# "139838140100384" [label = "bootstrap-guile", shape = box, fontname = Helvetica];
#"bootstrap-mescc-tools" [label = "bootstrap-mescc-tools", shape = box, fontname = Helvetica];
"bootstrap-mescc-tools" [label = "bootstrap-mescc-tools", fontname = Helvetica];
"gash core utils" [label = "gash-core-utils", shape = box, fontname = Helvetica];
"gash core utils" -> "bootstrap-guile" [color = red];
"gash core utils" -> "gash" [color = red];
"bzip2" [label = "bzip2", shape = box, fontname = Helvetica];
"bzip2" -> "make0" [color = red];
"bzip2" -> "tcc0" [color = red];
"bzip2" -> "gash" [color = red];
"bzip2" -> "gash core utils" [color = red];
# "bzip2" -> "139838140100384" [color = red];
"bzip2" -> "bootstrap-guile" [color = red];
"diffutils" [label = "diffutils", shape = box, fontname = Helvetica];
"diffutils" -> "make0" [color = blue];
"diffutils" -> "tcc0" [color = blue];
"diffutils" -> "gash" [color = blue];
"diffutils" -> "gash core utils" [color = blue];
# "diffutils" -> "139838140100384" [color = blue];
"diffutils" -> "bootstrap-guile" [color = blue];
"gzip" [label = "gzip", shape = box, fontname = Helvetica];
"gzip" -> "tcc0" [color = blue];
"gzip" -> "gash" [color = blue];
"gzip" -> "gash core utils" [color = blue];
# "gzip" -> "139838140100384" [color = blue];
"gzip" -> "bootstrap-guile" [color = blue];
"patch" [label = "patch", shape = box, fontname = Helvetica];
"patch" -> "make0" [color = blue];
"patch" -> "tcc0" [color = blue];
"patch" -> "gash" [color = blue];
"patch" -> "gash core utils" [color = blue];
# "patch" -> "139838140100384" [color = blue];
"patch" -> "bootstrap-guile" [color = blue];
"sed0" [label = "sed0", shape = box, fontname = Helvetica];
"sed0" -> "make0" [color = magenta];
"sed0" -> "tcc0" [color = magenta];
"sed0" -> "gash" [color = magenta];
"sed0" -> "gash core utils" [color = magenta];
# "sed0" -> "139838140100384" [color = magenta];
"sed0" -> "bootstrap-guile" [color = magenta];
"tcc" [label = "tcc", shape = box, fontname = Helvetica];
"tcc" -> "bzip2" [color = darkviolet];
"tcc" -> "make0" [color = darkviolet];
"tcc" -> "tcc0" [color = darkviolet];
"tcc" -> "gash" [color = darkviolet];
"tcc" -> "gash core utils" [color = darkviolet];
# "tcc" -> "139838140100384" [color = darkviolet];
"tcc" -> "bootstrap-guile" [color = darkviolet];
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

View File

@ -0,0 +1,116 @@
digraph "Guix package" {
"gcc-core0" [label = "gcc-core0@2.95.3", shape = box, fontname = Helvetica];
"gcc-core0" -> "binutils0" [color = peachpuff4];
"gcc-core0" -> "bash0" [color = peachpuff4];
"gcc-core0" -> "bzip2" [color = peachpuff4];
"gcc-core0" -> "diffutils" [color = peachpuff4];
"gcc-core0" -> "gzip" [color = peachpuff4];
"gcc-core0" -> "patch" [color = peachpuff4];
"gcc-core0" -> "sed0" [color = peachpuff4];
"gcc-core0" -> "tcc" [color = peachpuff4];
"gcc-core0" -> "make0" [color = peachpuff4];
"gcc-core0" -> "gash" [color = peachpuff4];
"gcc-core0" -> "gash core utils" [color = peachpuff4];
# "gcc-core0" -> "139838140100384" [color = peachpuff4];
"gcc-core0" -> "bootstrap-guile" [color = peachpuff4];
"binutils0" [label = "binutils0@2.14", shape = box, fontname = Helvetica];
"binutils0" -> "bash0" [color = cyan3];
"binutils0" -> "bzip2" [color = cyan3];
"binutils0" -> "diffutils" [color = cyan3];
"binutils0" -> "gzip" [color = cyan3];
"binutils0" -> "patch" [color = cyan3];
"binutils0" -> "sed0" [color = cyan3];
"binutils0" -> "tcc" [color = cyan3];
"binutils0" -> "make0" [color = cyan3];
"binutils0" -> "gash" [color = cyan3];
"binutils0" -> "gash core utils" [color = cyan3];
# "binutils0" -> "139838140100384" [color = cyan3];
"binutils0" -> "bootstrap-guile" [color = cyan3];
"bash0" [label = "bash0@2.05b", shape = box, fontname = Helvetica];
"bash0" -> "make0" [color = darkgoldenrod];
"bash0" -> "tcc0" [color = darkgoldenrod];
"bash0" -> "gash" [color = darkgoldenrod];
"bash0" -> "gash core utils" [color = darkgoldenrod];
# "bash0" -> "139838140100384" [color = darkgoldenrod];
"bash0" -> "bootstrap-guile" [color = darkgoldenrod];
"make0" [label = "make0@3.80", shape = box, fontname = Helvetica];
"make0" -> "tcc0" [color = blue];
"make0" -> "gash" [color = blue];
"make0" -> "gash core utils" [color = blue];
# "make0" -> "139838140100384" [color = blue];
"make0" -> "bootstrap-guile" [color = blue];
"tcc0" [label = "tcc0@0.9.26", shape = box, fontname = Helvetica];
"tcc0" -> "mes" [color = red];
"tcc0" -> "bootstrap-mescc-tools" [color = red];
"tcc0" -> "gash" [color = red];
"tcc0" -> "gash core utils" [color = red];
# "tcc0" -> "139838140100384" [color = red];
"tcc0" -> "bootstrap-guile" [color = red];
#"mes" [label = "mes@0.21-54-g85cadbb2c", shape = box, fontname = Helvetica];
"mes" [label = "mes@0.22", shape = box, fontname = Helvetica];
"mes" -> "bootstrap-mes@0.19" [color = cyan3];
"mes" -> "bootstrap-mescc-tools" [color = cyan3];
"mes" -> "gash" [color = cyan3];
"mes" -> "gash core utils" [color = cyan3];
# "mes" -> "139838140100384" [color = cyan3];
"mes" -> "bootstrap-guile" [color = cyan3];
#"139837957673136" [label = "bootstrap-mes-rewired@0.19", shape = box, fontname = Helvetica];
#"139837957673136" [label = "bootstrap-mes@0.19", fontname = Helvetica];
#"bootstrap-mes" -> "139838140099152" [color = darkseagreen];
#"bootstrap-mes" -> "gash" [color = darkseagreen];
#"139838140099152" [label = "bootstrap-mes@0", shape = box, fontname = Helvetica];
#"139838140099152" [label = "bootstrap-mes@0.19", fontname = Helvetica];
"gash" [label = "gash@0.2.0", shape = box, fontname = Helvetica];
"gash" -> "bootstrap-guile" [color = red];
#"bootstrap-guile" [label = "bootstrap-guile+guild@2.0", shape = box, fontname = Helvetica];
"bootstrap-guile" [label = "bootstrap-guile@2.0", fontname = Helvetica];
# "bootstrap-guile" -> "139838140100384" [color = darkviolet];
# "139838140100384" [label = "bootstrap-guile@2.0", shape = box, fontname = Helvetica];
#"bootstrap-mescc-tools" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica];
"bootstrap-mescc-tools" [label = "bootstrap-mescc-tools@0.5.2", fontname = Helvetica];
"gash core utils" [label = "gash-core-utils@0.0", shape = box, fontname = Helvetica];
"gash core utils" -> "bootstrap-guile" [color = red];
"gash core utils" -> "gash" [color = red];
"bzip2" [label = "bzip2@1.0.6", shape = box, fontname = Helvetica];
"bzip2" -> "make0" [color = red];
"bzip2" -> "tcc0" [color = red];
"bzip2" -> "gash" [color = red];
"bzip2" -> "gash core utils" [color = red];
# "bzip2" -> "139838140100384" [color = red];
"bzip2" -> "bootstrap-guile" [color = red];
"diffutils" [label = "diffutils@2.7", shape = box, fontname = Helvetica];
"diffutils" -> "make0" [color = blue];
"diffutils" -> "tcc0" [color = blue];
"diffutils" -> "gash" [color = blue];
"diffutils" -> "gash core utils" [color = blue];
# "diffutils" -> "139838140100384" [color = blue];
"diffutils" -> "bootstrap-guile" [color = blue];
"gzip" [label = "gzip@1.2.4", shape = box, fontname = Helvetica];
"gzip" -> "tcc0" [color = blue];
"gzip" -> "gash" [color = blue];
"gzip" -> "gash core utils" [color = blue];
# "gzip" -> "139838140100384" [color = blue];
"gzip" -> "bootstrap-guile" [color = blue];
"patch" [label = "patch@2.5.9", shape = box, fontname = Helvetica];
"patch" -> "make0" [color = blue];
"patch" -> "tcc0" [color = blue];
"patch" -> "gash" [color = blue];
"patch" -> "gash core utils" [color = blue];
# "patch" -> "139838140100384" [color = blue];
"patch" -> "bootstrap-guile" [color = blue];
"sed0" [label = "sed0@1.18", shape = box, fontname = Helvetica];
"sed0" -> "make0" [color = magenta];
"sed0" -> "tcc0" [color = magenta];
"sed0" -> "gash" [color = magenta];
"sed0" -> "gash core utils" [color = magenta];
# "sed0" -> "139838140100384" [color = magenta];
"sed0" -> "bootstrap-guile" [color = magenta];
"tcc" [label = "tcc@0.9.27", shape = box, fontname = Helvetica];
"tcc" -> "bzip2" [color = darkviolet];
"tcc" -> "make0" [color = darkviolet];
"tcc" -> "tcc0" [color = darkviolet];
"tcc" -> "gash" [color = darkviolet];
"tcc" -> "gash core utils" [color = darkviolet];
# "tcc" -> "139838140100384" [color = darkviolet];
"tcc" -> "bootstrap-guile" [color = darkviolet];
}

Some files were not shown because too many files have changed in this diff Show More