doc: Migration to Libera Chat.
[mes.git] / ROADMAP
1                                                               -*- org -*-
2 #+TITLE: Tentative GNU Mes Road Map
3
4 Copyright ¬© 2016,2017,2018,2019,2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
5
6   Copying and distribution of this file, with or without modification,
7   are permitted in any medium without royalty provided the copyright
8   notice and this notice are preserved.
9
10 The goals of the GNU Mes project are two-fold:
11
12   - to bootstrap the GNU System purely from source, without using any binary
13     seeds.
14
15   - to aid the Reproducible-Builds.org effort; demonstrate the impact and
16     importance of GNU and Software Freedom.
17
18 Since its inception, the project has gone a long way towards that goal.  Below
19 is a list of items we want for version "1.0" of GNU Mes.
20
21 You're welcome to discuss this road map on bug-mes@gnu.org or #bootstrappable
22 on Libera¬†Chat!
23
24 * TODO
25 ** release 0.x, unsorted
26   - Integrate Reduced Binary Seed bootstrap for ARM on GNU Guix;
27     see branch wip-arm-bootstrap.
28   - Introduce the Reduced Binary Seed bootstrap to NixOS (Debian,
29     Arch, Gentoo, ...?).
30   - Full Source Bootstrap:
31     + compile mes.c using M2-Planet; see branch wip-m2,
32     + integrate into GNU Guix; see branch wip-full-source-bootstrap.
33   - Full Guile-compatible module support; see branch wip-module.
34   - RISC-V support: Mes C Library and MesCC.
35   - AArch64 support: Mes C Library and MesCC.
36   - Simplify eval-apply and other core functionality
37     + See https://github.com/oriansj/mes-m2 fork/rewrite of mes.
38   - Support native x86_64 bootstrap.
39   - Simplify MesCC ``MesCC should optimize ease of convincing us of its
40     correctness''.
41   - Switch to Autotools for development build (bootstrap builds use
42     kaem.run and bootstrap.sh); see branch wip-auto.
43 ** after release 1.0
44   - Build Guix packages using Mes: run or simplify (guix build utils),
45     (guix build gnu-build-system).
46   - Build Guix packages without guix-daemon.  See Ludovic's initrd build
47     work.
48   - Bootstrap support for the Hurd.  Most needed now are fork and exec.
49   - Replace the initial gcc-2.95.3 with gcc-4.6.4.
50   - FreeBSD, *BSD?
51   - Tiny CC:
52      + remove or upstream patches from tcc-boot,
53      + build 0.9.27 directly instead of via 0.9.26; see tinycc branch
54      wip-bootstrappable@0.9.27
55   - Skip Tiny CC: Build gcc using MesCC.
56   - Better garbage collector.
57   - mes/mescc: proper docstrings, api reference documentation.
58   - mes/mescc: bootstrap a minimal Guile?
59     + libguile/{eval,init,list,strings,values,..}.
60     + ice-9/eval.scm
61   - syntax-case bootstrap problem
62     + resolve portable syntax-case bootstrap, or
63     + get full source syntax-case up (Andre van Tonder?)
64       https://srfi.schemers.org/srfi-72/srfi-72.html, or
65     + ... drop it?
66 * DONE
67   - GNU Mes now supports building Tiny CC on ARM.
68   - Merge the Scheme-only bootstrap which uses Gash and Gash Core
69     Utilities to remove from bootstrap-binary seed : Awk, Bash, Core
70     Utilities, Grep, Gzip, Sed, Tar.
71   - 0.22 GNU Mes now builds reproducibly cross-platform, runs on the
72     Hurd and has better support for other distributions and kernels.
73   - 0.21 GNU Mes now supports a Scheme-only bootstrap and is packaged in
74     Debian GNU/Linux.
75   - 0.20 GNU Mes brings the Reduced Binary Source bootstrap to Guix.
76   - 0.19 GNU Mes now compiles TinyCC in ~8min and supports building Bash and
77     GNU Tar.
78   - 0.18 GNU Mes now supports GuixSD bootstrap (x86,x86_64) and has native
79     x86_64 support.
80   - 0.17.1 GNU Mes now allows removing glibc, binutils and gcc from the GuixSD
81     bootstrap.
82   - 0.17 GNU Mes is now an official GNU project and bootstraps gcc-4.7.4.
83   - 0.16.1 Mes now has info docs and installs ootb on Debian buster/testing.
84   - 0.16 Mes Lib C now bootstraps glibc-2.2.5, binutils-2.20.1, gcc-4.1.0.
85   - 0.15: MesCC now has a libc+gnu that supports compiling binutils-2.14,
86     gcc-2.95.3 and glibc-2.2.5.
87   - 0.14: Mes+MesCC now compiles a slightly patched self-hosting tcc.
88   - 0.13: Mes+MesCC now compiles a modified, functional tcc.c (~25,000LOC) in
89     1h30'.
90   - 0.12: Mes+MesCC now compiles mes.c (~3000LOC) in ~4min.
91   - 0.11: MesCC now compiles a mes-tcc that passes 26/69 of mescc's C tests.
92   - 0.10: Mescc now compiles a mes-tcc that compiles a trivial C to a running
93     a.out.
94   - 0.9: Mescc now writes M1 macro assembly files and compiles tcc.
95   - 0.8: Mescc now writes object files in stage0's labeled hex2 format.
96   - 0.7: Mescc supports -E, -c, -o options, include more complete set of
97     header files, enough to work on compiling tinycc's tcc.c albeit a somewhat
98     modified version.
99   - 0.6: Work with unmodified, unbundled Nyacc; compile 33/55 tinycc's
100     tests/test2 suite.
101   - 0.5: Mutual self-hosting Scheme interpreter and C compiler: mes.c and
102     mescc, Support call-with-current-continuation, refactor catch/throw
103   - 0.4: Support Nyacc, Gcc-compiled Mes compiles minimal main.c using nyacc
104   - 0.3: Garbage collector
105   - 0.2: Support psyntax
106   - 0.1: Mes eval/apply feature complete; support syntax-rules, compile main.c
107     using LALR, dump ELF