mirror of
https://github.com/fosslinux/live-bootstrap.git
synced 2026-03-19 17:53:00 +01:00
Add mes and mescc-tools-extra
mescc-tools-extra contains two important tools: - cp - chmod mes first builds itself from a mes 0.21 seed as used by guix, and then builds a mes 0.22 and then mes 0.22 using that created mes 0.22. It does /not/ use bootstrap.sh as we don't have a proper shell at this point, it has been manually adapted for kaem.
This commit is contained in:
parent
2706e07556
commit
649d7b68dc
1029 changed files with 120985 additions and 18 deletions
99
sysa/mes-0.22/doc/announce/ANNOUNCE-0.3
Normal file
99
sysa/mes-0.22/doc/announce/ANNOUNCE-0.3
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
Subject: on bootstrapping: first Mes 0.3 released
|
||||
|
||||
I am pleased to announce the first release of Mes: 0.3, representing
|
||||
152 commits over 3 months since the second status report[1].
|
||||
|
||||
* About
|
||||
|
||||
Mes aims to create an entirely source-based bootstrapping path. The
|
||||
target is to [have GuixSD] boostrap from a minimal, easily inspectable
|
||||
binary --that should be readable as source-- into something close to
|
||||
R6RS Scheme.
|
||||
|
||||
As bootstrapping is presumably easiest and probably most fun with
|
||||
Scheme, the next step for Mes is mescc: a C compiler/linker to
|
||||
boostrap into GNU Gcc and GNU Guile, possibly via Tiny-CC.
|
||||
|
||||
It currently has an interpreter written in C (mes) with Garbage
|
||||
Collector (Jam Scraper), a library of loadable Scheme modules with
|
||||
test suite just barely enough to support a simple REPL (repl.mes)
|
||||
and a proof-of-concept c-compiler (mescc.mes) that produces an elf
|
||||
from the simplest of C files.
|
||||
|
||||
Mes is inspired by The Maxwell Equations of Software: LISP-1.5[2]
|
||||
-- John McCarthy page 13
|
||||
|
||||
* Download
|
||||
|
||||
git clone https://gitlab.com/janneke/mes
|
||||
|
||||
wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.3 -O mes-0.3.tar.gz
|
||||
|
||||
Mes runs from the source tree and can also be built, packaged and
|
||||
installed in Guix[SD] by the usual
|
||||
|
||||
guix package -f guix.scm
|
||||
|
||||
|
||||
* Changes in 0.3 since 0.2
|
||||
** Core
|
||||
*** Number-based rather than pointer-based cells.
|
||||
*** Garbage collector aka Jam scraper.
|
||||
A variant on SICP's stop and copy Garbage Collector (Jam Scraper?)
|
||||
algorithm has been implemented.
|
||||
*** The reader has been moved to Scheme.
|
||||
** Language
|
||||
*** Simple loadable modules.
|
||||
*** Srfi-9 and match use handwritten syntax-rules (mes-use-module (mes syntax)).
|
||||
*** Optional syntax-case using psyntax (mes-use-module (mes psyntax)).
|
||||
** Noteworthy bug fixes
|
||||
*** Srfi-0 has been fixed.
|
||||
|
||||
* Changes in 0.2 since 0.1
|
||||
** Core
|
||||
*** Names of symbols and strings are list of characters [WAS: c-string].
|
||||
*** Sc-expand from pre-R6RS's psyntax has been integrated.
|
||||
*** Undefined variable error now shows the name of the undefined variable.
|
||||
*** There is now only one SCM type for builtin functions.
|
||||
*** Macro expansion has been cleaned-up.
|
||||
** Language
|
||||
*** Mes now provides a subset of R6RS.
|
||||
*** Mes now provides syntax-case.
|
||||
*** Mes now provides `load'.
|
||||
** Noteworthy bug fixes
|
||||
*** Using values as second parameter of builtin function yields first value.
|
||||
*** Quoted internals (e.g. 'if 'lambda) are now symbols.
|
||||
*** Syntax error now exits.
|
||||
*** Make+Bash voodoo has been replaced by build-aux/mes-snarf.scm.
|
||||
*** Apply now accepts multiple list arguments.
|
||||
*** Apply of character, inernal, number, string is an error.
|
||||
*** Quasisyntax reading
|
||||
|
||||
* Changes in 0.1 (since progress report #2)
|
||||
** Core
|
||||
*** expand_macro is now a separate function.
|
||||
*** A smaller core can now compiled using BOOT=1.
|
||||
The smaller core does not provide define, define-macro, or quasiquote;
|
||||
these are provided from a Scheme version of implemented eval/apply.
|
||||
** Language
|
||||
*** Mes now provides a subset of R5RS.
|
||||
*** Mes now provides let-syntax.
|
||||
*** Mes now provides match.
|
||||
*** Mes now provides quasisyntax, unsyntax and unsyntax-splicing.
|
||||
** User interface
|
||||
*** Mes now provides a REPL, run:
|
||||
scripts/repl.mes
|
||||
*** Mes compiler can be run as a script:
|
||||
scripts/mescc.mes doc/examples/main.c
|
||||
*** Macro expansion can be inspected in the REPL, e.g.:
|
||||
,expand (and 0 1)
|
||||
** Noteworthy bug fixes
|
||||
*** Performance: scripts/mescc.mes now takes 2s to compile main.c (was 1'20").
|
||||
*** Symbols are now truly unique.
|
||||
* '(), #t, #f are no longer symbols.
|
||||
|
||||
Greetings,
|
||||
Jan
|
||||
|
||||
[1] https://lists.nongnu.org/archive/html/guile-user/2016-09/msg00061.html
|
||||
[2] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
|
||||
Loading…
Add table
Add a link
Reference in a new issue