From d6bd78ed8dd8649eeb9a9e92824b9a4a8799f962 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Sat, 20 Oct 2018 09:53:44 +0200 Subject: [PATCH] doc: Release update. WIP. * AUTHORS: Update. * HACKING: Update. * NEWS: Update. * doc/mes.guix: Update. * scripts/mescc.in: Update. * mes/module/mes/boot-0.scm.in: Update. --- AUTHORS | 7 ++++ HACKING | 48 +++++++++++++-------------- NEWS | 64 ++++++++++++++++++++++++++++++++++++ doc/mes.texi | 6 ++-- mes/module/mes/boot-0.scm.in | 4 +++ scripts/mescc.in | 4 +++ 6 files changed, 106 insertions(+), 27 deletions(-) diff --git a/AUTHORS b/AUTHORS index 4e716b8f..ef97cc39 100644 --- a/AUTHORS +++ b/AUTHORS @@ -18,6 +18,13 @@ scaffold/tests/98-fopen.c Han-Wen Nienhuys lib/string/memmem.c (_memmem, memmem) +Peter de Wachter +Small fixes and additions to +lib/x86-mes/x86.M1 +lib/x86_64-mes/x86_64.M1 +include/stdint.h +module/mescc/compile.mes + rain1 scaffold/tests/90-goto-var.c scaffold/tests/91-goto-array.c diff --git a/HACKING b/HACKING index a6b18d9f..ffa91703 100644 --- a/HACKING +++ b/HACKING @@ -1,7 +1,7 @@ -*- org -*- #+TITLE: Hacking GNU Mes -Copyright © 2016, 2017,2018 Jan (janneke) Nieuwenhuizen +Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -36,8 +36,8 @@ To help development we assume ./configure sets these variables for make prefix -- "" Mes is supposed to serve as a full equivalent for Guile, however Mes -~30 times slower than Guile. That's why we usually don't use Mes -during development. +is still about 2 to 10 times slower than Guile. That's why we usually +don't use Mes during development. Gcc is used to verify the sanity of our C sources. @@ -52,14 +52,11 @@ Target prefix: x86_64-mes-gcc. Guile is used to develop MesCC, the C compiler in Scheme that during bootstrapping will be executed by Mes. -mes is built from src/*.c and some out/src/*.h files that are snarfed from -src/*.c by build-aux/mes-snarf.scm. - -Running ./make.scm produces a `script' file. - ** BOOTSTRAP BUILD + ./configure.sh [--prefix=PREFIX] ./build.sh + ./install.sh In bootstrap mode, we don't have gcc (CC), we don't have a 32 bit gcc (CC32), we have no guile (GUILE)...but we should have hex2, M1, and @@ -71,29 +68,30 @@ mes.c. * ROADMAP ** TODO *** release 0.x, unsorted + - mes: prepare src/mes.c for M2-Planet transpiler, + Jeremiah branched-out from mes; see https://github.com/oriansj/mes-m2. + - mes: performance! + - mes/mescc: proper docstrings, api reference documentation. - replace bootstrap utils with Gash: bash, coreutils, grep, gzip, sed, tar. + - mes: real module support, Guile compatible (define-module, + define-public, export). + - mescc: ARMv7/AArch64 support. +*** after release 1.0 + - mes/mescc: bootstrap a `bootstrap-Guile' before bootstrapping tcc? - tcc: remove or upstream patches from tcc-boot. - tcc: build 0.9.27 directly instead of via 0.9.26, see tinycc wip-bootstrappable@0.9.27 branch - - mes: performance! - - mes: prepare src/mes.c for M2-Planet transpiler, - Jeremiah branched-out from mes; see https://github.com/oriansj/mes-m2. - - mes: real module support, bonus for supporting Guile's define-module/define-public syntax. - mes/mescc: bootstrap a minimal-Guile? - + libguile/{eval,init,list,strings,values,..}.c + + libguile/{eval,init,list,strings,values,..}. + ice-9/eval.scm - mescc: have mes-tcc pass all scaffold/tests, scaffold/tinycc tests. - - mescc: support long long? - - mescc: full support for floats? - - mescc: some success with 8cc,pcc,guile/libguile/eval.c? - - build: guile/guix/make.scm: add file-types, intermediate, hash all dependencies - - get full source syntax-case up (Andre van Tonder?) OR drop it. - https://srfi.schemers.org/srfi-72/srfi-72.html - psyntax/syntax-case and rewrite Nyacc without syntax-case+R7RS Ellipsis. - - mescc: split-off MesCC as as standalone Guile C compiler project. -*** release 1.0 - - more architectures (does GuixSD require this, i.e. before 1.0?). + - syntax-case bootstrap problem + + resolve portable syntax-case bootstrap, or + + get full source syntax-case up (Andre van Tonder?) + https://srfi.schemers.org/srfi-72/srfi-72.html, or + + ... drop it? + - mescc: the Hurd support. ** DONE *** 0.18 GNU mes now supports GuixSD bootstrap (x86,x86_64) and has native x86_64 support. *** 0.17.1 GNU Mes now allows removing glibc, binutils and gcc from the GuixSD bootstrap. @@ -139,6 +137,9 @@ enough to work on compiling tinycc's tcc.c albeit a somewhat modified version. * Bugs +** mes: performance, Mes is now 2-10x slower than Guile. +** mes/mescc lack support for the Hurd. +** mes: gcc-x86_64 compiled mes segfaults with small arena, or gc_up_arena. ** mes: gcc-x86 compiled, tests/srfi-13.test number->string INT-MIN fails: test: number->string INT-MIN: fail expected: -2147483648 @@ -149,7 +150,6 @@ actual: -./,),(-*,( ** mes+mescc: parse tcc.c->tcc.E works, compile tcc.E -> tcc.M1 segfaults. time GUILE_LOAD_PATH=/home/janneke/src/nyacc/module:$GUILE_LOAD_PATH ../mes/scripts/mescc -E -o tcc.E -I . -I ../mes/lib -I ../mes/include -D 'CONFIG_TCCDIR="usr/lib/tcc"' -D 'CONFIG_TCC_CRTPREFIX="usr/lib:{B}/lib:."' -D 'CONFIG_TCC_ELFINTERP="/gnu/store/70jxsnpffkl7fdb7qv398n8yi1a3w5nx-glibc-2.26.105-g0890d5379c/lib/ld-linux.so.2"' -D 'CONFIG_TCC_LIBPATHS="/home/janneke/src/tinycc/usr/lib:{B}/lib:."' -D 'CONFIG_TCC_SYSINCLUDEPATHS="../mes/include:usr/include:{B}/include"' -D CONFIG_USE_LIBGCC=1 -D 'TCC_LIBGCC="/home/janneke/src/tinycc/usr/lib/libc+tcc-gcc.mlibc-o"' -D CONFIG_TCC_STATIC=1 -D ONE_SOURCE=yes -D TCC_TARGET_I386=1 -D BOOTSTRAP=1 tcc.c time GUILE_LOAD_PATH=/home/janneke/src/nyacc/module:$GUILE_LOAD_PATH MES_ARENA=200000000 ../mes/scripts/mescc -c -o tcc.M1 tcc.E -** mes: with-fluids: tests/fluids.test test 7 fails with Mes. ** mescc: 7n-struct-struct-array.c: struct file f = {"first.h"}; ** test/match.test ("nyacc-simple"): hygiene problem in match * OLD: Booting from LISP-1.5 into Mes diff --git a/NEWS b/NEWS index 8735c97e..401cc6a3 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,70 @@ Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen Please send Mes bug reports to bug-mes@gnu.org. +* Changes in 0.19 since 0.18 +** Core +*** The build system has been simplified. +*** Mes now prints a backtrace upon error. +*** Performance has been improved 2-8 times, making Mes 2-10 times slower than Guile. +*** Mes now supports a module type and uses a `boot-module'. +*** Mes now supports a hash_table type. +*** Mes now supports a struct type. +*** Mes now supports building a %bootstrap-mes seed from Guix. +** Language +*** Records are now implemented using struct (WAS: vector). +*** 44 new functions +ceil, +char-downcase, +char-set-adjoin, +char-set-complement, +char-upcase, +current-time, +delete-file, +dup, +dup2, +file-exists?, +floor, +frame-printer, +get-internal-run-time, +getcwd, +gettimeofday, +hash, +hash-ref, +hash-set!, +hash-table-printer, +hashq, +hashq-get-handle, +hashq-ref, +hashq-set, +inexact->exact, +make-hash-table, +make-stack, +make-struct, +module-define!, +module-printer, +module-ref, +module-variable, +read-line, +round, +stack-length, +stack-ref, +string-downcase, +string-tokenize, +string-upcase, +struct-length, +struct-ref, +struct-set! +struct-vtable, +struct-vtable, +with-error-to-file. +** MesCC +*** MesCC now supports compiling Bash. +*** Assembly defines have been cleaned-up: duplicates deleted, missing added, wrong fixed. +** Noteworthy bug fixes +*** MesCC now supports the unary plus operator. +*** MesCC now supports the `U' integer suffix. +*** MesCC now comes with INTnn_MIN/MAX, UINTnn defines in stdint.h. +*** MesCC now always exits non-zero when assembler or linker fail. * Changes in 0.18 since 0.17.1 ** Core *** Mes/MesCC now supports x86_64. diff --git a/doc/mes.texi b/doc/mes.texi index 2f4feb1c..1b0a72cd 100644 --- a/doc/mes.texi +++ b/doc/mes.texi @@ -33,7 +33,7 @@ Documentation License''. @end direntry @titlepage -@title Mes Reference Manual +@title GNU Mes Reference Manual @subtitle Full Source Bootstrapping of the GNU GuixSD Operating System @author Jan (janneke) Nieuwenhuizen @@ -49,7 +49,7 @@ Edition @value{EDITION} @* @c ********************************************************************* @node Top -@top Mes +@top GNU Mes This document describes GNU Mes version @value{VERSION}, a bootstrappable Scheme interpreter and C compiler written for bootstrapping the GNU system. @@ -1039,7 +1039,7 @@ Please send bug reports with full details to @email{bug-mes@@gnu.org}. @chapter Acknowledgments We would like to thank the following people for their help: Jeremiah -Orians, pdewacht, rain1, Ricardo Wurmus, Rutger van Beusekom. +Orians, Peter de Wachter, rain1, Ricardo Wurmus, Rutger van Beusekom. We also thank Ludovic Courtès for creating GuixSD and making the bootstrap problem so painfully visible, John McCarthy for creating diff --git a/mes/module/mes/boot-0.scm.in b/mes/module/mes/boot-0.scm.in index 9351c3b3..9ab74666 100644 --- a/mes/module/mes/boot-0.scm.in +++ b/mes/module/mes/boot-0.scm.in @@ -285,6 +285,10 @@ Ignored for Guile compatibility: --fresh-auto-compile --no-auto-compile -C,--compiled-path=DIR + +Report bugs to: bug-mes@gnu.org +GNU Mes home page: +General help using GNU software: " (or (and usage? (current-error-port)) (current-output-port))) (exit (or (and usage? 2) 0))) options) diff --git a/scripts/mescc.in b/scripts/mescc.in index 4ea84daa..6e533617 100755 --- a/scripts/mescc.in +++ b/scripts/mescc.in @@ -136,6 +136,10 @@ Environment variables: MES=BINARY run on mes-executable BINARY {mes,guile} MES_DEBUG=LEVEL show debug output with verbosity LEVEL {0..5} NYACC_TRACE=1 show Nyacc progress + +Report bugs to: bug-mes@gnu.org +GNU Mes home page: +General help using GNU software: ") (exit (or (and usage? 2) 0))) options))))