diff --git a/rootfs.sh b/rootfs.sh
index 90d9b8f..a02fffe 100755
--- a/rootfs.sh
+++ b/rootfs.sh
@@ -11,9 +11,6 @@ sudo mount -t tmpfs -o size=8G tmpfs tmp
# base: mescc-tools-seed
-#debugging
-cp busybox.static tmp/
-
# copy in all the mescc-tools-seed stuff
cp -r mescc-tools-seed/x86/* tmp
cp -r mescc-tools-seed/{M2-Planet,mes-m2,mescc-tools} tmp/
@@ -30,10 +27,15 @@ mkdir tmp/bin
# after mescc-tools-seed we get into our own little directory because
# the mescc-tools-seed one is hella messy
mkdir tmp/after/bin -p
+mkdir tmp/after/{lib,include}
+mkdir tmp/after/include/{mes,gnu,linux,sys,mach}
# put all the kaems for after in
cp after.kaem tmp/
cp after.kaem.run tmp/after/kaem.run
+# mescc-tools-extra
+cp -r mescc-tools-extra tmp/after/
+
# blynn-compiler
pushd tmp/after
git clone ../../blynn-compiler-oriansj blynn-compiler
@@ -41,6 +43,13 @@ cp ../../blynn-compiler.kaem blynn-compiler/go.kaem
mkdir blynn-compiler/{bin,generated}
popd
+# mes
+cp -r mes-0.22 tmp/after/
+ln -s . tmp/after/mes-0.22/x86-mes
+#cp -r nyacc-0.99.3 tmp/after/
+cp -r mes-bins tmp/after/
+cp mes.kaem tmp/after/
+
# General cleanup
find tmp -name .git -exec rm -rf \;
@@ -55,7 +64,7 @@ qemu-system-x86_64 -enable-kvm \
-no-reboot \
-kernel ../../kernel -initrd initramfs.igz -append console=ttyS0,kernel.panic=2
-# Cleanup
-sudo umount tmp
+cd ../..
-popd
+# Cleanup
+sudo umount sysa/tmp
diff --git a/sysa/after.kaem b/sysa/after.kaem
index e386efc..dbcf722 100755
--- a/sysa/after.kaem
+++ b/sysa/after.kaem
@@ -18,15 +18,5 @@
cd after
-# Prepare the directory
-../catm bin/hex2 ../bin/hex2
-../catm bin/M1 ../bin/M1
-../catm bin/M2-Planet ../bin/M2-Planet
-../catm bin/blood-elf ../bin/blood-elf
-../catm bin/get_machine ../bin/get_machine
-../catm bin/mes-m2 ../bin/mes-m2
-../catm bin/kaem ../bin/kaem
-../catm bin/catm ../catm
-
# Finally, reinvoke kaem in this directory
../bin/kaem --file kaem.run
diff --git a/sysa/after.kaem.run b/sysa/after.kaem.run
index b491126..238c762 100755
--- a/sysa/after.kaem.run
+++ b/sysa/after.kaem.run
@@ -16,10 +16,32 @@
# You should have received a copy of the GNU General Public License
# along with live-bootstrap. If not, see .
-PATH=/bin
+set -ex
-# Part 2: blynn-compiler
+PATH=/after/bin:/bin
+
+# Part 2: cp and chown (mescc-tools-extra)
+cd mescc-tools-extra
+kaem --file go.kaem
+cd ..
+
+# Part 3: Remove remaining dependencies on / (root of /after)
+/after/bin/cp ../bin/hex2 bin/hex2
+/after/bin/cp ../bin/M1 bin/M1
+/after/bin/cp ../bin/M2-Planet bin/M2-Planet
+/after/bin/cp ../bin/blood-elf bin/blood-elf
+/after/bin/cp ../bin/get_machine bin/get_machine
+/after/bin/cp ../bin/mes-m2 bin/mes-m2
+/after/bin/cp ../bin/kaem bin/kaem
+/after/bin/cp ../catm bin/catm
+/after/bin/chmod 755 bin/hex2 bin/M1 bin/M2-Planet bin/blood-elf \
+ bin/get_machine bin/mes-m2 bin/kaem bin/catm
+
+# Part 4: blynn-compiler
cd blynn-compiler
kaem --file go.kaem
cd ..
+
+# Part 5: mes
+kaem --file mes.kaem
diff --git a/sysa/busybox.static b/sysa/busybox.static
deleted file mode 100755
index 336b302..0000000
Binary files a/sysa/busybox.static and /dev/null differ
diff --git a/sysa/mes-0.22/.dir-locals.el b/sysa/mes-0.22/.dir-locals.el
new file mode 100644
index 0000000..3196ef8
--- /dev/null
+++ b/sysa/mes-0.22/.dir-locals.el
@@ -0,0 +1,112 @@
+;;; GNU Mes --- Maxwell Equations of Software
+;;; Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen
+;;;
+;;; 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 .
+
+;; The GNU project defaults. These are also the GNU Emacs defaults.
+;; Re-asserting theme here, however, as a courtesy for setups that use
+;; a global override.
+(
+ ;; For writing GNU C code, see
+ ;; https://www.gnu.org/prep/standards/html_node/Writing-C.html
+ (c-mode . ((c-file-style . "gnu")
+ (indent-tabs-mode . nil)))
+
+ (makefile-mode . ((indent-tabs-mode . t)))
+ (asm-mode . ((indent-tabs-mode . t)))
+
+ (nil . ((indent-tabs-mode . nil)
+ (fill-column . 72)))
+
+ (scheme-mode
+ .
+ ((geiser-active-implementations . (guile))
+ (eval
+ .
+ (progn
+ (defun prefix-dir-locals-dir (elt)
+ (concat (locate-dominating-file buffer-file-name ".dir-locals.el") elt))
+ (mapcar
+ (lambda (dir) (add-to-list 'geiser-guile-load-path dir))
+ (mapcar
+ #'prefix-dir-locals-dir
+ '("scripts" "module")))))))
+
+ (texinfo-mode . ((indent-tabs-mode . nil)
+ (fill-column . 72)))
+ (nil .
+ ((eval
+ .
+ (progn
+ (let ((top (locate-dominating-file default-directory ".dir-locals.el"))))
+
+ (defun guile--manual-look-up (id mod)
+ (message "guile--manual-look-up id=%s => %s mod=%s" id (symbol-name id) mod)
+ (let ((info-lookup-other-window-flag
+ geiser-guile-manual-lookup-other-window-p))
+ (info-lookup-symbol (symbol-name id) 'scheme-mode))
+ (when geiser-guile-manual-lookup-other-window-p
+ (switch-to-buffer-other-window "*info*"))
+ (search-forward (format "%s" id) nil t))
+
+ (add-hook 'before-save-hook 'delete-trailing-whitespace nil t)
+
+ (defun guix-switch-profile (&optional profile)
+ "reset Emacs' environment by snarfing PROFILE/etc/profile"
+
+ (defun matches-in-string (regexp string)
+ "return a list of matches of REGEXP in STRING."
+ (let ((matches))
+ (save-match-data
+ (string-match "^" "")
+ (while (string-match regexp string (match-end 0))
+ (push (or (match-string 1 string) (match-string 0 string)) matches)))
+ matches))
+
+ (interactive "fprofile: ")
+ (let* ((output (shell-command-to-string (concat "GUIX_PROFILE= /bin/sh -x " profile "/etc/profile")))
+ (exports (matches-in-string "^[+] export \\(.*\\)" output)))
+ (mapcar (lambda (line) (apply #'setenv (split-string line "="))) exports )))
+
+ (defun shell-args-to-string (&rest args)
+ (shell-command-to-string (mapconcat 'identity args " ")))
+
+ (defun as (string &optional arch)
+ (let* ((arch (or arch "--64"))
+ (asm (subst-char-in-string ?_ ?\s string))
+ (foo (message "asm:%S" asm))
+ (result (shell-args-to-string "as" arch (concat "<(echo '" asm "')")))
+ (disassembly (shell-args-to-string "objdump" "-d" "a.out"))
+ (foo (message "disassembly: %S" disassembly))
+ (match (string-match "^ 0:[\t]\\([^\t]*\\)" disassembly))
+ (code (match-string 1 disassembly))
+ (code (apply 'concat (split-string code " " t))))
+ (insert " ")
+ (insert code)))
+
+ (defun as-32 (point mark)
+ (interactive "r")
+ (let* ((string (buffer-substring point mark))
+ (code (as string "--32")))
+ (insert " ")
+ (insert code)))
+
+ (defun as-64 (point mark)
+ (interactive "r")
+ (let* ((string (buffer-substring point mark))
+ (code (as string "--64")))
+ (insert " ")
+ (insert code))))))))
diff --git a/sysa/mes-0.22/.gitignore b/sysa/mes-0.22/.gitignore
new file mode 100644
index 0000000..7c534a1
--- /dev/null
+++ b/sysa/mes-0.22/.gitignore
@@ -0,0 +1,117 @@
+*-
+*~
+.#*
+*.E
+*.s
+*.blood-elf
+*.blood-elf-M1
+*.blood-elf-hex2
+*.gcc
+*.gcc-o
+*.gcc-out
+*.gcc-stdout
+*.go
+*.guile
+*.guile-log
+*.log
+*.trs
+*.mes-gcc
+*.mes-gcc-o
+*.mes-gcc-out
+*.mes-gcc-out
+*.mes-gcc-stdout
+*.mes-o
+*.mes-out
+*.mes-stdout
+*.mes-tcc
+*.mes-tcc-o
+*.mes-tcc-out
+*.mes-tcc-out
+*.mes-tcc-stdout
+*.mini-M1
+*.mini-guile
+*.mini-hex2
+*.a
+*.o
+*.seed-out
+
+/lib/tests/*/[0-9a][0-9a-z]-*
+!/lib/tests/*/*.c
+!/lib/tests/*/*.exit
+!/lib/tests/*/*.stdout
+
+/scaffold/argv
+/scaffold/hello
+/scaffold/main
+/scaffold/micro-mes
+/scaffold/tiny-mes
+
+/scaffold/tests/[0-9a][0-9a-z]-*
+/scaffold/tests/t.*
+!/scaffold/tests/*.c
+!/scaffold/tests/*.exit
+!/scaffold/tests/*.stdout
+
+/.config.make
+/.store
+/.tarball-version
+
+/out
+?
+?.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/mes.1
+/doc/mes.info
+/doc/mes.pdf
+/doc/mesar.1
+/doc/mescc.1
+/doc/version.texi
+/mes.aux
+/mes.cp
+/mes.cps
+/mes.fn
+/mes.info
+/mes.tmp
+/mes.toc
+/mes.vr
+/mes.vrs
+
+/config.status
+/pre-inst-env
+/bootstrap.sh
+/build.sh
+/check.sh
+/install.sh
+/uninstall.sh
+/mes/module/mes/boot-0.scm
+/scripts/mesar
+/scripts/mescc.scm
+/scripts/mescc
+/doc/images/gcc-mesboot-graph.png
+/GNUmakefile
+/pre-inst-env
+/doc/images/gcc-mesboot-graph.eps
+/doc/images/gcc-mesboot-graph.pdf
+/doc/web/
+/config.sh
+/include/mes/config.h
+/gcc-lib
+/mescc-lib
+/bin
+/0exit-42
+/0hello-mes
+/body-exit-42
+/body-hello-mes
+/exit-42
+/hello-mes
+core
+/.config
+a.out
diff --git a/sysa/mes-0.22/AUTHORS b/sysa/mes-0.22/AUTHORS
new file mode 100644
index 0000000..858c53a
--- /dev/null
+++ b/sysa/mes-0.22/AUTHORS
@@ -0,0 +1,88 @@
+ -*- org -*-
+#+TITLE: GNU Mes Authors
+
+Jan (janneke) Nieuwenhuizen
+Main author
+All files except the imported files listed below
+
+Danny Milosavljevic
+ARM port
+lib/mes/div.c
+Additions and fixes throughout
+
+Jeremiah Orians
+lib/stdio/fopen.c (first simple version of fopen)
+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
+
+List of imported files
+
+D A Gwyn
+lib/alloca.c
+
+Included verbatim from gnulib
+build-aux/gitlog-to-changelog
+
+Portable hygienic pattern matcher
+mes/module/mes/match.scm
+
+Portable LALR(1) parser generator
+mes/module/mes/lalr.scm
+
+Portable syntax-case from Chez Scheme; patches from Guile
+mes/module/mes/psyntax.ss
+mes/module/mes/psyntax.pp [generated]
+
+Getopt-long from Guile
+module/mes/getopt-long.scm
+
+Optargs from Guile
+mes/module/mes/optargs.scm
+
+PEG from Guile
+mes/module/mes/peg/
+
+Pmatch from Guile
+mes/module/mes/pmatch.scm
+
+Pretty-print from Guile
+mes/module/mes/pretty-print.scm
+
+Srfi-1 bits from Guile
+mes/module/srfi/srfi-1.scm
+
+Srfi-16 from Guile
+mes/module/srfi/srfi-16.scm
+
+Srfi-26 from Guile
+mes/module/srfi/srfi-26.scm
+
+GNU FDL in texinfo from GNU
+doc/fdl-1.3.texi
+
+Hurd and Mach support from GNU C Library
+include/gnu/hurd-types.h
+include/mach/mach-init.h
+lib/mach/msg.c
+lib/mach/mach-init.c
+lib/mach/*.S
+
+* legalese
+Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen
+
+ 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.
diff --git a/sysa/mes-0.22/BLURB b/sysa/mes-0.22/BLURB
new file mode 100644
index 0000000..7c394f2
--- /dev/null
+++ b/sysa/mes-0.22/BLURB
@@ -0,0 +1,23 @@
+
+GNU Mes is a Scheme interpreter and C compiler for bootstrapping the GNU
+system.
+
+GNU Mes was created to address the security concerns that arise from
+bootstrapping an operating system using binary blobs, which is common
+practice for all software distributions. Mes is a Scheme interpreter
+written in a simple subset of C and a C compiler written in Scheme and
+comes with a small, bootstrappable C library. The Mes bootstrap has
+halved the size of opaque, uninspectable binaries that were needed to
+bootstrap GNU Guix, a functional GNU/Linux distribution that focusses on
+user freedom, reproducibility and security. That reduction was achieved
+by replacing GNU Binutils, GNU GCC and the GNU C Library with Mes. The
+final goal is to help create a full source bootstrap for UNIX-like
+operating systems. After three years of volunteer work funding will
+enable us to make another big step forward and reach an important new
+milestone.
+
+GNU Mes - https://gnu.org/software/mes
+GNU Guix - https://gnu.org/software/guix
+Bootstrappable Builds - https://bootstrappable.org
+Reproducible Builds - https://reproducible-builds.org
+Reduced Binary Seed bootstrap - https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/
diff --git a/sysa/mes-0.22/BOOTSTRAP b/sysa/mes-0.22/BOOTSTRAP
new file mode 100644
index 0000000..c2d97dc
--- /dev/null
+++ b/sysa/mes-0.22/BOOTSTRAP
@@ -0,0 +1,164 @@
+ -*- org -*-
+#+TITLE: bootstrappable.org project
+
+Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen
+
+ 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.
+
+* What?
+** Full source bootstrapping for the GNU System
+
+A package in GNU Guix is uniquely identified by the hash of its source
+code, its dependencies, and its build recipe.
+
+Every package can be built from source, except for the bootstrap
+binaries.
+
+*** From the GNU Guix manual
+
+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::.
+
+**** Guix v1.0 bootstrap binary seed
+
+$ du -schx $(readlink $(guix build bootstrap-tarballs)/*)
+2.1M /gnu/store/9623n4bq6iq5c8cwwdq99qb7d0xj93ym-binutils-static-stripped-tarball-2.28.1/binutils-static-stripped-2.28.1-x86_64-linux.tar.xz
+18M /gnu/store/437xwygmmwwpkddcyy1qvjcv4hak89pb-gcc-stripped-tarball-5.5.0/gcc-stripped-5.5.0-x86_64-linux.tar.xz
+1.8M /gnu/store/55ccx18a0d1x5y6a575jf1yr0ywizvdg-glibc-stripped-tarball-2.26.105-g0890d5379c/glibc-stripped-2.26.105-g0890d5379c-x86_64-linux.tar.xz
+5.7M /gnu/store/bqf0ajclbvnbm0a46819f30804y3ilx0-guile-static-stripped-tarball-2.2.3/guile-static-stripped-2.2.3-x86_64-linux.tar.xz
+5.8M /gnu/store/j8yzjmh9sy4gbdfwjrhw46zca43aah6x-static-binaries-tarball-0/static-binaries-0-x86_64-linux.tar.xz
+33M total
+$ for i in $(readlink $(guix build bootstrap-tarballs)/*);\
+ do sudo tar xf $i; done
+$ du -schx *
+130M bin
+13M include
+54M lib
+51M libexec
+5.2M share
+252M total
+
+**** Guix Reduced Binary Seed bootstrap binary seed
+
+$ du -schx $(readlink $(guix build bootstrap-tarballs)/*)
+5.7M /gnu/store/9f8gi8raqfx9j3l9d00qrrc0jg3r1kyj-guile-static-stripped-tarball-2.2.6/guile-static-stripped-2.2.6-x86_64-linux.tar.xz
+80K /gnu/store/b6rjl52hibhmvyw4dg8678pwryhla0h2-linux-libre-headers-stripped-tarball-4.19.56/linux-libre-headers-stripped-4.19.56-x86_64-linux.tar.xz
+12K /gnu/store/d7zlxsjcnqilmvqwx7scija9x9bjw8cw-mescc-tools-static-stripped-tarball-0.5.2-0.bb062b0/mescc-tools-static-stripped-0.5.2-0.bb062b0-x86_64-linux.tar.xz
+428K /gnu/store/n7zc4kpi8ny6jlfaikkzxlwhc5fvr1vr-mes-minimal-stripped-tarball-0.19/mes-minimal-stripped-0.19-x86_64-linux.tar.xz
+6.0M /gnu/store/nv4djwlrljfqmynqr2cqvfwz0ydx7kxb-static-binaries-tarball-0/static-binaries-0-x86_64-linux.tar.xz
+13M total
+$ for i in $(readlink $(guix build bootstrap-tarballs)/*);\
+ do sudo tar xf $i; done
+Password:
+$ du -schx *
+93M bin
+700K include
+38M lib
+14M share
+145M total
+
+**** Guix Scheme-only bootstrap binary seed
+
+$ du -schx $(readlink $(~/src/guix/wip-bootstrap/pre-inst-env guix build bootstrap-tarballs)/*)
+5.7M /gnu/store/1mq2pcd2h7g54xpi2jrgj6ibbi4lgi3c-guile-static-stripped-tarball-2.2.6/guile-static-stripped-2.2.6-x86_64-linux.tar.xz
+80K /gnu/store/bl1r2bpk6fam8r2gjvr5mvr48i3dm2hn-linux-libre-headers-stripped-tarball-4.19.56/linux-libre-headers-stripped-4.19.56-x86_64-linux.tar.xz
+12K /gnu/store/w0dlz486dhb8aiq8pxm5akllz628fqin-mescc-tools-static-stripped-tarball-0.5.2-0.bb062b0/mescc-tools-static-stripped-0.5.2-0.bb062b0-x86_64-linux.tar.xz
+428K /gnu/store/15j6l18q44ymlrh1cfp4s4hc9835xic5-mes-minimal-stripped-tarball-0.19/mes-minimal-stripped-0.19-x86_64-linux.tar.xz
+6.2M total
+$ for i in $(readlink $(~/src/guix/wip-bootstrap/pre-inst-env guix build bootstrap-tarballs)/*);\
+ do sudo tar xf $i; done
+$ du -schx *
+4.9M bin
+700K include
+38M lib
+14M share
+57M total
+
+* Why?
+** Reproducibility is essential to Software Freedom
+
+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.
+
+*** What about the bootstrap binaries and the compilers?
+
+We have the sources: they always lead to bitwise-same binary, but what
+about the bootstrap binaries and compilers?
+
+*** The current way out: Ignore the problem
+
+ ``recipe for yogurt: add yogurt to milk''
+
+*** New solution: Full source bootstrapping path
+
+* How?
+** Software: MesCC-tools, M2-Planet, GNU Mes and MesCC
+** MesCC-tools
+
+ https://savannah.gnu.org/projects/mescc-tools
+
+*** hex.0: ~500 byte well-documented, self-hosting hex assembler
+
+This 500 byte program is written in ASCII hex. When converted
+byte-for-byte from ASCCI to binary we have the only binary seed that
+our full source bootstrap path needs.
+
+We bless this simple and easily verifyable binary and consider it to
+be source.
+
+*** hex1: next level hex assembler written in hex.0
+*** M0: a macro assembler written in hex.1
+*** M1: a macro assembler written in M0
+*** hex2: a hex2 linker written in M0
+*** M2-Planet: a self-hosting M2 (C-with-structs) transpiler written in M1
+*** GNU Mes: A Scheme interpreter written in C, with cpp transformed into M2
+*** MesCC: A C compiler written in Scheme
+*** tcc-boot: a patched version of TinyCC
+
+** GNU Mes and MesCC
+
+ https://www.gnu.org/software/mes
+
+*** mes.c: a Scheme interpreter in ~5,000LOC of simple C
+*** mescc: a C compiler written in Scheme (uses Nyacc C99 parser in Scheme)
+*** mes.M2: this Scheme interpreter in bootstrappable M2
+
+** TinyCC
+
+ https://gitlab.com/janneke/tinycc
+
+* TODO
+** merge scheme-only bootstrap into Guix.
+** reduced binary seed bootstrap into NixOS, Debian.
+** remove or upstream patches from tcc-boot
+** prepare src/mes.c for M2-Planet transpiler.
+** ARM, the Hurd
+** fix bootstrap-loops: (Nyacc?, mes.M2, psyntax.pp?)
+** make GNU gcc (8.0?) bootstrappable again, remove [need for] tcc stage
+* DONE
+** reduced binary seed bootstrap into Guix.
+** replace Guix bootstrap for x86_64.
+** replace Guix bootstrap for x86.
+** add full source gcc-4.7 package build.
+** bootstrap gcc+glibc-built binutils-20.1, gcc-4.1.0.
+** have tcc-boot compile gnutools triplet: binutils-2.14, gcc-2.95.3, glibc-2.2.5.
+** have tcc-boot's mes-tcc compile a fully functional tcc
+** hex.0, hex.1, M0
+** M1, hex2_linker in simple C
+** M2-Planet is now self-hosting, written in M2
+** mes+mescc are mutual self-hosting
+** patched tcc compiled with mes+mescc
+** during development we run mescc on Guile (mes is ~30 times slower)
+** tcc compiled with gcc is known to compile gcc
+
+* Contact
+** bug-mes@gnu.org
+** #bootstrappable, #guix on freenode
+** bootstrappable.org
diff --git a/sysa/mes-0.22/COPYING b/sysa/mes-0.22/COPYING
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/sysa/mes-0.22/COPYING
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program 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.
+
+ This program 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 this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/sysa/mes-0.22/ChangeLog b/sysa/mes-0.22/ChangeLog
new file mode 100644
index 0000000..c912529
--- /dev/null
+++ b/sysa/mes-0.22/ChangeLog
@@ -0,0 +1,12616 @@
+2020-01-20 Jan Nieuwenhuizen
+
+ Release 0.22.
+ * configure (VERSION): Update to 0.22.
+ (main): Likewise.
+ * build-aux/GNUmakefile.in: Likewise.
+ * configure.sh (VERSION): Likewise.
+ * guix/git/mes.scm (mes, mes.git): Likewise.
+
+ build: Update release process.
+ * build-aux/GNUmakefile.in: Update documentation.
+ (sign-dist): Rename from `sign'.
+ * configure: Remove version check for Guix; support GUIX=guix ./configure.
+
+ doc: Release update.
+ * BOOTSTRAP: Release update.
+ * HACKING: Likewise.
+ * INSTALL: Likewise.
+ * NEWS: Likewise.
+ * PORTING: Likewise.
+ * README: Likewise.
+ * ROADMAP: Likewise.
+ * doc/mes.texi: Likewise.
+ * doc/announce/ANNOUNCE-0.22: New file.
+
+2020-01-20 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Fix execlp, execvp for file names with slash.
+ Reported by mid-kid.
+
+ * lib/posix/execlp.c (execlp): Do not use search_path when file name
+ contains a slash (WAS: when file name starts with slash).
+ * lib/posix/execvp.c (execvp): Likewise.
+
+2020-01-20 Jan Nieuwenhuizen
+
+ build: Support bootstrapping using build.sh.
+ * build-aux/build.sh.in: Oops, use $compiler = bootstrap concept does
+ not exist yet. Gash cp does not support -p; drop it.
+ * configure.sh: Oops, set bootstrap to `true' instead of yes.
+
+ mescc: Mes C Library: lseek: Be careful clearing read buffer.
+ * lib/linux/lseek.c (_lseek): New function.
+ * lib/linux/lseek.c (lseek): Use it to check if we should reset read
+ buffer.
+ * lib/mes/__buffered_read.c (__read_buffer_max): New variable.
+ (__buffered_read_init): Add environment override: MES_READ_BUFFER.
+ (__buffered_read): Use it.
+
+ build: Have configure respect GUILE_LOAD_PATH for mes to find Nyacc.
+ * configure: Substitute GUILE_LOAD_PATH from %load-path.
+ * configure.sh: Likewise.
+ * build-aux/config.make.in: Add GUILE_LOAD_PATH as subtitution variable.
+ * build-aux/config.sh.in: Likewise.
+ * mes/module/mes/guile.mes (%load-path): New variable.
+
+2020-01-20 Jan Nieuwenhuizen
+
+ build: Have configure prefer $CC over gcc; tcc over gcc, gcc over cc.
+ Reported by Vagrant Cascadian.
+
+ * configure (string->version): Prefer for most-dotted string. Fixes
+ makeinfo version.
+ (check-program-version): Prefer displaying of command, if single word.
+ (main): Check for $CC --version, $CC -v. Prefer $CC over gcc; tcc over
+ gcc, gcc over cc.
+
+2020-01-20 Jan Nieuwenhuizen
+
+ mescc: Opt for reproducible builds with Guile and Mes.
+ * module/mescc/compile.scm (mes-or-reproducible?): New variable.
+ (ast->comment): Use it.
+ * module/mescc/preprocess.scm (mes-or-reproducible?): New variable.
+ (c99-input->full-ast): Use it.
+
+2020-01-20 Jan Nieuwenhuizen
+
+ build: Resurrect compiling with TinyCC.
+ ./configure CC=tcc --host=i686-unknown-linux-gnu --with-courage
+
+ * configure: Cater for tcc.
+
+2019-12-17 Jan Nieuwenhuizen
+
+ build: Cater for FreeBSD.
+ * build-aux/bootstrap.sh.in: Add test ! -e -o to satisfy FreeBSD test.
+ Fixes skipping over all compilations.
+ * build-aux/cc.sh (compile): Likewise.
+
+ freebsd: Initial x86 scaffold.
+ * lib/freebsd/x86-mes-gcc/crt1.c: New file.
+ * lib/freebsd/x86-mes-gcc/exit-42.S: New file.
+ * lib/freebsd/x86-mes-gcc/hello-mes.S: New file.
+ * lib/freebsd/x86-mes-gcc/mini.c: New file.
+ * lib/freebsd/x86-mes-mescc/crt1.c: New file.
+ * lib/freebsd/x86-mes-mescc/mini.c: New file.
+ * lib/freebsd/x86-mes/elf32-0exit-42.hex2: New file.
+ * lib/freebsd/x86-mes/elf32-0header.hex2: New file.
+ * lib/freebsd/x86-mes/elf32-0hello-mes.hex2: New file.
+ * lib/freebsd/x86-mes/elf32-body-exit-42.hex2: New file.
+ * lib/freebsd/x86-mes/elf32-body-hello-mes.hex2: New file.
+ * lib/freebsd/x86-mes/elf32-footer-single-main.hex2: New file.
+ * lib/freebsd/x86-mes/elf32-header.hex2: New file.
+
+ freebsd: Initial configure support.
+ * configure: Initial FreeBSD configure support.
+ * configure.sh: Likewise. Run without bash.
+
+ build: Prepare for kernel variants.
+ * configure: Fix detection of Arch, FreeBSD.
+ * lib/linux/x86-mes-gcc/exit-42.S: Move from ...
+ * lib/x86-mes-gcc/exit-42.S: ... here.
+ * lib/linux/x86-mes-gcc/hello-mes.S: Move from ...
+ * lib/x86-mes-gcc/hello-mes.S: ... here.
+ * lib/linux/x86-mes-mescc/exit-42.S: Move from ...
+ * lib/x86-mes-mescc/exit-42.S: ... here.
+ * lib/linux/x86-mes-mescc/hello-mes.S: Move from ...
+ * lib/x86-mes-mescc/hello-mes.S: ... here.
+ * lib/linux/x86-mes/elf32-0exit-42.hex2: Move from ...
+ * lib/x86-mes/elf32-0exit-42.hex2: ... here.
+ * lib/linux/x86-mes/elf32-0header.hex2: Move from ...
+ * lib/x86-mes/elf32-0header.hex2: ... here.
+ * lib/linux/x86-mes/elf32-0hello-mes.hex2: Move from ...
+ * lib/x86-mes/elf32-0hello-mes.hex2: ... here.
+ * lib/linux/x86-mes/elf32-body-exit-42.hex2: Move from ...
+ * lib/x86-mes/elf32-body-exit-42.hex2: ... here.
+ * lib/linux/x86-mes/elf32-body-hello-mes.hex2: Move from ...
+ * lib/x86-mes/elf32-body-hello-mes.hex2: ... here.
+ * lib/linux/x86-mes/elf32-footer-single-main.hex2: Move from ...
+ * lib/x86-mes/elf32-footer-single-main.hex2: ... here.
+ * lib/linux/x86-mes/elf32-header.hex2: Move from ...
+ * lib/x86-mes/elf32-header.hex2: ... here.
+ * lib/linux/x86_64-mes-gcc/exit-42.S: Move from ...
+ * lib/x86_64-mes-gcc/exit-42.S: ... here.
+ * lib/linux/x86_64-mes-gcc/hello-mes.S: Move from ...
+ * lib/x86_64-mes-gcc/hello-mes.S: ... here.
+ * lib/linux/x86_64-mes-mescc/exit-42.S: Move from ...
+ * lib/x86_64-mes-mescc/exit-42.S: ... here.
+ * lib/linux/x86_64-mes-mescc/hello-mes.S: Move from ...
+ * lib/x86_64-mes-mescc/hello-mes.S: ... here.
+ * lib/linux/x86_64-mes/elf64-0exit-42.hex2: Move from ...
+ * lib/x86_64-mes/elf64-0exit-42.hex2: ... here.
+ * lib/linux/x86_64-mes/elf64-0header.hex2: Move from ...
+ * lib/x86_64-mes/elf64-0header.hex2: ... here.
+ * lib/linux/x86_64-mes/elf64-0hello-mes.hex2: Move from ...
+ * lib/x86_64-mes/elf64-0hello-mes.hex2: ... here.
+ * lib/linux/x86_64-mes/elf64-body-exit-42.hex2: Move from ...
+ * lib/x86_64-mes/elf64-body-exit-42.hex2: ... here.
+ * lib/linux/x86_64-mes/elf64-body-hello-mes.hex2: Move from ...
+ * lib/x86_64-mes/elf64-body-hello-mes.hex2: ... here.
+ * lib/linux/x86_64-mes/elf64-footer-single-main.hex2: Move from ...
+ * lib/x86_64-mes/elf64-footer-single-main.hex2: ... here.
+ * lib/linux/x86_64-mes/elf64-header.hex2: Move from ...
+ * lib/x86_64-mes/elf64-header.hex2: ... here.
+ * module/mescc.scm (parse-opts): Support --kernel.
+ * module/mescc/mescc.scm (kernel-find): New function.
+ * module/mescc/mescc.scm (hex2->elf): Use it to find kernel-specific ELF
+ snippets.
+ * build-aux/install.sh.in: Install it.
+
+2019-12-13 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Add ioctl3 stub.
+
+ mescc: Mes C Library: Fix access stub.
+ * lib/stub/access.c (access): Use _open3 to give more meaningful
+ behaviour. Fixes hanging of mes.
+
+ hurd: Fixes for upgrade to debian-hurd-20190220.img.
+ * include/mach/mach-init.h (__mach_host_self, __mach_task_self):
+ Remove macro magic.
+ (mach_host_self, mach_task_self): Remove macro magic; declare as function.
+ * lib/mach/mach-init.c (mach_host_self, mach_task_self): New function.
+ (mach_init): Use them.
+ * lib/gnu/hurd-start.c (_hurd_start): Use mach_task_self ().
+ * lib/gnu/_exit.c (_exit): Likewise.
+
+ hurd: Add malloc.
+ * include/gnu/syscall.h (__vm_allocate): New value.
+ (__vm_allocate): Declare.
+ * lib/gnu/malloc.c: New file.
+ * lib/stdlib/malloc.c[__GNU__]: Disable. See FIXME.
+ * lib/gnu/vm-allocate.c: New file.
+ * build-aux/configure-lib.sh (libc_SOURCES): Add it.
+
+ hurd: Add open.
+ * include/fcntl.h (O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_APPEND,
+ O_TRUNC)[__GNU__]: Specialize for GNU.
+ * lib/gnu/dir-lookup.c: New file.
+ * lib/stdio/fopen.c (fopen): Use O_RDONLY.
+ * lib/tests/posix/50-open-read.c (main): Likewise.
+ * lib/tests/stdio/90-fseek.c (main): Likewise.
+ * include/gnu/syscall.h (SYS__dir_lookup): New value.
+ * lib/gnu/_open3.c: New file.
+ * build-aux/configure-lib.sh (libc_SOURCES): Build them.
+
+ hurd: Add argv and environ.
+ * include/gnu/hurd.h (struct hurd_startup_data): Add argp, envp.
+ * lib/gnu/hurd-start.c (__argv, __env): Define them.
+ * lib/gnu/exec-startup-get-data.c (mach_startup_info2hurd_startup_data):
+ Set them.
+ * lib/gnu/x86-mes-gcc/crt1.c (_start): Use them.
+ * build-aux/configure-lib.sh (libc_mini_SOURCES): Add argz-extract.c.
+ * include/argz.h: Build fix.
+ * lib/string/argz-count.c: Likewise.
+ * lib/string/argz-extract.c: Likewise.
+
+ hurd: Add stubs for missing libc+tcc functions.
+ * lib/stub/close.c: New file.
+ * lib/stub/rmdir.c: New file.
+ * lib/stub/stat.c: New file.
+ * build-aux/configure-lib.sh (libc_tcc_SOURCES)[gnu]: Add them.
+
+ hurd: Add stubs for missing libc functions.
+ * lib/stub/_getcwd.c: New file.
+ * lib/stub/_getcwd.c: New file.
+ * lib/stub/_open3.c: New file.
+ * lib/stub/access.c: New file.
+ * lib/stub/brk.c: New file.
+ * lib/stub/chmod.c: New file.
+ * lib/stub/clock_gettime.c: New file.
+ * lib/stub/dup.c: New file.
+ * lib/stub/dup2.c: New file.
+ * lib/stub/execve.c: New file.
+ * lib/stub/fork.c: New file.
+ * lib/stub/gettimeofday.c: New file.
+ * lib/stub/ioctl.c: New file.
+ * lib/stub/time.c: New file.
+ * lib/stub/unlink.c: New file.
+ * lib/stub/waitpid.c: New file.
+ * build-aux/configure-lib.sh (libc_SOURCES)[gnu]: Add them.
+
+ hurd: Add stubs for missing libmes functions.
+ * lib/stub/lseek.c: New file.
+ * build-aux/configure-lib.sh (libmes_SOURCES)[gnu]: Add it.
+
+ hurd: Add _read.
+ * include/gnu/hurd.h (fd_read): Declare.
+ * include/gnu/syscall.h (SYS__io_read): New value.
+ * lib/gnu/_read.c: New file.
+ * lib/gnu/fd-read.c: New file.
+ * lib/gnu/io-read.c: New file.
+ * build-aux/configure-lib.sh (libc_SOURCES): Add _read sources.
+
+ hurd: Add _write.
+ * include/gnu/syscall.h (SYS__io_write): Add enum field.
+ (_hurd_dtable, _hurd_dtable_size): Declare variable.
+ (fd_get, fd_write, __io_write, __syscall_put): Declare.
+ * lib/gnu/hurd-start.c (_hurd_dtable, _hurd_dtable_size): Define
+ variable.
+ * lib/gnu/_write.c: New file.
+ * lib/gnu/fd-get.c (fd_get): New file.
+ * lib/gnu/fd-write.c (fd_write): New file.
+ * lib/gnu/io-write.c: New file.
+ * lib/gnu/syscall.c (__syscall_put): New function.
+ * build-aux/cofnigure-lib.sh (libc_mini_SOURCES): Add write sources.
+ * lib/tests/mes/30-oputs.c (main): Update.
+ * lib/tests/mes/30-oputs.stdout: New file.
+ * lib/tests/mes/30-eputs.c: New test.
+ * lib/tests/mes/30-eputs.stderr: New file.
+ * build-aux/check-mescc.sh (TESTS): Add it.
+
+2019-12-13 Jan Nieuwenhuizen
+
+ hurd: Initial support.
+ This adds minimal Hurd support by implementing the _exit function.
+
+ * AUTHORS: Update.
+ * .gitignore: Ignore a.out, core, .config.
+ * include/sys/wait.h (W_EXITCODE): New define.
+ * lib/gnu/x86-mes-gcc/crt1.c: New file.
+ * lib/gnu/x86-mes-gcc/mini.c: New file.
+ * lib/gnu/hurd-start.c: New file.
+ * lib/gnu/_exit.c: New file.
+ * include/gnu/syscall.h: New file.
+ * include/gnu/hurd.h: New file.
+ * lib/gnu/_exit.c: New file.
+ * lib/gnu/exec-startup-get-data.c: New file.
+ * lib/gnu/hurd-start.c: New file.
+ * lib/gnu/proc-mark-exit.c: New file.
+ * lib/gnu/syscall.c: New file.
+ * lib/gnu/task-get-special-port.c: New file.
+ * lib/gnu/task-terminate.c: New file.
+ * lib/gnu/vm-statistics.c: New file.
+ * build-aux/configure-lib.sh (libc_mini_SOURCES): Add Hurd sources.
+ * build-aux/build.sh.in (CPPFLAGS): Add lib to includes, to find linux
+ crt1.c.
+ * build-aux/test-c.sh: Always use at least -l c+mini for GNU.
+ * lib/tests/scaffold/30-exit-42.exit: New file.
+ * lib/tests/scaffold/30-exit-42.c: New test.
+ * build-aux/check-mescc.sh (TESTS): Add it.
+ * lib/tests/scaffold/30-exit-0.c (main): Move from 00-exit-0.c; Rewrite,
+ use _exit.
+ * include/gnu/hurd-types.h: Import from GNU C Library.
+ * include/mach/mach-init.h: Likewise.
+ * lib/mach/mach-init.c: Likewise.
+ * lib/mach/mach_host_self.S: Likewise.
+ * lib/mach/mach_msg_trap.S: Likewise.
+ * lib/mach/mach_reply_port.S: Likewise.
+ * lib/mach/mach_task_self.S: Likewise.
+ * lib/mach/mach_thread_self.S: Likewise.
+ * lib/mach/msg.c: Likewise.
+
+2019-12-13 Jan Nieuwenhuizen
+
+ build: Generate ChangeLog reproducibly. Thanks, Timothy!
+ * build-aux/gitlog-to-changelog (git_dir_option): Avoid non-reproducible
+ localtime.
+
+ build: Make guild optional for bootstrap builds.
+ * configure: Use `true' for guild when it is not available.
+
+ build: Clean-out .gitignore.
+ .gitignore: Remove obsolete cross build patterns.
+
+ build: Cater for bootstrap build.
+ * build-aux/build.sh.in: Build bin/mes. Update scripts and users.
+ * build-aux/bootstrap.sh.in: Update.
+ * build-aux/install.sh.in: Install all built bin/mes-* flavours.
+ * configure: Drop SEED, support --bootstrap.
+ * configure.sh: Likewise.
+
+2019-12-08 Jan Nieuwenhuizen
+
+ build: Oops, have configure honor --host.
+ This allows
+
+ ./configure --host=i686-unknown-linux-gnu
+
+ instead of
+
+ CC=i686-unknown-linux-gnu-gcc ./configure
+
+ * configure (main): Honor --host.
+
+2019-12-08 Jan Nieuwenhuizen
+
+ bootstrap: Default to mesar for mescc build.
+ * configure.sh: Default to mesar for mescc build.
+
+ bootstrap: Fix configure.sh's host detection.
+ * configure.sh: Avoid setting host="" and not running $CC.
+
+ mescc: Add mes 0.19 compatibility.
+ * mes/module/mes/boot-0.scm (%datadir): Cater for %datadir not being
+ set.
+
+2019-12-07 Jan Nieuwenhuizen
+
+ bootstrap: Build files only once.
+ * build-aux/bootstrap.sh.in: Build files only once.
+
+ build: Support mescc-tools 0.5.2.
+ * configure: Remove version check for mescc-tools.
+ Check for stage0 architecture flag type.
+ * configure.sh: Likewise.
+ * build-aux/build-scaffold.sh: Add stage0 flag type indirection.
+ * module/mescc/mescc.scm (arch-get-architecture): Likewise.
+
+2019-12-06 Jan Nieuwenhuizen
+
+ mescc: Fix for compiling handwritten .S assembly.
+ * module/mescc/mescc.scm (mescc:compile): Handle .S.
+ (mescc:link): Likewise.
+
+ build: Add mescc scaffold for regular build.
+ * lib/x86-mes-mescc/exit-42.S: New file.
+ * lib/x86-mes-mescc/hello-mes.S: New file.
+ * lib/x86_64-mes-mescc/exit-42.S: New file.
+ * lib/x86_64-mes-mescc/hello-mes.S: New file.
+
+2019-12-08 Jan Nieuwenhuizen
+
+ build: Add --with-bootstrap option.
+ * configure (main): Add --with-bootstrap option.
+ * build-aux/build.sh.in [--with-bootstrap]: After building mes with CC,
+ build mes with MesCC.
+
+2019-12-05 Jan Nieuwenhuizen
+
+ build: Support toplevel lib and mes builds.
+ * build-aux/build.sh.in: Add missing libdir for gcc build.
+ * build-aux/config.sh.in: ...here.
+ * build-aux/build-mes.sh: Do not overwrite srcdest, V.
+
+ bootstrap: Support srcdir builds.
+ * build-aux/bootstrap.sh.in (srcdest): Initialize.
+ * build-aux/build-lib.sh: Source config.sh.
+ * configure.sh: Support srcdir builds.
+ * build-aux/build.sh.in: Move setting of cflags to ...
+ * build-aux/cflags.sh: ... New file.
+
+ configure: Honor CFLAGS, LDFLAGS.
+ * configure (cflags-list, ldflags-list): New function.
+ check-preprocess-header-c, check-compile-string-c,
+ check-link-string-c): Use them. Be verbose when %verbose?.
+ (CFLAGS, LDFLAGS): Initialize to "-static -g".
+
+2019-12-08 Jan Nieuwenhuizen
+
+ build! Fixup clean without git: Clean cleaner.
+ * build-aux/GNUmakefile.in (clean): Clean cleaner.
+
+2019-12-07 Vagrant Cascadian
+
+ Fix build without git on "wip" branch.
+ --=-=-=
+ Content-Type: text/plain
+
+ In the "wip" branch, the attempt to build without git was a bit overly
+ aggressive in the purging of GIT.
+
+ live well,
+ vagrant
+
+ From 73bb68e86318a6bc0fe191db663be97f94556956 Mon Sep 17 00:00:00 2001
+ From: Vagrant Cascadian
+ Date: Sat, 7 Dec 2019 19:59:00 +0100
+ Subject: [PATCH] Fix build without git
+
+ Commit "1863c0d843a5fe4e94e8cb923cc0896f30fceeeb" removed the
+ substitution of @GIT@ when, resulting in the GIT variable being set to
+ "@GIT@" rather than "" when git is not installed.
+
+2019-12-04 Jan Nieuwenhuizen
+
+ build: Fix configure host detection for Arch. Thanks, Jelle!
+ * configure (main): Grok `CPU-pc-linux-gnu'.
+
+ build: Successfully check for Nyacc 0.99.0.
+ * configure (gulp-pipe): New function.
+ (check-program-version): Use it to correctly detect Nyacc.
+ (gulp-pipe*): Rewrite to use it.
+
+ build: Remove git dependency.
+ * configure: Remove git dependency.
+ * build-aux/GNUmakefile.in (clean,distclean, maintainer-clean):
+ Implement without git.
+ * INSTALL: Update dependencies.
+
+2019-12-03 Jan Nieuwenhuizen
+
+ core: Remove MES_PKGDATADIR.
+ * configure: Do not add MES_PKGDATADIR to config.h.
+ * configure.sh: Likewise.
+ * simple.sh: Likewise.
+ * src/mes.c (open_boot): Do not use MES_PKGDATADIR; rely on
+ MES_PREFIX or cwd.
+
+2019-12-02 Jan Nieuwenhuizen
+
+ mescc: Ignore -fno-stack-protector.
+ * module/mescc.scm (parse-opts): Ignore it.
+
+ build: Use debug build (-g) by default.
+ * build-aux/build.sh.in (debug): Enable.
+
+ build: Honor user's CFLAGS, CPPFLAGS, LDFLAGS.
+ * build-aux/build.sh.in (AM_CFLAGS, AM_CPPFLAGS, AM_LDFLAGS): Rename
+ from CFLAGS, CPPFLAGS, LDFLAGS. Export them.
+ * configure: Substitute them.
+ * configure.sh: Likewise.
+ * build-aux/cc.sh (compile, link): Use them.
+ * build-aux/config.make.in (CFLAGS, CPPFLAGS, LDFLAGS): Add
+ substitutable variables.
+ * build-aux/config.sh.in: Likewise.
+ * build-aux/export.make: Export them.
+
+ test: 90-abtod: Remove printf dependency. Fixes gcc.
+ * lib/tests/mes/90-abtod.stdout: Remove.
+ * lib/tests/mes/90-abtod.c (main): Remove printf.
+
+2019-12-01 Jan Nieuwenhuizen
+
+ test: 90-readdir: Remove qsort dependency. Fixes tmpfs failures.
+ * lib/tests/dirent/90-readdir.c (check_seen): New function.
+ (main): Use it instead of qsort.
+ (qsort_strcmp): Remove.
+
+2019-11-24 Jan Nieuwenhuizen
+
+ core: Throw instead of segfault on non-existing input file.
+ Reported by theruran.
+
+ * src/posix.c (open_input_file): Call error instead of failing silently.
+
+2019-06-11 Vagrant Cascadian
+
+ boot-0: Fix spelling of "evaluate"
+
+2019-11-24 Jan Nieuwenhuizen
+
+ mescc: Honor --includedir, --libdir.
+ * guix/git/mes.scm (mes):
+ * module/mescc.scm (%includedir, %libdir): New variable.
+ (mescc:main): Add them to options.
+ * module/mescc/mescc.scm (mescc:preprocess, c->info): Add %includedir.
+ (arch-find): Use %libdir instead of
+ prefix-file.
+ (prefix-file): Remove.
+ * scripts/mescc.scm.in (%includedir, %libdir): Initialize from and set
+ in environment.
+
+ xx
+
+ * module/mescc/mescc.scm :
+
+2019-11-24 Jan Nieuwenhuizen
+
+ doc: Post-release update.
+ * NEWS: Typo.
+ * doc/announce/ANNOUNCE-0.21: Add checksums.
+
+2019-11-10 Jan Nieuwenhuizen
+
+ Release 0.21.
+ * configure (VERSION): Update to 0.21.
+ (main): Likewise.
+ * build-aux/GNUmakefile.in: Likewise.
+ * configure.sh (VERSION): Likewise.
+ * guix/git/mes.scm (mes, mes.git): Likewise.
+
+2019-11-04 Jan Nieuwenhuizen
+
+ doc: Release update.
+ * BLURB: Release update.
+ * HACKING: Remove roadmap.
+ * INSTALL: Release update.
+ * NEWS: Add 0.21 section.
+ * README: Release update.
+ * ROADMAP: New file.
+ * configure.sh: Release update.
+ * doc/announce/ANNOUNCE-0.21: New file.
+ * doc/mes.texi: Release update.
+
+2019-11-23 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: vfprintf: Support --with-system-libc.
+ * include/stdarg.h (va_arg8)[SYSTEM_LIBC]: Define.
+
+ mescc: Mes C Library: Support gcc-4.6.4: Fix ctime stub.
+ * lib/stub/ctime.c (ctime): Fix stub to avoid segfault upon use.
+
+ mescc: Mes C Library: Fix isatty for x86_64.
+ * lib/linux/ioctl.c (ioctl3): New function.
+ * include/sys/ioctl.h: Declare it.
+ * lib/posix/isatty.c (__tcgetattr): Use it.
+
+2019-11-09 Jan Nieuwenhuizen
+
+ build: Prefer /bin/bash if available. Thanks, Vagrant!
+ Ensure the configure script uses /bin/bash, otherwise on systems with
+ /bin -> /usr/bin it results in /bin/bash being embedded in various
+ scripts.
+
+ Inspired by
+
+ https://salsa.debian.org/debian/mes/blob/debian/master/debian/patches/force-use-of-bin-bash
+
+ * configure: Prefer /bin/bash, /bin/sh if available. Helps
+ reproducibility on Debian.
+
+2019-11-04 Jan Nieuwenhuizen
+
+ build: Update script help and usage.
+ * doc/mes.texi (Invoking mesar): New section.
+ * mes/module/mes/boot-0.scm: Add one line help description.
+ * module/mescc.scm (parse-opts): Likewise.
+ * scripts/diff.scm (main): Add -h,--help, -v,--version.
+ * scripts/mesar.in: Likewise.
+
+ build: Use unversioned doc directory. Thanks, Vagrant!
+ * configure (docdir): Drop version. Fixes Debian lint error.
+ * configure.sh (docdir): Likewise.
+
+ build: Add sensible NAME section for man pages. Thanks, Vagrant!
+ * build-aux/GNUmakefile.in (mes.1, mescc.1, mesar.1): Add sensible
+ --name section. Fixes Debian lint error. Reported by Vagrant
+ Cascadian.
+
+2019-11-09 Jan Nieuwenhuizen
+
+ Revert "build: Mark lib/tests/dirent/90-readdir.c as XFAIL on x86_64-gcc."
+ This reverts commit dc0b41f83efa973b7a92c0c7a0ad1eb21a7c4c7a.
+
+2019-10-30 Jan Nieuwenhuizen
+
+ build: Mark lib/tests/dirent/90-readdir.c as XFAIL on x86_64-gcc.
+ * build-aux/check-mescc.sh (XFAIL_TESTS)[x86_64-gcc]: Add
+ lib/tests/dirent/90-readdir.c.
+
+2019-11-09 Jan Nieuwenhuizen
+
+ Revert "build: Mark lib/tests/dirent/90-readdir.c as XFAIL on x86_64-mescc."
+ This reverts commit 17986224095ed72649fb2383f72c21f525977310.
+
+2019-10-30 Jan Nieuwenhuizen
+
+ build: Mark lib/tests/dirent/90-readdir.c as XFAIL on x86_64-mescc.
+ * build-aux/check-mescc.sh (XFAIL_TESTS)[x86_64-mescc]: Add
+ lib/tests/dirent/90-readdir.c.
+
+2019-10-24 Jan Nieuwenhuizen
+
+ build: Better and friendlier tarball.
+ * build-aux/GNUmakefile.in (dist): Be friendly to Debian; avoid using
+ EPOCH. Cater for file permission differences.
+
+2019-10-15 Jan Nieuwenhuizen
+
+ build: bootstrap fixes.
+ * build-aux/config.sh.in (bootstrap): Set up for substitution.
+ * configure.sh (bootstrap): Substitute.
+ * build-aux/install.sh.in (_v): Robustify check for V.
+ (__exclude_go, __exclude_scm): Initialize.
+
+2019-10-10 Jan Nieuwenhuizen
+
+ mes: Fix -c, --command.
+ * mes/module/mes/boot-0.scm: Prepend 'begin to expr list.
+
+2019-10-03 Jan Nieuwenhuizen
+
+ check: Remove duplicate test.
+ * build-aux/check-boot.sh (TESTS): Remove duplicate test.
+
+2019-09-20 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support gcc-4.6.4: vfprintf, vsnprintf: pad with space.
+ * lib/stdio/vfprintf.c (vfprintf): pad with space.
+ * lib/stdio/vsnprintf.c (vsnprintf): pad with space.
+
+2019-09-13 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support gcc-4.6.4: Add math stubs.
+ * lib/math/ceil.c: New file.
+ * lib/math/floor.c: New file.
+ * lib/stub/atan2.c: New file.
+ * lib/stub/cos.c: New file.
+ * lib/stub/exp.c: New file.
+ * lib/stub/log.c: New file.
+ * lib/stub/modf.c: New file.
+ * lib/stub/pow.c: New file.
+ * lib/stub/sin.c: New file.
+ * lib/stub/sqrt.c: New file.
+ * lib/libc+gnu.c: Include them.
+ * include/math.h (atan2, ceil, cos, exp, fabs, floor, log, modf, pow,
+ sin, sqrt): Declare.
+ * lib/math/fabs.c: Update.
+ * lib/stub/ldexp.c: Update.
+
+2019-09-06 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support gcc-4.6.4: Add fscanf, vfscanf.
+ * lib/stdio/vfscanf.c: New file.
+ * lib/stdio/fscanf.c: New file.
+ * build-aux/configure-lib.sh (libc_gnu_SOURCES): Add them.
+ * include/stdio.h (fscanf): Declare.
+ * include/stdarg.h (vfscanf): Declare.
+ * lib/stub/fscanf.c: Remove.
+
+2019-09-04 Jan Nieuwenhuizen
+
+ mescc: Mes C Libray: Fix off_t.
+ * include/sys/types.h (off_t): Drop unsigned.
+
+2019-09-06 Jan Nieuwenhuizen
+
+ mescc: Environment setup.
+ * scripts/mescc.in (MES_ARENA, MES_MAX_ARENA, MES_STACK): Reduce defaults.
+ * build-aux/check.sh.in (MES_ARENA): Likewise. Export them.
+ * build-aux/bootstrap.sh.in (MES_STACK): Likewise.
+ (MES_PREFIX): Set default.
+
+2019-08-26 Danny Milosavljevic
+
+ Add missing #include.
+ * lib/stdlib/mbstowcs.c: Add missing #include.
+
+ Fix dtoab.
+ * lib/mes/dtoab.c (dtoab): Fix it.
+ * lib/tests/mes/90-dtoab.c (main): Fix test.
+ * build-aux/check-mescc.sh (XFAIL_TESTS: Remove it.
+
+2019-08-27 Danny Milosavljevic
+
+ va_align: Fix compiler warning.
+ Follow-up to 49b0cd7d2e6952044d7436260d6ba950e40ee05f.
+
+ * include/stdarg.h: Fix compiler warning.
+
+2019-08-27 Danny Milosavljevic
+
+ Add missing #include.
+ * lib/tests/mes/90-abtod.c (main): Add missing #include.
+
+ Fix variable argument list traversal for doubles.
+ * include/stdarg.h (va_align): New macro.
+ (va_arg8): New macro.
+ * lib/stdio/vfprintf.c (vfprintf): Use it.
+ * lib/stdio/vsnprintf.c (vsnprintf): Use it.
+
+2019-08-24 Jan Nieuwenhuizen
+
+ build: Improve --with-system-libc support.
+ * build-aux/build-lib.sh: Avoid building libc for --with-system-libc.
+ Make libmes richer.
+ build-aux/check-mescc.sh: Enable 50-malloc test.
+ * include/dirstream.h: Use HAVE_DIRSTREAM_H to cater for non-existing
+ dirstream.h.
+ * include/grp.h[SYSTEM_LIBC]: Typo.
+ * include/mes/lib.h (__brk, __call_at_exit)[SYSTEM_LIBC]: Declare.
+ * include/stdlib.h (comparison_fn_t)[SYSTEM_LIBC]: Declare.
+ * include/time.h (mktime): Return time_t.
+ * lib/posix/isatty.c [SYSTEM_LIBC]: Do not (re)declare termios.
+ * lib/stub/mktime.c (mktime): Return time_t.
+ * lib/tests/scaffold/41-ternary.c (main): Remove assumption that
+ locals are initialized.
+ * lib/tests/scaffold/70-stdarg.c: Cater for SYSTEM_LIBC.
+ * lib/tests/setjmp/80-setjmp.c: Declare jmp buf.
+ * lib/*/*.c: Add missing mes/lib.h, errno.h includes.
+
+2019-09-01 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: vfprintf, vsnprintf: Pad floats with space.
+ * lib/stdio/vfprintf.c (vfprintf): Pad floats with space.
+ * lib/stdio/vsnprintf.c (vsnprintf): Pad floats with space.
+ * lib/tests/stdio/90-sprintf.c: Test it.
+
+2019-08-01 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: vsscanf: Increase count for scanned float.
+ * lib/stdio/vsscanf.c (vsscanf): Increase count for scanned float.
+
+2019-07-31 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Tar: Fix getpwnam, getpwuid stubs.
+ * lib/stub/getpwnam.c (getpwnam): Return pointer to static struct
+ passwd.
+ * lib/stub/getpwuid.c (getpwuid): Likewise.
+
+2019-07-24 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Tar: Add getgrgid, getgrnam, setgrent stub.
+ * include/grp.h: New file.
+ * lib/stub/getgrgid.c: New file.
+ * lib/stub/getgrnam.c: New file.
+ * lib/stub/setgrent.c: New file.
+ * lib/libc+gnu.c: Include them.
+
+2019-07-21 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Awk: Add wchar_t.
+ * include/sys/types.h (wchar_t): New typedef.
+
+2019-07-18 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Awk: Add getpgid, getpgrp stubs.
+ * include/unistd.h (getpgid, getpgrp): Declare.
+ * lib/stub/getpgid.c: New file.
+ * lib/stub/getpgrp.c: New file.
+ * lib/libc+gnu.c: Include them.
+
+2019-07-15 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Tar: Add mktime stub, fix localtime stub.
+ * include/time.h (mktime): Declare.
+ * lib/stub/mktime.c: New stub.
+ * lib/libc+gnu.c: Include it.
+ * lib/stub/localtime.c (localtime): Return pointer to static struct
+ tm. Avoids segfaults.
+
+2019-07-12 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Tar: Add creat, mknod.
+ * include/linux/x86_64/syscall.h (SYS_mknod): New macro.
+ * include/linux/x86/syscall.h (SYS_mknod): New macro.
+ * lib/linux/mknod.c: New file.
+ * build-aux/configure-lib.sh (libc_gnu_SOURCES): Add it.
+ * include/sys/stat.h (mknod): Declare it.
+ * include/fcntl.h (creat): New macro.
+
+2019-07-09 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Tar: Add missing defines.
+ * include/errno.h (ENXIO): New macro.
+ * include/sys/stat.h (S_IFIFO, S_ISFIFO): New macro.
+
+2019-07-06 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Bash: Add struct winsize.
+ * include/termio.h (struct winsize): New type.
+
+2019-07-03 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Awk: Implement atof.
+ * lib/stdlib/atoi.c: Update.
+ * lib/stdlib/atof.c: Rename from stub/atof.c; Implement.
+ * lib/libc+gnu.c: Update include.
+ * lib/libg.c: Update include.
+
+2020-01-12 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Awk: Add dtoab, %f in vfprintf, vsnprintf.
+ * include/libmes.h (dtoab): Declare.
+ * lib/mes/ntoab.c (ntoab): Update.
+ * lib/mes/dtoab.c: New file.
+ * build-aux/configure-lib.sh (libmes_SOURCES, libc_tcc_SOURCES): Add
+ it.
+ * lib/tests/mes/90-dtoab.c: Test it.
+ * lib/tests/stdio/90-sprintf.c: Test it.
+ * build-aux/check-mescc.sh (tests): Run it, against...
+ * lib/tests/mes/90-dtoab.stdout: ...baseline.
+ * lib/stdio/vfprintf.c (vfprintf): Support %f, even more naive support
+ for %e, %E, %g, %G.
+ * lib/stdio/vsnprintf.c (vsnprintf): Likewise.
+
+2019-06-25 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Awk: Add abtod, implementing strtod.
+ * include/libmes.h (abtod): Declare.
+ * lib/mes/abtod.c: New file.
+ * build-aux/configure-lib.sh (libmes_SOURCES, libc_tcc_SOURCES): Add
+ it.
+ * lib/mes/abtol.c: Update.
+ * lib/stdlib/strtod.c: Use it to implement; move from stub/strtod.
+ * lib/tests/mes/90-abtod.c: Test it.
+ * lib/tests/mes/90-abtod.stdout: Baseline.
+ * build-aux/check-mescc.sh (tests): Run it.
+
+2019-06-22 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Awk: vsscanf: Support %f.
+ * lib/stdio/vsscanf.c (vsscanf): Support %f.
+
+2019-06-19 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Awk: Do not flush std files.
+ * lib/stdio/fflush.c (fflush): Do not flush std files.
+
+2019-06-16 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Awk: Add isgraph.
+ * lib/ctype/isgraph.c: New file.
+ * lib/libc+gnu.c: Include it.
+ * include/ctype.h: Add missing prototypes.
+
+2019-06-12 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Tar: Add readlink, symlink.
+ * lib/linux/gnu.c (readlink, symlink): New function.
+ * include/unistd.h (readlink, symlink): Declare.
+ * include/linux/x86/syscall.h (SYS_readlink, SYS_symlink): New macro.
+ * include/linux/x86_64/syscall.h (SYS_symlink, SYS_readlink): New
+ macro.
+
+2019-06-09 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Support GNU Tar: Add execlp.
+ * lib/posix/execl.c (vexec): New function.
+ (execl): Use it.
+ * lib/posix/execlp.c: New file.
+ * build-aux/configure-lib.sh (libc_tcc_SOURCES): Add it.
+ * lib/libc+gnu.c: Include it.
+ * include/unistd.h (execlp): Declare.
+ * lib/tests/posix/90-execlp.c: New file.
+ * lib/tests/posix/90-execlp.stdout: New file.
+ * build-aux/check-mescc.sh: Test it.
+
+2019-06-12 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Fix compile warnings.
+ * include/stdlib.h (abort): Add prototype.
+
+2019-11-10 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Add missing stubs.
+ * build-aux/configure-lib.sh (libc_gnu_SOURCES): Add fscanf, rewind stubs.
+ * lib/stdio/freeopen.c: Remove.
+
+2019-09-20 Jan Nieuwenhuizen
+
+ build: Avoid tar --exclude=.
+ * build-aux/install.sh.in: Only use `tar --exclude=' if we also have .go
+ files compiled by Guile.
+
+2019-09-16 Jan Nieuwenhuizen
+
+ build: mesar: Remove bashisms.
+ * scripts/mesar.in: Remove bashisms.
+
+2019-10-01 Jan Nieuwenhuizen
+
+ configure.sh: Cleanup argument parsing. Thanks, Timothy!
+ * configure.sh: Cleanup argument parsing.
+
+2019-09-16 Jan Nieuwenhuizen
+
+ configure.sh: Remove bashisms.
+ * configure.sh: Remove bashisms. Fixes running with Gash 0.1.
+
+2019-09-16 Jan Nieuwenhuizen
+
+ Revert "nyacc: 0.86.0 compatibility stub. WIP"
+ This reverts commit 0183cc1c42437fda27196e27b490285a61d47f59.
+
+ While it works to run Nyacc 0.86.0, it breaks running Nyacc 0.93 and
+ up. This would need more thought and work, adding a nyacc-compat
+ directory or so. Seems not worth the effort right now.
+
+2019-09-16 Jan Nieuwenhuizen
+
+ nyacc: 0.86.0 compatibility stub. WIP
+ * mes/module/nyacc/lang/c99/util.scm: 0.86.0 compatibility stub.
+
+2019-09-20 Jan Nieuwenhuizen
+
+ build: Split-out build-source-lib.sh from build-lib.sh.
+ * build-aux/build-lib.sh: Remove building of source lib.
+ * build-aux/build-source-lib.sh: New file.
+ * build-aux/build.sh.in: Invoke it.
+ * build-aux/bootstrap.sh.in: Likewise.
+
+2019-11-13 Jan Nieuwenhuizen
+
+ build: Honor configure's --includedir. Thanks, Vagrant!
+ Suggested by Vagrant Cascadian
+
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=902174#84
+
+ * build-aux/install.sh.in: Install headers in $includedir.
+ * configure (includedir): Typo.
+ * configure.sh (includedir): Likewise.
+
+2019-11-23 Jan Nieuwenhuizen
+
+ build: Create ascii signature.
+ * build-aux/GNUmakefile.in (sign): Create ascii signature.
+
+2019-09-09 Jan Nieuwenhuizen
+
+ doc: Post-release update.
+ * doc/announce/ANNOUNCE-0.20: Update.
+ * guix/git/mes.scm (mes): Update.
+
+ Release 0.20.
+ * configure (VERSION): Update to 0.20.
+ (main): Likewise.
+ * configure.sh (VERSION): Likewise.
+ * guix/git/mes.scm (mes, mes.git): Likewise.
+
+ doc: Release update.
+ * BLURB: New file.
+ * AUTHORS: Update.
+ * HACKING: Update.
+ * INSTALL: Update.
+ * NEWS: Update.
+ * README: Update.
+ * doc/images/gcc-mesboot-graph.dot: Update.
+ * doc/mes.texi: Update.
+ * simple.sh: Update.
+ * doc/announce/ANNOUNCE-0.20: New file.
+
+ guix: Update mescc-tools to 0.6.1.
+ * guix/git/mes.scm (mescc-tools): Update to 0.6.1.
+ * configure: Check for mescc-tools versions 0.6 or higher.
+
+ build: Create ascii signature.
+ * build-aux/GNUmakefile.in (sign): Create ascii signature.
+
+ guix: Update Nyacc to 0.99.
+ * guix/git/mes.scm (nyacc): Update to 0.99.
+
+ doc: Add PORTING.
+ * PORTING: New file.
+
+ doc: Typos. Thanks, dddddd.
+ * doc/announce/ANNOUNCE-0.11: Typo.
+ * doc/announce/ANNOUNCE-0.12: Typo.
+ * doc/announce/ANNOUNCE-0.13: Typo.
+ * doc/announce/ANNOUNCE-0.14: Typo.
+
+ mescc: Remove dead code. Thanks Mark Weaver.
+ * module/mescc/compile.scm (field-size): Remove dead function.
+
+ guix: Update packaging.
+ * build-aux/manifest.scm (string-append):
+ * guix/git/mes.scm (nyacc, git-file?): Remove.
+ (mescc-tools): Bump to 0.6.0.
+ (%source-dir): New variable.
+ (mes.git): Ues it.
+ * guix.scm: Rename from .guix.scm.
+
+ build: Do not generate ChangeLog from tarball.
+ * configure (main): Set .git-for-build.
+ * build-aux/install.sh.in (DESTDIR): Use it as canary to skip
+ ChangeLog rebuild.
+
+ build: Use mesar instead of ar.
+ * scripts/mesar.in: Rename from ar.in. Update users.
+ * build-aux/build.sh.in (LIBS): Update.
+ * build-aux/check.sh.in (recheck): Likwise.
+ * build-aux/install.sh.in (DESTDIR): Likwise.
+ * configure (main): Likwise.
+ * configure.sh (mes_system): Likwise.
+ * .gitignore: Update.
+
+ getopt: Remove old FSF address, thanks Vagrant.
+ * lib/posix/getopt.c: Remove old FSF address.
+
+2019-09-09 Danny Milosavljevic
+
+ Add missing #include.
+ * lib/tests/scaffold/55-char-array.c: Add missing #include.
+
+ Add missing #include.
+ * lib/tests/io/90-stat.c: Add missing #include.
+
+ Add missing #include.
+ * lib/posix/getcwd.c: Add missing #include.
+
+2019-09-09 Jan Nieuwenhuizen
+
+ signal: Use SA_RESTORER on x86-64.
+ * lib/linux/signal.c (signal)[x86_64]: Avoid segfault by setting
+ SA_RESTORER flag.
+
+2019-09-09 Danny Milosavljevic
+
+ signal: Add comment on why we don't use the restorer.
+ * lib/linux/signal.c: Add comment on why we don't use the restorer.
+
+ signal: Remove SA_SIGINFO.
+ * lib/linux/signal.c (signal): Remove SA_SIGINFO.
+
+ signal: Don't use custom restorer.
+ * lib/linux/signal.c (signal): Don't use custom restorer.
+
+ signal: Use SA_SIGINFO (like glibc).
+ * lib/linux/signal.c (_restorer): Rename to...
+ (_restorer_for_siginfo): ...this.
+ (signal): Use it. Use SA_SIGINFO.
+
+ signal: Make sure that the signal mask is actually unsigned long.
+ * lib/linux/signal.c (signal): Make sure that the signal mask is actually
+ unsigned long.
+
+2019-09-09 Danny Milosavljevic
+
+ Delete "__sigmask".
+ Follow-up to 6d95b89759d3c598fc84194429ae8c57249daa1a
+
+ * lib/linux/signal.c (__sigmask): Delete definition.
+
+2019-09-09 Danny Milosavljevic
+
+ Fix "struct sigaction" structure for rt_sigaction.
+ * include/signal.h (sigset_t): Increase size.
+ * lib/linux/signal.c (signal): Use new sigset_t.
+
+ Inherit CFLAGS for mes.
+ * build-aux/check.sh.in: Inherit CFLAGS for mes.
+
+ Fix typo.
+ * build-aux/build.sh.in: Fix typo in "CFLAGS".
+
+ tests: Fail early on nonexistent file.
+ * lib/tests/io/90-stat.c (main): Fail early on nonexistent file.
+
+ open: Check flags, and use _open2 if applicable.
+ * lib/linux/open.c (open): Check flags; use _open2.
+
+ ldiv: Make rem < 0 if a < 0.
+ * lib/mes/div.c (ldiv): Make rem < 0 if a < 0.
+
+ ldiv: Handle a == LONG_MIN.
+ * lib/mes/div.c (ldiv): Handle a == LONG_MIN.
+
+2019-09-09 Jan Nieuwenhuizen
+
+ ntoab: Use __mesabi_uldiv only for arm.
+ * lib/mes/ntoab.c (ntoab)[__MESC__ && __arm__]: Use __mesabi_uldiv.
+ * build-aux/check-mescc.sh (XFAIL_TESTS): 70-printf-simple.c and
+ 70-printf.c now pass for x86_64 mescc.
+
+2019-07-01 Danny Milosavljevic
+
+ Fix ntoab.
+ Follow-up to b5b19304b59fefbed923b146ec8c8d495556fa76.
+
+ * lib/mes/ntoab.c (ntoab): Fix non-MESC case.
+
+2019-06-18 Danny Milosavljevic
+
+ signal: Define "_restorer" everywhere except on i386.
+ * lib/linux/signal.c: Define "_restorer" everywhere except on i386.
+
+ Clarify our data type choices in "struct stat".
+ * include/sys/stat.h: Clarify our data type choices in "struct stat".
+
+2019-09-07 Jan Nieuwenhuizen
+
+ test: Bump timeout.
+ * build-aux/test-c.sh: Bump timeout to 10s, __mesabi_uldiv can be slow.
+
+2019-06-14 Danny Milosavljevic
+
+ ntoab: Use __mesabi_uldiv only on __MESC__.
+ * lib/mes/ntoab.c (ntoab): Use __mesabi_uldiv only on __MESC__.
+
+2019-06-14 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Include mes/div.c for mescc builds.
+ * build-aux/configure-lib.sh (libmes_SOURCES): Add mes/div.c.
+ * simple.sh: Likewise.
+
+2019-06-13 Danny Milosavljevic
+
+ ntoab: Include "assert.h".
+ * lib/mes/ntoab.c: #include "assert.h".
+
+ mescc: Mes C Library: Use __mesabi_uldiv.
+ * lib/mes/ntoab.c (ntoab): Use __mesabi_uldiv.
+
+ mescc: Mes C Library: Add integer division algorithm.
+ * lib/mes/div.c: New file.
+
+2019-07-28 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Have write behave well with buffered reads.
+ * lib/mes/write.c: New file.
+ * build-aux/configure-lib.sh (libc_mini_SOURCES): Add it.
+ (libc_mini_shared_SOURCES): New variable.
+ (libc_mini_SOURCES, libmes_SOURCES): Use it.
+ (libmes_SOURCES): Add lib/linux/lseek.c, lib/posix/write.c.
+ (libc_tcc_SOURCES): Remove lib/linux/lseek.c.
+ * lib/posix/write.c (write): Correct for read buffer.
+ * lib/stdio/fwrite.c (fwrite): Remove read buffer correction.
+ * simple.sh: Update.
+
+2019-07-27 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Add buffered read.
+ * lib/mes/__buffered_read.c: New file.
+ * build-aux/configure-lib.sh (libc_SOURCES): Add it. Also add memmove.c.
+ (libc_tcc_SOURCES): Remove memmove.c
+ * lib/linux/close.c (close): Clear read buffer.
+ * lib/linux/_open3.c (_open3): Likewise.
+ * lib/linux/lseek.c (lseek): Correct for read buffer.
+ * lib/stdio/fwrite.c (fwrite): Likewise.
+ * lib/posix/read.c (read): Call __buffered_read.
+ * lib/posix/write.c (write): Add FIXME note about buffered reads.
+ * simple.sh: Update.
+
+2019-06-10 Jan Nieuwenhuizen
+
+ tests: Disable 70-extern.c for x86_64-gcc.
+ * build-aux/check-mescc.sh (XFAIL_TESTS)[x86_64-gcc]: Add
+ 70-extern.c.
+
+2019-05-30 Danny Milosavljevic
+
+ mescc: Put char's ASCII code into register, not char.
+ * module/mescc/compile.scm (expr-register): Put char's ASCII code into
+ register, not char.
+
+2019-06-09 Jan Nieuwenhuizen
+
+ mes: Update to Nyacc 0.93.
+ * mes/module/nyacc/lang/c99/util.mes: New file.
+ * mes/module/nyacc/lang/c99/parser.mes: Use it.
+ * module/mescc/compile.scm (ast->info): Update for Nyacc 0.93.0.
+ * module/mescc/preprocess.scm (need-progress): Likewise.
+ (ast-strip-comment): Likewise.
+
+2019-08-02 Jan Nieuwenhuizen
+
+ mes: string->number: Support #x-prefixed hex numbers.
+ * mes/module/mes/scm.mes (string->number): Support "#x"-prefix.
+ * tests/math.test ("string->number #hex"): Test it.
+
+2019-07-27 Jan Nieuwenhuizen
+
+ mescc: Do not dump variables with extern storage.
+ * lib/tests/scaffold/70-extern.stdout: New file.
+ * lib/tests/scaffold/70-extern.c: New file.
+ * build-aux/check-mescc.sh (TESTS): Add it..
+ * module/mescc/M1.scm (global-string?, global-extern?): New function.
+ (info->M1): Dump strings first. Skip extern symbols.
+ * module/mescc/info.scm (): Add storage field.
+ (make-global): Add storage parameter. Pass it.
+ * module/mescc/compile.scm (make-global-entry): Likewise.
+ (global->info): Likewise.
+ (init-declr->info): Likewise.
+ (decl->info): Pass storage.
+
+ build: ./pre-inst-env MES_PREFIX fixup.
+ * build-aux/pre-inst-env.in: Set MES_PREFIX to abs_top_srcdir.
+ * src/mes.c (open_boot): Cater for MES_PREFIX/mes and ${srcdest}.
+
+ mescc: Be silent.
+ * module/mescc/M1.scm (infos->M1, info->M1): Add verbose?. Move
+ debugging into verbose? > 1.
+ * module/mescc/compile.scm (c99-input->info, c99-ast->info): Likewise.
+ (mescc:trace-verbose): Rename from mescc:trace.
+ (mescc:trace): New function.
+ * module/mescc.scm (mescc:main): Likewise.
+ * module/mescc/mescc.scm (mescc:preprocess, c->ast mescc:compile,
+ c->info, E->info): Likewise.
+ * module/mescc/preprocess.scm (c99-input->full-ast, c99-input->ast):
+ Likewise.
+
+2019-07-26 Jan Nieuwenhuizen
+
+ mescc: Add // to include path.
+ * module/mescc/preprocess.scm (c99-input->full-ast): Add
+ // to include path.
+ * module/mescc/compile.scm (c99-input->info): Pass arch.
+ * module/mescc/mescc.scm (mescc:preprocess): Likewise.
+ (c->info): Likewise.
+ (c->ast): Likewise.
+
+ mescc: Add 70-function-destruct-declare.c test.
+ * module/mescc/compile.scm (init-declr->info): Do not attempt to
+ re-calculate function type.
+ (ftn-declr:get-type): Remove.
+ * lib/tests/scaffold/70-function-destruct-declare.c: New file.
+ * build-aux/check-mescc.sh (TESTS): Add it.
+
+ mescc: Resurrect --write.
+ * module/mescc/mescc.scm (mescc:preprocess): Pass pretty-print/write
+ to c->ast.
+
+ build: Distribute crt*.c, libc+gnu.c for tcc, gcc bootstrap build.
+ * build-aux/build-lib.sh (libc_gnu_SOURCES): Build libc+gnu.c. Copy
+ crt*.c, libc+gnu.c for distribution.
+
+ build: Uniquify config macros.
+ * configure (main): Rename VERSION to MES_VERSION, pkgdatadir to
+ MES_PKGDATADIR. Update users.
+ * configure.sh (mes_system): Likewise.
+ * src/mes.c (mes_symbols): Update.
+ (open_boot): Update.
+ * scaffold/cons-mes.c (main): Update.
+ * simple.sh: Update.
+
+2019-07-20 Jan Nieuwenhuizen
+
+ build: Resurrect --with-cheating.
+ * build-aux/config.sh.in (SCHEME): New substitute.
+ * build-aux/config.make.in: Likewise.
+ * configure: Substitute them.
+
+2019-07-23 Jan Nieuwenhuizen
+
+ mescc: Support tcc: libtcc1 build fixes.
+ * lib/libtcc1.c: Support building without long long, float support.
+
+2019-06-01 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Avoid type/size_t conflicts.
+ * include/alloca.h: Remove typedefs, include sys/types.h.
+ * include/stdint.h: Likewise.
+ * include/string.h: Likewise.
+
+2019-07-17 Jan Nieuwenhuizen
+
+ mescc: Support tcc: Add intptr_t, uintptr_t.
+ * include/sys/types.h (intptr_t, uintptr_t): Add typedef.
+
+2019-07-21 Jan Nieuwenhuizen
+
+ mescc: Add 70-struct-post.c test with fix.
+ * lib/tests/scaffold/70-struct-post.c: New file.
+ * build-aux/check-mescc.sh (TESTS): Add it.
+ * module/mescc/compile.scm (expr->register): Use type size for rank
+ 0 (WAS: 1).
+
+ mescc: Add 70-struct-short-enum-init.c test with fix.
+ * module/mescc/compile.scm (init->data): Respect type of size.
+ * lib/tests/scaffold/70-struct-short-enum-init.c: New file.
+ * lib/tests/scaffold/70-struct-short-enum-init.stdout: New file.
+ * build-aux/check-mescc.sh (TESTS): Add test.
+
+2019-07-20 Jan Nieuwenhuizen
+
+ mescc: Add 70-array-in-struct-init.c test with fix.
+ * lib/tests/scaffold/70-array-in-struct-init.c: New file.
+ * lib/tests/scaffold/70-array-in-struct-init.stdout: New file.
+ * build-aux/check-mescc.sh (TESTS): Add test.
+ * module/mescc/compile.scm (array-init-element->data): Recurse for
+ elements instead of using init->data. Support array fields.
+
+2019-07-19 Jan Nieuwenhuizen
+
+ mes: Remove broken copy of simple-format.
+ * mes/module/mes/simple-format.mes: New file.
+ * mes/module/mes/guile.mes: Use it.
+ (with-output-to-string, simple-format): Remove broken copies.
+ * mes/module/mes/display.mes (with-output-to-string, simple-format,
+ format): Remove.
+
+2019-07-05 Danny Milosavljevic
+
+ Fix remainder handling.
+ * mes/module/mes/scm.mes (number->string): Fix remainder handling.
+ * build-aux/check-mescc.sh (XFAIL_TESTS): Remove
+ lib/tests/scaffold/60-math.c.
+
+2019-07-09 Jan Nieuwenhuizen
+
+ Revert "test: Disable 60-math.c test."
+ This reverts commit bbe6576a66a520d429bb3ec84120ffcce88480bf.
+
+ test: Disable 60-math.c test.
+ * build-aux/check-mescc.sh (TESTS): Remove
+ lib/tests/scaffold/60-math.c.
+ (BROKEN_TESTS): Add it.
+
+2019-07-07 Jan Nieuwenhuizen
+
+ build: Resurrect bootstrap.sh.
+ * build-aux/connfigure-lib.sh: Split from build-lib.sh
+ * build-aux/build-lib.sh: Include it.
+ * build-aux/bootstrap.sh.in: New file.
+ * configure.sh: Substitute it.
+
+2019-07-08 Jan Nieuwenhuizen
+
+ mescc: Use basename of input as default output name.
+ * module/mescc/mescc.scm (mescc:preprocess, mescc:compile,
+ mescc:assemble, M1->hex2): Use basename of input as default output name.
+
+2019-07-06 Jan Nieuwenhuizen
+
+ build: Handle gcc with --pie-by-default.
+ This fixes upgrading to debian-hurd-20190220.img.
+
+ * build-aux/build.sh.in (CFLAGS): Add -static. Fixes using gcc
+ compiled with --pie-by-default
+ * build-aux/check.sh.in (CFLAGS): Likewise.
+ * module/mescc.scm (parse-opts): Ignore -no-pie, -static.
+
+2019-07-08 Jan Nieuwenhuizen
+
+ test: Split-off broken 72-typedef-struct-def-local.
+ * lib/tests/scaffold/72-typedef-struct-def-local.c: New file.
+ * lib/tests/scaffold/72-typedef-struct-def.c: Remove local bit.
+ * build-aux/check-mescc.sh (TESTS): Add it.
+ (XFAIL_TESTS)[mescc]: Add lib/tests/scaffold/72-typedef-struct-def.c.
+
+2019-06-28 Jan Nieuwenhuizen
+
+ test: Fix open-read test.
+ * build-aux/pre-inst-env.in (srcdir): Remove.
+ (abs_top_srcdir, abs_top_builddir): Export.
+ * lib/tests/posix/50-open-read.c (main): Use abs_top_srcdir.
+
+2019-06-26 Jan Nieuwenhuizen
+
+ test: Add open-read test.
+ * build-aux/test-c.sh: Support running by hand.
+ * lib/tests/posix/50-open-read.c: New test.
+ * lib/tests/posix/data/open-read: New file.
+ * build-aux/check-mescc.sh (TESTS): Add it.
+
+ test: Enable argv test, run tests with arguments.
+ * build-aux/check-mescc.sh (TESTS): Enable 54-argv.c
+ (XFAIL_TESTS): Remove it.
+ * build-aux/test-c.sh: Invoke test with options.
+ * lib/tests/scaffold/54-argc.c: Update.
+
+2019-06-25 Jan Nieuwenhuizen
+
+ mescc: Mes C library: Move common getcwd, open bits to posix.
+ * lib/linux/_getcwd.c: Rename from getcwd.c.
+ * lib/linux/_open3.c: Rename from open.c.
+ * lib/posix/getcwd.c: New file with bits from ../linux/getcwd.c.
+ * lib/posix/open.c: New file with bits ../linux/getcwd.c.
+ * build-aux/build-lib.sh (libc_SOURCES): Update.
+
+2019-06-24 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Move posix bits to read.
+ * lib/linux/_read.c: Rename from read.
+ * lib/posix/read.c: New file.
+ * build-aux/build-lib.sh (libc_SOURCES): Update.
+ * include/mes/lib.h (_read): Declare.
+
+2019-06-25 Jan Nieuwenhuizen
+
+ porting: Avoid failing in scaffold build.
+ * build-aux/build-scaffold.sh: Do not fail when using courage.
+
+ build: Use bash if available to avoid dash problems.
+ * configure: Set SHELL to bash.
+ * configure.sh: Likewise.
+ * build-aux/test-suite.sh (TEST_LOGS):
+ * build-aux/export.make: Export SHELL.
+ * build-aux/config.sh.in (SHELL): New substitute, export.
+ * build-aux/config.make.in (SHELL): New substitute.
+ * build-aux/GNUmakefile.in (build, check, install, uninstall): Use
+ $SHELL to avoid dash problems.
+ * build-aux/check-mescc.sh: Likewise.
+ * build-aux/build.sh.in: Likewise.
+ * build-aux/check-mes.sh: Likewise.
+ * build-aux/check.sh.in: Likewise.
+
+ test: Oops, uncomment some commented-out tests.
+ * lib/tests/scaffold/55-char-array.c: Uncomment.
+ * lib/tests/scaffold/72-typedef-struct-def.c: Likewise.
+
+ build: Improve --with-system-libc support.
+ * build-aux/build-lib.sh: Avoid building libc for --with-system-libc.
+ Make libmes richer.
+ build-aux/check-mescc.sh: Enable 50-malloc test.
+ * include/dirstream.h: Use HAVE_DIRSTREAM_H to cater for non-existing
+ dirstream.h.
+ * include/grp.h[SYSTEM_LIBC]: Typo.
+ * include/mes/lib.h (__brk, __call_at_exit)[SYSTEM_LIBC]: Declare.
+ * include/stdlib.h (comparison_fn_t)[SYSTEM_LIBC]: Declare.
+ * include/time.h (mktime): Return time_t.
+ * lib/posix/isatty.c [SYSTEM_LIBC]: Do not (re)declare termios.
+ * lib/stub/mktime.c (mktime): Return time_t.
+ * lib/tests/scaffold/41-ternary.c (main): Remove assumption that
+ locals are initialized.
+ * lib/tests/scaffold/70-stdarg.c: Cater for SYSTEM_LIBC.
+ * lib/tests/setjmp/80-setjmp.c: Declare jmp buf.
+ * lib/*/*.c: Add missing mes/lib.h, errno.h includes.
+
+2019-06-23 Jan Nieuwenhuizen
+
+ porting: Add x86_64 scaffold: exit and write in assembly.
+ * lib/x86_64-mes-gcc/exit-42.S: New file.
+ * lib/x86_64-mes-gcc/hello-mes.S: New file.
+ * lib/x86_64-mes/elf64-0exit-42.hex2: New file.
+ * lib/x86_64-mes/elf64-0hello-mes.hex2: New file.
+ * lib/x86_64-mes/elf64-body-exit-42.hex2: Rewrite..
+ * lib/x86_64-mes/elf64-body-hello-mes.hex2:
+ * lib/x86_64-mes/elf64-0header.hex2: Fix copyright header.
+ * lib/x86_64-mes/elf64-header.hex2: Likewise.
+ * lib/x86_64-mes/elf-0footer.hex2: Remove.
+
+2019-06-13 Jan Nieuwenhuizen
+
+ porting: Add x86 scaffold: exit and write in assembly.
+ * lib/x86-mes-gcc/exit-42.S: New file.
+ * lib/x86-mes-gcc/hello-mes.S: New file.
+ * lib/x86-mes/elf32-0exit-42.hex2: New file.
+ * lib/x86-mes/elf32-0hello-mes.hex2: New file.
+ * lib/x86-mes/elf32-body-hello-mes.hex2: New file.
+ * lib/x86-mes/elf32-body-exit-42.hex2: Rewrite.
+ * lib/x86-mes/elf32-header.hex2: Fix copyright header.
+ * lib/x86-mes/elf32-0header.hex2: Likewise.
+ * lib/x86-mes/elf-0footer.hex2: Remove.
+ * build-aux/build-scaffold.sh: Build them.
+ * .dir-locals.el (asm-mode): Allow TABs.
+ * .gitignore: Reserve .S assembly sources, i.e. manual written
+ assembly. Update build system.
+ * module/mescc/mescc.scm: Update.
+ * build-aux/build-lib.sh: Update.
+ * scripts/ar.in: Update.
+
+2019-06-10 Jan Nieuwenhuizen
+
+ make check: Do not re-check unless recheck=true.
+ * build-aux/check-mescc.sh (recheck): New variable.
+ * build-aux/check.sh.in (recheck): New variable.
+ * build-aux/test-suite.sh (TEST_LOGS): Use it.
+
+2019-05-22 Jan Nieuwenhuizen
+
+ build: Cater for ARM.
+ * configure: Cater for ARM.
+ * configure.sh: Likewise
+ * build-aux/GNUmakefile.in: Likewise.
+ * build-aux/bootstrap.sh.in: Likewise.
+ * module/mescc.scm (parse-opts): Likewise.
+ * src/mes.c (mes_environment): Likewise.
+ * build-aux/build.sh.in: Likewise.
+ * build-aux/config.sh Likewise.
+ * build-aux/install.sh.in: Likewise.
+ * module/mes/guile.scm: Likewise.
+ * scripts/mescc.scm.in: Likewise.
+ * module/mescc/mescc.scm (arch-get): New function.
+ (arch-get-info): New function.
+ (arch-get-define): New function.
+ (arch-get-m1-options): New function.
+ (arch-get-Architecture): New function.
+ (mescc:preprocess c->info, E->info, M1->hex2, hex2->elf,
+ M1->blood-elf, arch-find): Use them.
+
+2019-06-10 Jan Nieuwenhuizen
+
+ mescc: Drop $@-workaround.
+ * scripts/mescc.in: Drop $@-workaround.
+
+2019-06-08 Jan Nieuwenhuizen
+
+ build: Simplify.
+ core: Make mes src/ c files separate compilation units.
+
+ * include/mes/constants.h: New file.
+ * include/mes/macros.h: New file.
+ * include/mes/mes.h: New file.
+ * src/gc.c: Update.
+ * src/hash.c: Update.
+ * src/lib.c: Update.
+ * src/math.c: Update.
+ * src/mes.c: Update.
+ * src/module.c: Update.
+ * src/posix.c: Update.
+ * src/reader.c: Update.
+ * src/string.c: Update.
+ * src/struct.c: Update.
+ * src/vector.c: Update.
+
+ mes: Update datadir.
+
+ * src/mes.c (g_datadir): New global.
+ (open_boot): Rename from read_boot.
+ (read_boot): New function.
+ * mes/module/mes/boot-0.scm: Move from boot-0.scm.in
+ * configure: Update.
+ * configure.sh: Update.
+
+ mescc: Create libraries from separate files.
+
+ * .gitignore: Update.
+ * build-aux/bootstrap-mes.sh: Remove.
+ * build-aux/bootstrap.sh.in: Remove.
+ * build-aux/build-guile.sh: Update.
+ * build-aux/build-mes.sh: Update.
+ * build-aux/build-scaffold.sh: New file.
+ * build-aux/build.sh.in: Update.
+ * build-aux/cc.sh: Update.
+ * build-aux/check-tcc.sh: Remove.
+ * build-aux/config.sh.in: New file.
+ * build-aux/config.sh: Remove.
+ * build-aux/install.sh.in: Update.
+ * build-aux/test-boot.sh: New file.
+ * build-aux/test-c.sh: New file.
+ * build-aux/test-driver: New file.
+ * build-aux/test-suite.sh: New file.
+ * build-aux/trace.sh: Update.
+ * build-aux/uninstall.sh.in: Update.
+ * configure: Update.
+ * configure.sh: Update.
+ * lib/linux/x86-mes-mescc/crt1.c: Move from lib/linux/x86-mes.
+ * lib/linux/x86-mes-mescc/mini.c: Likewise.
+ * lib/linux/x86_64-mes-mescc/crt1.c: Move from lib/linux/x86_64-mes.
+ * lib/linux/x86_64-mes-mescc/mini.c: Likewise.
+ * lib/linux/x86-mes-gcc/syscall.c: Rename from mes.c.
+ * lib/linux/x86-mes-mescc/syscall.c: Likewise.
+ * lib/linux/x86_64-mes-gcc/syscall.c: Likewise.
+ * lib/linux/x86_64-mes-mescc/syscall.c: Likewise.
+ * lib/mes/mes_open.c: Include config.h.
+ * lib/tests/stdio/70-printf-hello.c: Likewise.
+ * lib/tests/stdio/70-printf-simple.c: Likewise.
+ * scaffold/gc-test.sh: New file.
+ * simple.sh: Update.
+
+2019-06-08 Jan Nieuwenhuizen
+
+ test: Move scaffold/tests into lib.
+ * lib/tests/scaffold: Move from scaffold/tests.
+ * scaffold/tests: Remove.
+ * build-aux/check-mescc.sh: Update.
+
+2019-05-10 Danny Milosavljevic
+
+ build: Make "GUILEC" compilation status output more verbose (print full path).
+ * build-aux/build-guile.sh: Make "GUILEC" compilation status output more
+ verbose (print full path).
+
+2019-05-29 Jan Nieuwenhuizen
+
+ build: Fix --disable-silent-rules. Thanks ng0!
+ * configure (main): Substitute V as string value.
+ * build-aux/trace.sh: Typo. Fixes using V=0.
+ * build-aux/config.status.in (V): New substitute.
+ * build-aux/config.make.in (V): New substiute.
+
+ mescc: Use a.out as default executable name.
+ * module/mescc/mescc.scm (hex2->elf): Use a.out as default executable
+ name.
+
+ mescc: Robustify against empty `V' in environment.
+ * module/mescc.scm: Robustify against empty V in environment.
+
+2019-05-28 Jan Nieuwenhuizen
+
+ mescc: Fix -dumpmachine to respect -m bits selection.
+ * module/mescc.scm (parse-opts): Fix -dumpmachine to respect -m bits
+ selection. Also display kernel.
+
+2019-05-29 Jan Nieuwenhuizen
+
+ mescc: Support single-dash options on Mes too.
+ * scripts/mescc.in[MES]: Add -- as separator, fixes using single-dash
+ options on Mes too.
+
+ mescc: Ignore -fnobuiltin, -nostdinc for GCC compatibility.
+ * module/mescc.scm (parse-opts): Add -fnobuiltin, -nostdinc.
+ (mescc:main): Ignore them.
+
+2019-05-27 Jan Nieuwenhuizen
+
+ test: Resurrect running boot tests on Guile.
+ * module/mes/guile.scm (keyword->string): New function.
+ * scaffold/boot/43-or.scm (foo): Add quoting.
+ * scaffold/boot/45-pass-if.scm (pass-if): Likewise.
+ * scaffold/boot/46-report.scm (pass-if): Likewise.
+ * scaffold/boot/47-pass-if-eq.scm (pass-if): Likewise.
+ * scaffold/boot/48-let.scm (map): Rename from map1.
+ * scaffold/boot/60-let-syntax-expanded.scm: Some work.
+
+2019-05-26 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Fix compile warnings.
+ * lib/stdio/fputc.c (fputc): Oops, stream is a long.
+ * lib/stdlib/malloc.c (malloc): Cast to char *. FIXME
+ * lib/string/memchr.c (memchr): Cast to void *.
+ * lib/string/memcmp.c (memcmp): Add const cast.
+
+ mescc: Mes C Library: Fixes for x86_64 crt1.c
+ * lib/linux/x86_64-mes/crt1.c (_start): Write only 4 bytes to int
+ variables __stdin, __stdout, __stderr.
+
+2019-05-29 Jan Nieuwenhuizen
+
+ test: Move srfi-1 for-each and map tests to tests/srfi-1.test.
+ This fixes: `make check MES=guile'.
+
+ * tests/srfi-1.test ("map 1,2", "map 2,1", "for-each 1,2",
+ for-each 2,1"): Move from scm.test.
+ * tests/scm.test ("map 1,2", "map 2,1", "for-each 1,2",
+ for-each 2,1"): Remove.
+
+2019-05-29 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Use SYSTEM_LIBC [WAS: WITH_GLIBC].
+ Run: sed -i 's,WITH_GLIBC,SYSTEM_LIBC,g' $(git grep -l WITH_GLIBC)
+
+ * build-aux/config.sh: Update.
+ * include/alloca.h: Likewise.
+ * include/ar.h: Likewise.
+ * include/argz.h: Likewise.
+ * include/assert.h: Likewise.
+ * include/ctype.h: Likewise.
+ * include/dirent.h: Likewise.
+ * include/dirstream.h: Likewise.
+ * include/dlfcn.h: Likewise.
+ * include/endian.h: Likewise.
+ * include/errno.h: Likewise.
+ * include/fcntl.h: Likewise.
+ * include/features.h: Likewise.
+ * include/float.h: Likewise.
+ * include/getopt.h: Likewise.
+ * include/inttypes.h: Likewise.
+ * include/libgen.h: Likewise.
+ * include/limits.h: Likewise.
+ * include/linux/x86_64/syscall.h: Likewise.
+ * include/locale.h: Likewise.
+ * include/math.h: Likewise.
+ * include/memory.h: Likewise.
+ * include/mes/lib-mini.h: Likewise.
+ * include/pwd.h: Likewise.
+ * include/setjmp.h: Likewise.
+ * include/signal.h: Likewise.
+ * include/stdarg.h: Likewise.
+ * include/stdbool.h: Likewise.
+ * include/stddef.h: Likewise.
+ * include/stdint.h: Likewise.
+ * include/stdio.h: Likewise.
+ * include/stdlib.h: Likewise.
+ * include/stdnoreturn.h: Likewise.
+ * include/string.h: Likewise.
+ * include/strings.h: Likewise.
+ * include/sys/cdefs.h: Likewise.
+ * include/sys/dir.h: Likewise.
+ * include/sys/file.h: Likewise.
+ * include/sys/ioctl.h: Likewise.
+ * include/sys/mman.h: Likewise.
+ * include/sys/param.h: Likewise.
+ * include/sys/resource.h: Likewise.
+ * include/sys/select.h: Likewise.
+ * include/sys/stat.h: Likewise.
+ * include/sys/time.h: Likewise.
+ * include/sys/timeb.h: Likewise.
+ * include/sys/times.h: Likewise.
+ * include/sys/types.h: Likewise.
+ * include/sys/ucontext.h: Likewise.
+ * include/sys/user.h: Likewise.
+ * include/sys/wait.h: Likewise.
+ * include/termio.h: Likewise.
+ * include/time.h: Likewise.
+ * include/unistd.h: Likewise.
+ * lib/libmes.c: Likewise.
+ * lib/tests/stdio/70-printf-hello.c: Likewise.
+ * lib/tests/stdio/70-printf-simple.c: Likewise.
+ * lib/tests/stdio/80-sscanf.c: Likewise.
+ * lib/tests/stdlib/50-malloc.c: Likewise.
+ * module/mescc/preprocess.scm: Likewise.
+ * scaffold/cons-mes.c: Likewise.
+ * scaffold/lib/stdlib/malloc.c: Likewise.
+ * scaffold/micro-mes.c: Likewise.
+ * scaffold/tests/61-array.c: Likewise.
+ * scaffold/tiny-mes.c: Likewise.
+ * simple.sh: Likewise.
+ * src/mes.c: Likewise.
+
+2019-05-27 Jan Nieuwenhuizen
+
+ mes: Bugfix for search-path. Fixes running MesCC on Guile.
+ * module/mescc/mescc.scm (arch-find): Also look in cwd.
+ * mes/module/mes/posix.mes (search-path): Do not look in cwd.
+
+2019-05-25 Jan Nieuwenhuizen
+
+ mescc: Use named --architecture switch for upcoming mescc-tools 0.6.
+ * module/mescc/mescc.scm (M1->hex2): Use named --architecture switch for
+ upcoming mescc-tools 0.6.
+ (hex2->elf): Likewise.
+ * build-aux/bootstrap-mes.sh: Likewise.
+ * build-aux/bootstrap.sh.in: Likewise.
+ * build-aux/config.sh: Likewise.
+
+2019-05-27 Jan Nieuwenhuizen
+
+ mes: Identify 64-bit bug when compiled with MesCC.
+ * src/math.c (divide): Add divide-by-zero error.
+ (modulo): Likewise.
+ * module/mes/guile.scm (%compiler): New variable.
+ * module/mescc/M1.scm (mesc?): New variable.
+ (hex2:immediate8): Use it to avoid divide-by-zero error.
+ * HACKING (Bugs): Add it.
+
+ mes: Make debug levels 4 and 5 usable.
+ * HACKING: Update debug policy.
+ * lib/linux/read.c (read): Print read in level 5.
+ * src/mes.c (eval_apply): Print module in level 6.
+ (main): Likewise. Remove redundant module printing.
+ * src/gc.c (gc): Print symbols in level 6.
+
+2019-05-18 Jan Nieuwenhuizen
+
+ mes: Run build-aux/indent.sh.
+ * src/mes.c: Re-indent.
+ * src: Likewise.
+ * include: Likewise.
+ * lib: Likewise.
+ * scaffold: Likewise.
+
+2019-05-12 Jan Nieuwenhuizen
+
+ mes: Grand indent: prepare.
+ * build-aux/indent.sh: New file.
+ * include/mes/builtins.h: Move from src/builtins.h.
+ * include/fcntl.h: Use // *INDENT-OFF* to prevent indent breakage.
+ * include/locale.h: Likewise.
+ * include/signal.h: Likewise.
+ * include/sys/stat.h: Likewise.
+ * include/sys/user.h: Likewise.
+ * lib/linux/x86-mes-gcc/crt0.c: Likewise.
+ * lib/linux/x86-mes-gcc/crt1.c: Likewise.
+ * lib/linux/x86-mes-gcc/mes.c: Likewise.
+ * lib/linux/x86-mes-gcc/mini.c: Likewise.
+ * lib/linux/x86_64-mes-gcc/crt0.c: Likewise.
+ * lib/linux/x86_64-mes-gcc/crt1.c: Likewise.
+ * lib/linux/x86_64-mes-gcc/mes.c: Likewise.
+ * lib/linux/x86_64-mes-gcc/mini.c: Likewise.
+ * lib/x86_64-mes-gcc/setjmp.c: Likewise.
+ * src/mes.c: Likewise.
+ * src/reader.c: Likewise.
+
+2019-05-15 Jan (janneke) Nieuwenhuizen
+
+ mes: Support -c EXPR.
+ * mes/module/mes/boot-0.scm.in: Support -c EXPR.
+
+ mes: Support optional port on read.
+ * mes/module/mes/scm.mes (read): Support optional port on read.
+
+ build: Fix mescc installation on Debian.
+ * build-aux/pre-inst-env.in: Set bindir.
+ * scripts/mescc.in: Fix configure/prefix issues.
+ * mes/module/mes/boot-01.scm (integer->char): Remove.
+ (newline): Use "\n".
+ (%moduledir): Use string-append.
+ * mes/module/mes/boot-02.scm: Likewise.
+ * mes/module/mes/boot-0.scm: Likewise.
+
+ build: Debian make check and install fixes.
+ * configure (main): Oops, typo: mandir uses --infodir.
+ * build-aux/check.sh.in: Run check-mescc.sh with bash.
+ * build-aux/config.sh (CFLAGS, CPPFLAGS, HEX2FLAGS, LDFLAGS, M1FLAGS):
+ unset.
+ * build-aux/install.sh.in: Use BASHOPTS to check for bash; on Debian
+ dash is used and has $SHELL=/bin/bash. Use ${DESTDIR}@...
+
+2019-05-14 Jan Nieuwenhuizen
+
+ mes: Rename strings.c.
+ * src/string.c: Rename from src/strings.c.
+ * src/mes.c
+ * build-aux/snarf.sh: Update.
+
+2019-05-12 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Use mes_open to avoid open trickery.
+ * include/mes/lib.h (mes_open): Declare.
+ * lib/libmes.c[WITH_GLIBC]: Remove open undefine.
+ (mes_open)[!WITH_GLIBC]: New function.
+ * src/mes.c (open_boot): Use mes_open.
+ * src/posix.c (open_input_file): Likewise.
+ (open_output_file): Likewise.
+
+ mescc: Mes C Library: Remove dead code.
+ * lib/glibc.c: Remove.
+ * lib/abtol.c: Remove.
+
+ mescc: Mes C Library: Explode linux/tcc.c.
+ * lib/linux/close.c: New file.
+ * lib/linux/lseek.c: New file.
+ * lib/linux/rmdir.c: New file.
+ * lib/linux/stat.c: New file.
+ * lib/linux/tcc.c: Include them.
+ (close, lseek, rmdir, stat): Remove.
+
+ mescc: Mes C Library: Explode linux/libc.c.
+ * lib/linux/access.c: New file.
+ * lib/linux/brk.c: New file.
+ * lib/linux/chmod.c: New file.
+ * lib/linux/dup.c: New file.
+ * lib/linux/dup2.c: New file.
+ * lib/linux/execve.c: New file.
+ * lib/linux/fork.c: New file.
+ * lib/linux/fsync.c: New file.
+ * lib/linux/getcwd.c: New file.
+ * lib/linux/ioctl.c: New file.
+ * lib/linux/libc.c: New file.
+ * lib/linux/open.c: New file.
+ * lib/linux/read.c: New file.
+ * lib/linux/unlink.c: New file.
+ * lib/linux/waitpid.c: New file.
+ * lib/linux/libc.c: Include them.
+ (access, brk, chmod, dup, dup2, execve, fork, fsync, getcwd, ioctl,
+ libc, open, read, unlink, waitpid): Remove.
+
+2019-05-11 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Explode linux/gnu.c.
+ * lib/linux/chdir.c: New file.
+ * lib/linux/fcntl.c: New file.
+ * lib/linux/fstat.c: New file.
+ * lib/linux/getdents.c: New file.
+ * lib/linux/getegid.c: New file.
+ * lib/linux/geteuid.c: New file.
+ * lib/linux/getgid.c: New file.
+ * lib/linux/getpid.c: New file.
+ * lib/linux/getppid.c: New file.
+ * lib/linux/getrusage.c: New file.
+ * lib/linux/getuid.c: New file.
+ * lib/linux/kill.c: New file.
+ * lib/linux/link.c: New file.
+ * lib/linux/lstat.c: New file.
+ * lib/linux/mkdir.c: New file.
+ * lib/linux/nanosleep.c: New file.
+ * lib/linux/pipe.c: New file.
+ * lib/linux/rename.c: New file.
+ * lib/linux/setgid.c: New file.
+ * lib/linux/settimer.c: New file.
+ * lib/linux/setuid.c: New file.
+ * lib/linux/signal.c: New file.
+ * lib/linux/sigprogmask.c: New file.
+ * lib/linux/gnu.c: Include them.
+ (chdir, fcntl, fstat, getdents, getegid, geteuid, getgid, getpid,
+ getppid, getrusage, getuid, kill, link, lstat, mkdir, munmap,
+ nanosleep, pipe, rename, setgid, settimer, setuid, signal,
+ sigprogmask): Remove.
+
+2019-05-09 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Explode libc-mini.c.
+ * lib/posix/write.c: New file.
+ * lib/linux/libc-mini.c: Include it.
+ (write): Remove.
+ * lib/tests/mes/30-oputs.c: Remove dead code.
+
+2019-05-07 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Cleanup includes.
+ * include/mes/lib-mini.h: Move from include/libmes-mini.h. Update users.
+ * include/mes/lib.h: Move from include/libmes.h. Update users.
+
+2019-05-05 Jan Nieuwenhuizen
+
+ mescc: Support -nodefaultlibs, -nostartfiles, -nostdlib.
+ * module/mescc.scm (parse-opts): Parse -nodefaultlibs, -nostartfiles, -nostdlib.
+ * module/mescc/mescc.scm (mescc:link): Handle -nodefaultlibs, -nostdlib.
+ (hex2->elf): Handle -nostartfiles, -nostdlib.
+
+2019-05-03 Jan Nieuwenhuizen
+
+ build: Do not install test binaries.
+ * build-aux/install.sh.in: Do not install test binaries.
+
+2019-05-05 Jan Nieuwenhuizen
+
+ mes: m2: Move force-output to Scheme.
+ * mes/module/mes/posix.mes (force-output): New function.
+ * src/posix.c (force_output): Remove.
+ * src/mes.c (mes_builtins): Remove adding of force-output.
+
+2019-03-23 Jan Nieuwenhuizen
+
+ build: M2-Planet first-aid, simplest build script possible.
+ * simple.sh: New file.
+
+2019-03-27 Jan Nieuwenhuizen
+
+ .dir-locals.el: Assert default GNU settings.
+ * .dir-locals.el: Assert default GNU settings.
+
+ Fix typo in stage0 copyright headers.
+ * lib/x86-mes/elf-0footer.hex2: Fix typo.
+ * lib/x86-mes/elf32-0header.hex2: Fix typo.
+ * lib/x86-mes/elf32-body-exit-42.hex2: Fix typo.
+ * lib/x86-mes/elf32-footer-single-main.hex2: Fix typo.
+ * lib/x86-mes/elf32-header.hex2: Fix typo.
+ * lib/x86_64-mes/elf-0footer.hex2: Fix typo.
+ * lib/x86_64-mes/elf64-0header.hex2: Fix typo.
+ * lib/x86_64-mes/elf64-body-exit-42.hex2: Fix typo.
+ * lib/x86_64-mes/elf64-footer-single-main.hex2: Fix typo.
+ * lib/x86_64-mes/elf64-header.hex2: Fix typo.
+
+2019-03-16 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Fix ungetc.
+ * include/sys/resource.h (OPEN_MAX, RLIMIT_NOFILE): New macro.
+ * lib/libc.c: Add memset.c include.
+ * lib/libc+tcc.c: Remove memset.c include.
+ * lib/linux/tcc.c (close):
+ * lib/mes/fdgetc.c (__ungetc_buf): New global.
+ (_ungetc_pos, _ungetc_fd, _ungetc_buf): Remove. Update users.
+ * scaffold/tests/65-read.c: Update.
+
+2019-03-23 Jan Nieuwenhuizen
+
+ build: Replace POSIX, posix_p by WITH_GLIBC, wip_glibc_p.
+ * build-aux/build-mes.sh: Replace POSIX, posix_p by WITH_GLIBC, wip_glibc_p.
+ * build-aux/build.sh.in: Likewise.
+ * build-aux/cc.sh (link): Likewise.
+ * build-aux/config.make.in (with_glibc_p): Likewise.
+ * build-aux/config.sh (libc): Likewise.
+ (CPPFLAGS): Likewise.
+ * build-aux/config.status.in (with_glibc_p): Likewise.
+ * build-aux/test.sh: Likewise.
+ * configure (main): Likewise.
+ * configure.sh (subst): Likewise.
+ (mes_arch): Likewise.
+ * include/libmes.h: Likewise.
+ * include/linux/x86_64/syscall.h: Likewise.
+ * lib/libmes.c: Likewise.
+ * lib/tests/stdio/70-printf-hello.c (main): Likewise.
+ * lib/tests/stdio/70-printf-simple.c (main): Likewise.
+ * lib/tests/stdio/80-sscanf.c (main): Likewise.
+ * lib/tests/stdlib/50-malloc.c: Likewise.
+ * module/mescc/preprocess.scm (c99-input->full-ast): Likewise.
+ * scaffold/cons-mes.c: Likewise.
+ * scaffold/lib/stdlib/malloc.c: Likewise.
+ * scaffold/micro-mes.c: Likewise.
+ * scaffold/tests/61-array.c (getenv): Likewise.
+ * scaffold/tiny-mes.c: Likewise.
+ * src/mes.c: Likewise.
+
+2019-03-03 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Fix compile warnings.
+ * include/libmes.h (dtoab, itoa, ltoa, ntoab, ultoa, utoa): Return
+ char* (WAS: char const*).
+ * lib/*/*c: Update, add missing includes.
+
+2019-03-02 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Fix isatty.
+ * lib/posix/isatty.c (isatty): Test ioctl == 0.
+ * mes/module/mes/boot-0.scm.in: Update: no tty?: read from stdin.
+
+ test: 50-getenv: Test PATH, allow to fail.
+ * lib/tests/posix/50-getenv.c (main): Test PATH.
+ * build-aux/check-mescc.sh (broken): Add 50-getenv.
+
+ mes: Support map and for-each with lists of unequal length.
+ * mes/module/mes/base.mes (map): Support lists of unequal length.
+ * mes/module/mes/scm.mes (for-each): Likewise.
+ * module/mescc/compile.scm (expr->register): Fix compile warning.
+ * tests/scm.test ("map 1,2", "map 2,1", "for-each 1,2", "for-each
+ 2,1": Test it.
+
+ mescc: Mes C Library: Use __ as global internal prefix.
+ * include/libmes-mini.h (g_stdin, g_stdout, g_stderr): Rename to
+ __stdin, __stdout, __stderr. Update users.
+
+2019-02-28 Jan Nieuwenhuizen
+
+ mescc: ctype.h: Add missing prototypes.
+ * include/ctype.h: Add missing prototypes.
+
+ mescc: Mes C Library: Bugfix for tcc-compiled exit assembly.
+ * lib/linux/x86-mes-gcc/mini.c (_exit): Add clobbered registers %eax,
+ %ebx. Fixes always exit 1.
+
+2019-02-25 Jan Nieuwenhuizen
+
+ test: Remove special characters from files.
+ * scaffold/tests/06-call-not-1.c: Rename from 06-call-!1.c.
+ * scaffold/tests/06-not-call-1.c: Rename from 06-!call-1.c.
+ * scaffold/tests/12-if-eq.c: Rename from 12-if-==.c.
+ * scaffold/tests/13-if-neq.c: Rename from 13-if-!=.c.
+ * scaffold/tests/15-if-not-f.c: Rename from 15-if-!f.c.
+ * scaffold/tests/21-char-array-simple.c: Rename from 21-char[]-simple.c.
+ * scaffold/tests/21-char-array.c: Rename from 21-char[].c.
+ * scaffold/tests/22-while-char-array.c: Rename from 22-while-char[].c.
+ * scaffold/tests/41-ternary.c: Rename from 41-?.c.
+ * scaffold/tests/7u-call-ternary.c: Rename from 7u-call-?.c.
+ * scaffold/tests/7u-ternary-expression.c: Rename from 7u-?-expression.c.
+ * build-aux/check-mescc.sh (tests): Update.
+
+ build: Support building with Gash.
+ * build-aux/check-mes.sh: Replace unspported $((..)) by $(expr ...).
+ * build-aux/check-mescc.sh: Likewise.
+ * build-aux/check-tcc.sh: Likewise.
+
+2019-02-18 Jan Nieuwenhuizen
+
+ build: Configure: remove temp files.
+ * configure (gulp-pipe*): Remove .error.
+ (check-header-c): Remove .config.c.
+ (check-compile-c): Likewise.
+ (check-link-c): Likewise.
+
+ build: Remove mini-mes.
+ * scaffold/mini-mes.c: Remove.
+ * build-aux/build-mes.sh: Remove commented build instructions.
+ * .gitignore: Remove pattern.
+
+2019-02-24 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Initialize streams in crt1.
+ * lib/linux/x86-mes-gcc/crt1.c: Initialize streams.
+ * lib/linux/x86-mes/crt1.c: Likewise.
+ * lib/linux/x86_64-mes-gcc/crt1.c: Likewise.
+ * lib/linux/x86_64-mes/crt1.c: Likewise.
+ * src/mes.c (main): Remove initialization of streams.
+
+ mescc: Mes C Library: Populate with function tests from scaffold.
+ * .gitignore: Update.
+ * build-aux/bootstrap.sh.in: Update.
+ * build-aux/build-mes.sh: Update.
+ * build-aux/check-mescc.sh: Update.
+ * lib/tests/assert/50-assert.c: Move from scaffold/tests/50-assert.c.
+ * lib/tests/dirent/90-readdir.c: Move from scaffold/tests/99-readdir.c.
+ * lib/tests/dirent/readdir.dir: Move from scaffold/tests/readdir.dir.
+ * lib/tests/io/90-stat.c: Move from scaffold/tests/92-stat.c.
+ * lib/tests/mes/30-oputs.c: Move from scaffold/tests/31-oputs.c.
+ * lib/tests/mes/50-itoa.c: Move from scaffold/tests/51-itoa.c.
+ * lib/tests/posix/90-unsetenv.c: Move from scaffold/tests/94-unsetenv.c.
+ * lib/tests/setjmp/80-setjmp.c: Move from scaffold/tests/80-setjmp.c.
+ * lib/tests/signal/90-signal.c: Move from scaffold/tests/95-signal.c.
+ * lib/tests/stdio/70-printf-hello.c: Move from scaffold/tests/70-printf-hello.c.
+ * lib/tests/stdio/70-printf-simple.c: Move from scaffold/tests/70-printf-simple.c.
+ * lib/tests/stdio/70-printf.c: Move from scaffold/tests/70-printf.c.
+ * lib/tests/stdio/80-sscanf.c: Move from scaffold/tests/87-sscanf.c.
+ * lib/tests/stdio/90-fopen-append.c: Move from scaffold/tests/98-fopen.c.
+ * lib/tests/stdio/90-fopen.c: Move from scaffold/tests/97-fopen.c.
+ * lib/tests/stdio/90-fread-fwrite.c: Move from scaffold/tests/93-fread-fwrite.c.
+ * lib/tests/stdio/90-fseek.c: Move from scaffold/tests/91-fseek.c.
+ * lib/tests/stdlib/50-getenv.c: Move from lib/tests/stdlib/getenv.c.
+ * lib/tests/stdlib/50-malloc.c: Move from lib/tests/stdlib/malloc.c.
+ * lib/tests/stdlib/70-strtoull.c: Move from scaffold/tests/7j-strtoull.c.
+ * lib/tests/stdlib/80-qsort-dupes.c: Move from scaffold/tests/81-qsort-dupes.c.
+ * lib/tests/stdlib/80-qsort.c: Move from scaffold/tests/81-qsort.c.
+ * lib/tests/stdlib/90-strtol.c: Move from scaffold/tests/96-strto.c.
+ * lib/tests/string/30-strlen.c: Move from scaffold/tests/30-strlen.c.
+ * lib/tests/string/50-strcmp.c: Move from scaffold/tests/51-strcmp.c.
+ * lib/tests/string/50-strcpy.c: Move from scaffold/tests/53-strcpy.c.
+ * lib/tests/string/50-strncmp.c: Move from scaffold/tests/51-strncmp.c.
+ * lib/tests/string/70-strchr.c: Move from scaffold/tests/70-strchr.c.
+ * lib/tests/string/80-strncpy.c: Move from scaffold/tests/86-strncpy.c.
+ * lib/tests/string/80-strrchr.c: Move from scaffold/tests/88-strrchr.c.
+ * lib/tests/string/90-snprintf.c: Move from scaffold/tests/9a-snprintf.c.
+ * lib/tests/string/90-strpbrk.c: Move from scaffold/tests/90-strpbrk.c.
+ * lib/tests/string/90-strspn.c: Move from scaffold/tests/90-strspn.c.
+
+2019-02-24 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Start test suite.
+ TODO: move strict libc tests from scaffold/test/* here.
+
+ * lib/tests/stdlib/getenv.c: New file.
+ * lib/tests/stdlib/malloc.c: Move from scaffold.
+ * build-aux/bootstrap.sh.in: Built them.
+ * build-aux/build-mes.sh: Likewise.
+
+2019-02-24 Jan Nieuwenhuizen
+
+ mes: Remove stray debugging newline output.
+ * mes/module/mes/guile.mes (open-input-file): Move debugging newline
+ into debug clause.
+
+ mescc: Mes C Library: Fix brk return type compare.
+ * lib/stdlib/malloc.c (malloc): Fix brk return type compare.
+
+ core: Rename load_env to read_boot.
+ * src/mes.c (read_boot): Rename from load_env; Update users.
+ (open_boot): Rename from load_boot; Update users.
+
+2019-02-10 Jan Nieuwenhuizen
+
+ core: Initialize g_buf dynamically, add MES_STRING_MAX override.
+ * src/mes.c (g_buf, MAX_STRING): Move from strings.c.
+ (gc_init_cells): Initialize g_buf dynamically.
+ (main): Add environment override MES_MAX_STRING for MAX_STRING.
+ * doc/mes.texi (Environment Variables): Document it.
+
+2019-02-03 Jan Nieuwenhuizen
+
+ mes-snarf: rewrite for development-time snarfing
+ * build-aux/mes-snarf.scm (%gcc?): Remove.
+ (symbol->header): Produce code for src/builtins.h.
+ (symbol->source, symbol->names, function->environment): Remove.
+ (snarf-symbols): Rewrite, snarf from init_symbol (...).
+ (function->source): Produce code to be manually put into
+ (main): Remove --mes option.
+
+2019-02-15 Jan Nieuwenhuizen
+
+ core: Resurrect POSIX build. Thanks, gio!
+ * lib/libmes.c[POSIX]: Define and initialize g_stdin, g_stdout and
+ g_stderr that were moved to crt1 for non-POSIX builds.
+ * src/mes.c[POSIX]: Remove struct-initialisation exceptions.
+
+2019-01-04 Jan Nieuwenhuizen
+
+ core: Remove struct definitions for builtins, drop snarfing.
+ After making a change to the list of builtin functions, run
+
+ cat src/*.i
+
+ and move the into
+
+ src/mes.c:mes_builtins ()
+
+ and, or also after changing the list of fixed symbols in src/mes.c:mes_symbols (), do
+
+ cat src/*.h > src/builtins.h
+
+ * build-aux/build.sh.in: Remove snarfing.
+ * build-aux/bootstrap.sh.in: Likewise.
+ * mes/module/mes/display.mes (display):
+ * mes/module/mes/type-0.mes (cell:type-alist): Remove .
+ (function?, builtin?): Remove.
+ * src/builtins.h: New file.
+ * src/mes.c (TFUNCTION): Remove.
+ (struct function): Remove.
+ (apply_builtin): Rewrite from call.
+ (mes_builtins): Rewrite.
+ (init_builtin, make_builtin_type, make_builtin, builtin_name,
+ builtin_arity, builtin, builtin_p, builtin_printer): New function.
+
+2019-01-04 Jan Nieuwenhuizen
+
+ core: Remove struct definitions for cells, drop snarfing for symbols.
+ * src/mes.c (init_symbol): New function.
+ (mes_symbols): Use it.
+ (scm_nil, ... scm_test): Remove.
+
+2018-12-27 Jan Nieuwenhuizen
+
+ mes: Add take-while.
+ * mes/module/srfi/srfi-1.mes (take-while): New function.
+
+2018-12-26 Jan Nieuwenhuizen
+
+ mescc: Enhance POSIX command-line support, e.g. -DFOO=1.
+ * module/mescc.scm (unclump-single): New function.
+ (main): Use it to support -DFOO=bar, and equivalent.
+
+2018-12-27 Jan Nieuwenhuizen
+
+ build: Support running out-of-tree.
+ * build-aux/pre-inst-env.in (MES_PREFIX): Use absolute name.
+
+ core: Remove string debugging.
+ * src/strings.c (make_bytes, make_string, string_equal_p,
+ symbol_to_string, symbol_to_keyword, make_symbol): Remove string
+ debugging.
+
+ core: Remove --dump, --load.
+ * mes/module/mes/boot-0.scm.in (tty?): Remove --dump, --load.
+ * src/mes.c (bload_env): Remove.
+ * src/reader.c (dump): Remove.
+
+2018-12-16 Jan Nieuwenhuizen
+
+ doc: Post-release update.
+ * doc/announce/ANNOUNCE-0.19: Update.
+
+ Release 0.19.
+ * configure (VERSION): Update to 0.19.
+ (main): Likewise.
+ * configure.sh (VERSION): Likewise.
+ * guix/git/mes.scm (mes, mes.git): Likewise.
+
+2018-10-20 Jan Nieuwenhuizen
+
+ doc: Release update.
+ * AUTHORS: Update.
+ * HACKING: Update.
+ * NEWS: Update.
+ * doc/mes.guix: Update.
+ * scripts/mescc.in: Update.
+ * mes/module/mes/boot-0.scm.in: Update.
+ * doc/announce/ANNOUNCE-0.19: New file.
+
+2018-12-15 Jan Nieuwenhuizen
+
+ mes: assq-ref, assoc-ref: Support alist == #f.
+ * mes/module/mes/scm.mes (assq-ref): Support alist == #f.
+ (assoc-ref): Likewise.
+
+ core: Bump MAX_STRING to 524288
+ * src/strings.c (MAX_STRING): Bump to 524288.
+ (assert_max_string): New function.
+ (list_to_cstring, string_append, read_string): Use it.
+ * src/reader.c (reader_read_string): Use it.
+
+2018-12-14 Jan Nieuwenhuizen
+
+ mescc: Support Bash: Add getppid.
+ * lib/linux/gnu.c (getppid): New function.
+ * include/linux/x86/syscall.h (SYS_getppid): New macro.
+ * include/linux/x86_64/syscall.h (SYS_getppid): New macro.
+
+ mescc: Support bash: Add sigdelset stub.
+ * lib/stub/sigdelset.c (sigdelset): New stub.
+ * lib/libc+gnu.c: Include it.
+
+2018-12-07 Jan Nieuwenhuizen
+
+ mescc: getcwd: Support getcwd (0, 0) GNU extension.
+ * lib/linux/libc.c (_getcwd): Rename from getcwd.
+ (_getcwd): New function. Support getcwd (0, 0) GNU extension.
+
+2018-12-02 Jan Nieuwenhuizen
+
+ mescc: Replace \r in comments.
+ * module/mescc/compile.scm (ast->comment): Replace \r in comments.
+
+2018-11-24 Jan Nieuwenhuizen
+
+ build: Support building with Gash.
+ * build-aux/install.sh: Replace variables with substitution.
+ * build-aux/bootstrap.sh: New file.
+ * configure: Substitute it.
+ * configure.sh: Likewise. Be friendly to Gash.
+ * .gitignore: Ignore it.
+
+2018-11-25 Jan Nieuwenhuizen
+
+ mescc: Run without shell.
+ * mes/module/mescc.mes: New file.
+ * module/mescc.scm: Include it.
+ * scripts/mescc.scm.in: New file.
+ * scripts/mescc.in: Use it; Make pure shell.
+ * configure: Substitute it.
+ * configure.sh: Substitute it.
+ * build-aux/install.sh.in: Install it.
+
+2018-11-15 Jan Nieuwenhuizen
+
+ core: Add string-ref.
+ * src/strings.c (string_ref): New function.
+ * mes/module/mes/scm.mes (string-ref): Remove.
+
+ core: Add string-length.
+ * src/strings.c (string_length): New function.
+ * mes/module/mes/scm.mes (string-length): Remove.
+
+ core: Add string-append.
+ * src/strings.c (string_append): New function.
+ * mes/module/mes/boot-0.scm.in (string-append): Remove.
+ * mes/module/mes/boot-03.scm (string-append): Remove.
+ * scaffold/boot/50-make-string.scm (string-append): Remove.
+ * scaffold/boot/50-string-append.scm (string-append): Remove.
+ * scaffold/boot/50-string-join.scm (string-append): Remove.
+ * scaffold/boot/51-module.scm (string-append): Remove.
+ * scaffold/boot/52-define-module.scm (string-append): Remove.
+ * tests/macro.test (string-append): Remove.
+ * scaffold/boot/17-string-append.scm: Move from 50-string-append.scm.
+
+2018-11-11 Jan Nieuwenhuizen
+
+ core: String as array of bytes.
+ * src/strings.c: New file.
+ * src/mes.c: Use it. Update users.
+
+2018-11-25 Jan Nieuwenhuizen
+
+ mescc: Move mecmp to libc.
+ * lib/libc.c: Include mecmp.c.
+ * lib/libc+tcc.c: Remove mecmp.c include.
+
+2018-11-15 Jan Nieuwenhuizen
+
+ mescc: Move memchr to libc.
+ * lib/libc.c: Include memchr.c.
+
+ test: Use write instead of display.
+ * module/mes/test.scm (seq?, sequal?, seq2?, sless?, sequal2?): Use
+ write for expected, actual.
+
+2018-11-14 Jan Nieuwenhuizen
+
+ core: struct_set_: Oops typo.
+ * src/struct.c (struct_set_x_): Oops, remove indirection.
+
+ mes: Remove copy of make-string.
+ * mes/module/mes/guile.mes (make-string): Remove copy.
+
+ mescc: Compile fixes.
+ * include/libmes-mini.h[WITH_GLIBC]: Do not declare strlen, write, types.
+
+2018-11-11 Jan Nieuwenhuizen
+
+ mes: Oops, %moduledir debug info.
+ * mes/module/mes/boot-0.scm.in: Oops, %moduledir debug info.
+
+ build: configure: Support Mes.
+ * configure: Support Mes.
+
+ mes; Add read-line.
+ * mes/module/mes/guile.mes (read-line): New function.
+
+ mes: dirname: Fix for absolute file names.
+ * mes/module/mes/guile.mes (dirname): Fix absolute files.
+
+ mes: Add file-exists?.
+ * mes/module/mes/guile.mes (file-exists?): New function.
+
+ mes: Add with-error-to-file.
+ * mes/module/mes/guile.mes (with-error-to-file): New function.
+
+ mes: Add string-downcase, string-upcase, string-tokenize.
+ * mes/module/srfi/srfi-13.mes (string-downcase, string-upcase,
+ string-tokenize): New function.
+
+ mes: Add char-downcase, char-upcase.
+ * mes/module/srfi/srfi-14.mes (char-downcase, char-upcase): New
+ function.
+
+ mes: Add char-set:digit, char-set:lower-case, char-set:upper-case.
+ * mes/module/srfi/srfi-14.mes (char-set:digit, char-set:lower-case,
+ char-set:upper-case): New variable.
+
+ mes: Add char-set-adjoin, char-set-complement.
+ * mes/module/srfi/srfi-14.mes (char-set-adjoin, char-set-complement):
+ New function.
+
+ mes: system*: Support redirection.
+ * mes/module/mes/posix.mes (system*): Support redirection.
+
+ core: read_string: Allow for gc.
+ * src/posix.c (read_char): Add optional port parameter.
+ (read_string): Allow for gc.
+
+ core: Add delete_file.
+ * src/posix.c (delete_file): New function.
+
+ core: Add dup, dup2.
+ * src/posix.c (dup_, dup2_): New function.
+
+ core: Add getcwd.
+ * src/posix.c (getcwd_): New function.
+
+ core: Support redirection of stderr.
+ * include/libmes-mini.h (g_stderr): New global.
+ * lib/mes/eputc.c (eputc): Use it.
+ * lib/mes/eputs.c (eputs): Likewise.
+ * lib/mes/oputc.c (oputc): Likewise.
+ * lib/mes/oputs.c (oputs): Likewise.
+ * src/lib.c (display_error_, write_error_): Likewise.
+ * src/posix.c (write_byte): Likewise.
+ * src/mes.c (mes_builtins): Likewise.
+ (main): Iniitalize g_stderr.
+ * src/posix.c (current_error_port, set_current_error_port): New
+ function.
+ * mes/module/mes/boot-0.scm.in (current-output-port,
+ current-error-port): Remove.
+
+ core: Assert g_free in alloc.
+ * src/mes.c (alloc): Assert g_free.
+
+ mescc: unlink: Move to libc.
+ * lib/linux/libc.c (unlink): New function.
+ * lib/linux/tcc.c (unlink): Remove.
+
+ mescc: dup, dup2: Move to libc.
+ * lib/linux/libc.c (dup, dup2): New function.
+ * lib/linux/gnu.c (dup, dup2): Remove.
+
+ mescc: getcwd: Move to libc.
+ * lib/linux/libc.c (getcwd): New function.
+ * lib/linux/tcc.c (getcwd): Remove.
+
+2018-11-10 Jan Nieuwenhuizen
+
+ mescc: Support GNU make with POSIX.
+ * include/linux/x86/syscall.h (SYS_sigprocmask): New macro.
+ * include/linux/x86_64/syscall.h (SYS_rt_sigprocmask): New macro.
+ * include/signal.h (SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK): New macro.
+ (sigprocmask): Declare.
+ * lib/linux/gnu.c (sigprocmask): New function.
+
+2018-11-09 Jan Nieuwenhuizen
+
+ mescc: Support GNU Bash.
+ * include/errno.h (EACCES, ENOSPC, ESPIPE): New macro.
+ * include/linux/x86/syscall.h (SYS_setuid, SYS_geteuid, SYS_getegid,
+ SYS_setgid): New macro.
+ * include/linux/x86_64/syscall.h: Likewise.
+ * include/stdint.h (LLONG_MIN, LLONG_MAX, SIZE_MAX): New macro.
+ * include/sys/stat.h (S_ISUID, S_ISGID, S_IXGRP, S_IXOTH, S_IRGRP,
+ S_IROTH, S_IWGRP, S_IWOTH, S_IRWXG, S_IRWXO): New macro.
+ * include/termio.h: New file.
+ * include/unistd.h (_POSIX_VERSION): New macro.
+ * lib/linux/gnu.c (geteuid, getegid, setuid, setgid): New function.
+ * lib/string/memchr.c: New file.
+ * lib/stub/getpwuid.c: New file.
+ * lib/stub/rand.c: New file.
+ * lib/stub/ttyname.c: New file.
+ * include/string.h (memchr): Declare.
+ * include/unistd.h (geteuid, getegid, setuid, setgid): Declare.
+
+2018-11-06 Jan Nieuwenhuizen
+
+ build: Simplify: cater for one compiler at a time.
+ * build-aux/build-cc.sh: Remove.
+ * build-aux/build-cc32.sh: Remove.
+ * build-aux/build-cc64.sh: Remove.
+ * build-aux/build-x86_64-mes.sh: Remove.
+ * build-aux/cc-mes.sh: Remove.
+ * build-aux/cc-x86_64-mes.sh: Remove.
+ * build-aux/cc32-mes.sh: Remove.
+ * build-aux/cc64-mes.sh: Remove.
+ * build-aux/test64.sh: Remove.
+ * build-aux/bootstrap-mes.sh: New file.
+ * build-aux/config.make.in: New file.
+ * build-aux/config.status.in: New file.
+ * build-aux/test-cc.sh: New file.
+ * .gitignore: Update.
+ * build-aux/GNUmakefile.in: Update.
+ * build-aux/build-guile.sh: Update.
+ * build-aux/build-mes.sh: Update.
+ * build-aux/build.sh.in: Update.
+ * build-aux/cc.sh: Update.
+ * build-aux/check-boot.sh: Update.
+ * build-aux/check-mes.sh: Update.
+ * build-aux/check-mescc.sh: Update.
+ * build-aux/check-tcc.sh: Update.
+ * build-aux/check.sh.in: Update.
+ * build-aux/config.sh: Update.
+ * build-aux/export.make: Update.
+ * build-aux/install.sh.in: Update.
+ * build-aux/pre-inst-env.in: Update.
+ * build-aux/test.sh: Update.
+ * build-aux/uninstall.sh.in: Update.
+ * configure: Update.
+ * configure.sh: Update.
+ * module/mescc/i386/as.scm: Update.
+ * module/mescc/preprocess.scm: Update.
+ * module/mescc/x86_64/as.scm: Update.
+ * scripts/mescc.in: Update.
+ * tests/psyntax.test: Update.
+
+2018-11-09 Jan Nieuwenhuizen
+
+ mescc: Add missing define.
+ * lib/x86-mes/x86.M1: Add missing define.
+
+2018-11-08 Jan Nieuwenhuizen
+
+ mescc: Exit if library cannot be found.
+ * module/mescc/mescc.scm (arch-find): Exit upon failure.
+
+ mescc: Accept -O, --std, -x.
+ * scripts/mescc.in (parse-opts): Accept -O, --std, -x.
+
+ mescc: Support -dumpmachine.
+ * scripts/mescc.in (parse-opts): Support -dumpmachine.
+
+2018-10-22 Jan Nieuwenhuizen
+
+ mescc: vsnprintf: Compliant implementation.
+ * lib/stdio/vsnprintf.c (vsnprintf): New, complient implementation,
+ replacing vsnprint.
+ * lib/stdio/vsprintf.c (vsnprint): Forward to vsnprint.
+ * lib/stdio/snprintf.c (snprintf): Likewise.
+ * scaffold/tests/9a-snprintf.c: Test it.
+ * build-aux/check-mescc.sh (tests): Run it.
+
+2018-10-21 Jan Nieuwenhuizen
+
+ test: Add performance test.
+ * module/mes/test.scm (pass-if-timeout): New macro.
+ * tests/perform.test: New test.
+ * build-aux/check-mes.sh (tests): Run it.
+
+ mes: Add ceil, floor, round, inexact->exact.
+ * mes/module/mes/scm.mes (ceil, floor, round, inexact->exact,
+ exact->inexact): New function.
+
+ mes: read-string: Take optional port argument.
+ * src/posix.c (read_string): Take optional port argument.
+ * mes/module/mes/guile.mes (read-string): Remove.
+
+ core: eval_apply: Order gotos according to frequency.
+ * src/mes.c (eval_apply): Order gotos according to frequency.
+
+ Revert "core: eval_apply profile."
+ This reverts commit d61e6be0b18459a8e3c262eab448b428dc81937a.
+
+ core: eval_apply profile.
+ * src/mes.c: Poor man's eval_apply profile.
+
+2018-10-20 Jan Nieuwenhuizen
+
+ core: Fix displaying of closure.
+ * src/lib.c (display_helper): Fix displaying of closure.
+
+ mes: Print backtrace upon exception.
+ * mes/module/mes/catch.mes (display-backtrace,
+ frame-function): New function.
+ (%eh): Use them.
+
+ core: Set procedure in stack frame.
+ * src/mes.c (eval_apply): Set procedure in stack frame.
+
+ core: Implement stack and frame.
+ * src/lib.c (frame_printer make_frame_type, make_frame,
+ make_stack_type, make_stack, stack_length, stack_ref): New function.
+
+ core: Support time functions.
+ * lib/linux/clock_gettime.c: New file, move from gnu.c.
+ * lib/linux/gettimeofday.c: New file, move from tcc.c.
+ * lib/linux/time.c: New file, move from tcc.c.
+ * lib/linux/libc.c: Include them.
+ * lib/linux/gnu.c (clock_gettime): Remove.
+ * lib/linux/tcc.c (time, gettimeofday): Remove.
+ * include/time.h (CLOCK_PROCESS_CPUTIME_ID): New define.
+ * src/posix.c (init_time, current_time, gettimeofday_,
+ seconds_and_nanoseconds_to_long, get_internal_run_time): New function.
+ * src/mes.c (scm_symbol_internal_time_units_per_second): New symbol.
+ (main): Call init_time.
+
+2018-10-18 Jan Nieuwenhuizen
+
+ core: Use hash table for symbols.
+ * src/mes.c (mes_symbols): Use hash table for symbols. Update users.
+
+2018-10-19 Jan Nieuwenhuizen
+
+ core: Use assert before failure exit.
+ * src/mes.c (error): Use assert before failure exit. Helps debugging.
+
+2018-10-18 Jan Nieuwenhuizen
+
+ core: Add hashq_get_handle, hash, hash_ref, hash_set_x.
+ * src/mes.c (scm_symbol_hashq_table, scm_symbol_record_type,
+ scm_symbol_module, scm_symbol_buckets, scm_symbol_size): New symbols.
+ Update users.
+ * src/hash.c (hash_list_of_char): Rename from hashq_. Respect size,
+ update callers.
+ (hashq_, hash_ hash, hashq_get_handle, hash_ref, hash_set_x_,
+ hash_set_x): New function.
+ (hashq_ref): Do not return handle. Update callers.
+
+ mes: Move pair? to core.
+ * src/lib.c (pair_p): New function. Gains 8% performance on MesCC.
+
+2018-10-19 Jan Nieuwenhuizen
+
+ mes: Move assoc to core.
+ * mes/mes.c (assoc_string, assoc): New function.
+ * mes/module/mes/scm.mes (assoc): Remove. Gains 12% performance for
+ MesCC.
+
+2018-10-20 Jan Nieuwenhuizen
+
+ Revert "core: Add gc-debug for stack array."
+ This reverts commit f35084d1dbea889d107824e7596da1701c6b90ad.
+
+2018-10-19 Jan Nieuwenhuizen
+
+ core: Add gc-debug for stack array.
+ * src/gc.c (gc_debug): New function.
+
+ scaffold: Resurrect mini-mes.
+ * src/mini-mes.c: Resurrect.
+
+2017-12-14 Jan Nieuwenhuizen
+
+ core: Use array-based stack.
+ * src/mes.c (STACK_SIZE)[MES_ARRAY_STACK]: New variable.
+ (g_stack_array): New variable.
+ (g_stack): Change type to SCM*.
+ (gc_push_frame)[MES_ARRAY_STACK]: Use g_stack_array, g_stack.
+ (gc_peek_frame): Likewise.
+ (gc_pop_frame): Likewise.
+ * src/gc.c (gc_check): Likewise.
+ (gc): Likewise.
+
+2018-10-17 Jan Nieuwenhuizen
+
+ mes: Resurrect Guile-1.8 support.
+ * module/mes/mes-0.scm: Resurrect Guile-1.8 support.
+
+2018-10-16 Jan Nieuwenhuizen
+
+ core: expand_variable: Remove weird exceptions: begin, if.
+ * src/mes.c (expand_variable_): Remove weird exceptions: begin, if.
+
+2018-10-15 Jan Nieuwenhuizen
+
+ mes: Switch to srfi-9 based on structs.
+ * mes/module/srfi/srfi-9.mes: Swap symlink to srfi-9-struct.mes.
+ * mes/module/srfi/srfi-9/gnu.mes: Swap symlink to gnu-struct.mes.
+ * src/module.c (make_module_type): Update to match srfi-9-struct
+ records. Update users.
+ * src/hash.c (make_hashq_type): Likewise.
+
+ mes: srfi-9: Add implementation based on struct.
+ * mes/module/srfi/srfi-9-struct.mes: New file.
+ * mes/module/srfi/srfi-9-vector.mes: Rename from srfi-9.mes
+ * mes/module/srfi/srfi-9.mes: Symlink to srfi-9-vector.mes.
+ * mes/module/srfi/srfi-9/gnu-struct.mes: Add srfi-9-struct
+ implementation.
+ * mes/module/srfi/srfi-9/gnu-vector.mes: Rename from gnu.mes.
+ * mes/module/srfi/srfi-9/gnu.mes: Symlink to gnu-vector.mes.
+
+ core: hashq-table: Refactor to be a record-like struct.
+ * src/hash.c (hash_table_printer): New function.
+ (make_hashq_type): New function.
+ * src/module.c (module_printer): Use it.
+ (make_module_type): New function.
+ (make_initial_module): Use them.
+
+ mescc: Mes C Library: oputs: New function.
+ * lib/mes/oputc.c: New file.
+ * lib/libmes.c: Include it.
+ * include/libmes.h: Declare it.
+
+ core: Use hashq-table for macros.
+ * src/mes.c (lookup_macro_): Remove.
+ (macro_ref, get_macro, macro_set_x): New function. Update callers.
+
+ core: Add hashq-table type.
+ src/hash.c: New file.
+ src/module.c (char_hash, module_hash): Remove.
+ * src/module.c (make_initial_module): Use hash primitives.
+ (module_define_x): Likewise.
+ (module_variable): Likewise.
+ * build-aux/snarf.sh: Snarf it.
+ * src/mes.c: Include it.
+
+ core: Add boot-module.
+ * src/mes.c (scm_symbol_boot_module): New symbol.
+ (eval_apply): Handle it.
+ (mes_symbols): Initialize it.
+
+2018-10-14 Jan Nieuwenhuizen
+
+ core: Add module-define!
+ * src/module.c (module_define_x, module_printer): New function.
+ (make_initial_module): Use them.
+ * tests/srfi-0.test: Test it.
+ * src/mes.c (display_m0): Remove. Update callers.
+ * mes/module/mes/fluids.mes (make-fluid): Rewrite.
+ * tests/macro.test: Test it.
+ * mes/module/mes/boot-0.scm.in (module-define!): Remove.
+ * mes/module/mes/boot-02.scm: Likewise.
+ * module/mes/misc.scm (pk, warn): New function.
+ * build-aux/check-mes.sh (tests): Run tests.
+
+ core: Add module indirection for variable lookup.
+ * src/module.c (module_ref, module_variable): New function.
+ * src/mes.c: Thoughout: Use them.
+ (assq_ref_env): Remove.
+ * mes/module/mes/boot-0.scm.in (defined?): Use module-variable.
+ * mes/module/mes/boot-00.scm (defined?): Likewise.
+ * mes/module/mes/boot-01.scm (defined?): Likewise.
+ * mes/module/mes/boot-02.scm (defined?): Likewise.
+ * scaffold/boot/53-closure-display.scm: Likewise.
+
+ core: Add module type.
+ * src/module.c: New file.
+ * build-aux/snarf.sh: Snarf it.
+ * src/mes.c: Include it.
+
+ core: Add cstring_to_symbol.
+ * src/mes.c (make_symbol): Rename from lookup_symbol_. Update
+ callers.
+ (cstring_to_symbol): New function.
+ * src/reader.c (reader_read_identifier_or_number): Use it.
+
+2018-10-13 Jan Nieuwenhuizen
+
+ core: Add struct type.
+ * src/struct.c: New file.
+ * build-aux/snarf.sh: Snarf it.
+ * src/mes.c: Include it.
+
+2018-10-15 Jan Nieuwenhuizen
+
+ build: factor-out snarfing.
+ * build-aux/snarf.sh: New file.
+ * build-aux/build-cc.sh: Use it.
+ * build-aux/build-cc32.sh: Likewise.
+ * build-aux/build-cc64.sh: Likewise.
+ * build-aux/build-mes.sh: Likewise.
+ * build-aux/build-x86_64-mes.sh: Likewise.
+ * build-aux/snarf.sh: Likewise.
+
+ core: core:cdr: Support port type.
+ * src/mes.c (cdr_): Support port type.
+ * mes/module/mes/display.mes (display): Add space between fields.
+
+ mes: with-fluids: Fix reset.
+ * mes/module/mes/fluids.mes (with-fluids): Fix reset.
+ * tests/fluids.test (report): Remove Mes failure expectation.
+
+2018-10-19 Jan Nieuwenhuizen
+
+ mescc: Recognize U integer suffix.
+ * module/mescc/compile.scm (cstring->int): Recognize U integer
+ suffix. Thanks, Peter de Wachter!
+
+2018-10-16 Peter De Wachter
+
+ mescc: Add INTn_MIN/MAX defines to stdint.h.
+ * include/stdint.h: Add INTn_MIN/MAX defines. Move integere size
+ defines from limits.h
+ * include/limits.h: Include it.
+
+2018-10-16 Peter De Wachter
+
+ mescc: Allow superfluous parentheses in function declarations.
+ E.g.: int (f)();
+ This is obscure but valid C. It occurs in the csmith headers (thanks
+ to macro shenanigans).
+
+ * module/mescc/compile.scm (fctn-defn:get-name,
+ fctn-defn:get-statement): Allow superfluous parentheses in function declarations.
+
+2018-10-16 Peter De Wachter
+
+ mescc: Implement unary plus operator.
+ * module/mescc/compile.scm (ast->type, expr->register,
+ try-expr->number):): Implement unary plus operator.
+
+ mescc: Add missing assembly defines.
+ * lib/x86-mes/x86.M1: Add missing assembly defines.
+ * lib/x86_64-mes/x86_64.M1: Likewise.
+
+ mescc: Delete duplicate assembly defines.
+ * lib/x86-mes/x86.M1: Delete duplicate assembly defines.
+ * lib/x86_64-mes/x86_64.M1: Likewise.
+
+2018-10-16 Peter De Wachter
+
+ mescc: Exit with non-zero exit code when subprocess fails.
+ system* returns the result of waitpid. So, suppose that a subprocess
+ fails with exit code 1. Then the waitpid return value will be 256.
+ And exit(256) is equivalent to exit(0).
+
+ Modified-by: Jan Nieuwenhuizen
+
+ * mes/module/mes/posix.mes (status:exit-val): New function.
+ * module/mescc/mescc.scm (assert-system*): Use it.
+
+2018-10-12 Jan Nieuwenhuizen
+
+ mescc: Oops typo.
+ * module/mescc/M1.scm (hex2:immediate8): Typo.
+
+2018-12-13 Jan Nieuwenhuizen
+
+ core: Support \xNN in reader. Fixes tcc-boot running on Mes.
+ * src/reader.c (reader_read_string): Support \xNN. Fixes Guix
+ bootstrap chain; i.e., compilation of gcc-2.95.3 using tcc-boot.
+ * tests/base.test ("reader: \\x08"): Test it.
+ * scaffold/tests/17-compare-char.c: Likewise, for mescc.
+ * build-aux/check-mescc.sh (tests): Run it.
+
+2018-11-18 Jan Nieuwenhuizen
+
+ build: configure: Make dot optional.
+ * configure: Make dot optional.
+
+2018-10-11 Jan Nieuwenhuizen
+
+ build: Oops, remove stray lib/linux/x86_64-mes/crt1.
+ * lib/linux/x86_64-mes/crt1: Remove.
+
+2018-10-10 Jan Nieuwenhuizen
+
+ build: x86_64 bootstrap build fixes and workaround.
+ * configure: Substitute @arch@ (WAS: ARCH). Update users.
+ * configure.sh: Substitute @arch@.
+ * build-aux/build-mes.sh: Use $GUILE for x86_64 build.
+ * build-aux/install.sh.in: Install mes.S, mes.x86_64-mes-S too.
+ Prune *.E, *.out.
+
+2018-10-08 Jan Nieuwenhuizen
+
+ doc: Release update.
+
+ mescc: Oops, delete wrong line of assembly.
+ * lib/x86-mes/x86.M1 (movzbl_%bx,%ebx): Delete wrong line. Thanks, pdewacht!
+
+2018-10-07 Jan Nieuwenhuizen
+
+ admin: Release update.
+ * doc/announce/ANNOUNCE-0.18: New file.
+ * guix/git/mes.scm (mes): Update hash.
+
+2018-10-04 Jan Nieuwenhuizen
+
+ Release 0.18.
+ * configure (VERSION): Update to 0.18.
+ (main): Likewise.
+ * configure.sh (VERSION): Likewise.
+ * guix/git/mes.scm (mes, mes.git): Likewise.
+ * guix/mescc-tools-boot.patch: New file.
+
+2018-09-05 Jan Nieuwenhuizen
+
+ doc: Release update.
+ * BOOTSTRAP: Update.
+ * HACKING: Update.
+ * NEWS: Update.
+ * README: Update.
+ * doc/mes.texi (Submitting Patches): Fix misquoting, misattribution.
+
+2018-10-07 Jan Nieuwenhuizen
+
+ mescc: Another attempt at divide.
+ * module/mescc/i386/as.scm (i386:r0/r1): Never be signed. Use div for unsigned.
+ (i386:r0%r1): Likewise.
+ * module/mescc/x86_64/as.scm (x86_64:r0/r1): Likewise.
+ (x86_64:r0%r1): Likewise.
+ * lib/x86-mes/x86.M1: Add div.
+ * lib/x86_64-mes/x86_64.M1: Likewise.
+
+ tests: Expect srfi-13 failure, MesCC more resembles Gcc.
+ * tests/srfi-13.test (report): Expect INT-MIN failure for x86.
+
+2018-10-06 Jan Nieuwenhuizen
+
+ core: reader: Support 64 bit.
+ * src/reader.c (reader_read_identifier_or_number): Support 64 bit.
+ (reader_read_binary): Likewise.
+ (reader_read_octal): Likewise.
+ (reader_read_hex): Likewise.
+
+ mescc: Mes C Library: Fix execve on x86_64.
+ * include/linux/x86_64/syscall.h (SYS_execve): Typo. Fixes execve on
+ x86_64.
+
+ build: Support make seed for x86_64.
+ * build-aux/GNUmakefile.in (seed): Support make seed for x86_64.
+ * build-aux/build-mes.sh[SEED]: Also build src/mes.S.
+ * build-aux/build-x86_64-mes.sh[SEED]: Also build src/mes.x86_64-mes.S.
+
+ mes: Support fold-right 3.
+ * mes/module/srfi/srfi-1.mes (fold-right): Support fold-right 3.
+ * tests/srfi-1.test ("fold-right-3"): Test it.
+
+ mescc: Nyacc comment escapes.
+ * module/mescc/compile.scm (ast->comment): Nyacc comment escapes.
+
+ mescc: Fix clobbering of struct by value assign.
+ * module/mescc/x86_64/as.scm (long-r0->r1-mem): New instruction.
+ * module/mescc/i386/as.scm: Likewise.
+ * lib/x86_64-mes/x86_64.M1: Support it.
+ * module/mescc/compile.scm (r0->r1-mem*n-): Fix clobbering.
+
+ core: Add vector test.
+ * scaffold/boot/11-vector.scm: New test.
+ * build-aux/check-boot.sh: Run it.
+
+ mescc: Fix obnoxious assignment ERROR message.
+ * module/mescc/compile.scm (expression->register): Fix assignment
+ ERROR message.
+
+ core: Avoid 64bit zero divide.
+ * src/math.c (divide): Avoid (64bit) 0 divide.
+ (modulo): Likewise.
+
+ mescc: Support negative divide.
+ * module/mescc/i386/as.scm (i386:r0/r1, i386:r0%r1): Support
+ negative divide.
+ * module/mescc/x86_64/as.scm (x86_64:r0/r1, x86_64:r0%r1): Likewise.
+ * lib/x86-mes/x86.M1: Likewise.
+ * lib/x86_64-mes/x86_64.M1: Likewise.
+ * scaffold/tests/a0-math-divide-signed-negative.c: Test it.
+ * build-aux/check-mescc.sh (tests): Run it.
+
+ mescc: Support --align, off by default.
+ * scripts/mescc.in (parse-opts): Add --align.
+ * module/mescc/mescc.scm (mescc:compile): Support --align, off by
+ default.
+ * module/mescc/M1.scm (infos->M1): Add #:align parameter.
+ (M1:merge-infos): Likewise. Keep types.
+ (info->M1): Likewise. Make alignment switchable.
+ * module/mescc/compile.scm (r->ident): Do not clobber.
+ (ident-add): Likewise.
+ (clean-info): Keep types.
+ * module/mescc/i386/as.scm (i386:r->byte-label): New instruction.
+ * lib/x86-mes/x86.M1: Add instructions.
+ * lib/x86_64-mes/x86_64.M1: Add instructions.
+ * module/mescc/x86_64/as.scm (x86_64:r->byte-label,
+ x86_64:r->word-label, x86_64:r->long-label): New instruction.
+
+ Revert "mescc: Make globals at least reg-size."
+ This reverts commit 30544316c35ed4a2472f2029beb27e007d913792.
+
+ mescc: Make globals at least reg-size.
+ * module/mescc/compile.scm (global->info): Make globals at least reg-size.
+
+ mescc: Support 64-bit immediates.
+ * module/mescc/M1.scm (hex2:address8, hex2:immediate8): New function.
+ (info->M1): Support 64-bit.
+ * module/mescc/compile.scm (convert-r0): FIXME!
+ * module/mescc/x86_64/as.scm (x86_64:value->r, x86_64:r->local,
+ x86_64:label->arg, x86_64:label->r, x86_64:r+value,
+ x86_64:r-cmp-value, x86_64:r-long-mem-add, x86_64:r-and): Support
+ 64-bit immediates.
+ * lib/x86_64-mes/x86_64.M1: Likewise.
+ * scaffold/tests/17-compare-unsigned-char-le.c: Test it.
+ * scaffold/tests/17-compare-unsigned-short-le.c: Test it.
+ * build-aux/check-mescc.sh (tests): Run them.
+
+ core: Use proper name for %compiler.
+ * src/mes.c (mes_symbols, bload_env): : Use proper name for %compiler.
+
+ core: Resurrect MES_MINI for non-POSIX.
+ src/mes.c[MES_MINI,!POSIX]: Resurrect.
+
+ mescc: Mes C Library: Add ultoa.
+ * lib/mes/ultoa.c: New file.
+ * lib/libmes.c: Include it.
+ * include/libmes.h: Declare ultoa.
+
+ mescc: Mes C Library: Add ltoa.
+ * lib/mes/ltoa.c: New file.
+ * lib/libmes.c: Include it.
+ * include/libmes.h: Declare ltoa.
+
+ mescc: Fix truncation of short.
+ * module/mescc/compile.scm (convert-r0): Typo. Fixes truncation of
+ short. Thanks, pdewacht!
+ * scaffold/tests/a0-call-trunc-char.c: New file.
+ * scaffold/tests/a0-call-trunc-short.c: New file.
+ * build-aux/check-mescc.sh: Add them.
+
+ build: Split-off x86_mes-gcc build.
+ * build-aux/build-cc64.sh: New file.
+ * build-aux/build.sh.in[CC64]: Invoke it.
+ * build-aux/build-cc.sh: Remove x86_64-mes-gcc build.
+ * build-aux/GNUmakefile.in (x86_64-mes-gcc): New target.
+ * build-aux/build-x86_64-mes.sh: Build all scafffold files.
+
+2018-10-05 Jan Nieuwenhuizen
+
+ build: Oops, use MES_LIBS.
+ * build-aux/build-x86_64-mes.sh: Use MES_LIBS instead of the unused
+ MES64_LIBS. Fixes build. Thanks, pdewacht!
+
+ build: remove bashism.
+ * build-aux/trace.sh (trace): Remove bashism. Thanks pdewacht!
+
+2018-10-04 Jan Nieuwenhuizen
+
+ core: Support x86_64.
+ * src/lib.c: Support x86_64.
+ * src/math.c: Likewise.
+ * src/mes.c: Likewise.
+ * src/reader.c: Likewise.
+ * src/vector.c Likewise.
+
+ build: Oops, set VERSION.
+ * build-aux/install.sh.in (VERSION): New substituted variable.
+
+2018-09-30 Jan Nieuwenhuizen
+
+ build: Resurrect make seed.
+ * build-aux/GNUmakefile.in (seed): Resurrect.
+ * build-aux/build-x86_64-mes.sh: Build from seed.
+
+2018-08-15 Jan Nieuwenhuizen
+
+ mescc: x86_64 support: Refactor to abstracted assembly, add x86_64.
+ * module/mescc/as.scm: Support abstracted assembly.
+ * module/mescc/i386/as.scm: Rewrite.
+ * module/mescc/x86_64/as.scm: Implement.
+ * module/mescc/compile.scm: Refactor to abstracted assembly.
+ * module/mescc/M1.scm: Update for partial 64 bit support.
+ * module/mescc/bytevectors.scm (bytevector-u64-native-set!): New
+ procedure.
+ * module/mescc/i386/info.scm (i386:type-alist): Use 4 byte type length
+ also for faking double, long long, long double.
+ * module/mescc/info.scm:modified:
+ * module/mescc/x86_64/info.scm (x86_64:registers): New variable.
+ * lib/x86-mes/x86.M1: Update for new register scheme.
+ * lib/x86_64-mes/x86_64.M1: Implement.
+ * lib/x86-mes/setjmp.c: Implement.
+ * lib/x86_64-mes-gcc/setjmp.c: Implement.
+ * build-aux/build-cc.sh: Update for x86_64.
+ * build-aux/build-cc32.sh: Likewise.
+ * build-aux/build-mes.sh: Likewise.
+ * build-aux/build-x86_64-mes.sh: Likewise.
+ * build-aux/check-mescc.sh: Likewise.
+ * build-aux/test64.sh: Likewise.
+ * include/libmes.h: Likewise.
+ * include/setjmp.h: Likewise.
+ * include/signal.h: Likewise.
+ * include/stdarg.h: Likewise.
+ * include/sys/stat.h: Likewise.
+ * include/sys/types.h: Likewise.
+ * include/sys/wait.h: Likewise.
+ * include/unistd.h: Likewise.
+ * lib/libc+gnu.c: Likewise.
+ * lib/libc+tcc.c: Likewise.
+ * lib/linux/gnu.c: Likewise.
+ * lib/linux/libc-mini.c: Likewise.
+ * lib/linux/libc.c: Likewise.
+ * lib/linux/tcc.c: Likewise.
+ * lib/linux/x86_64-mes-gcc/mes.c: Likewise.
+ * lib/linux/x86_64-mes/crt1.c: Likewise.
+ * lib/mes/abtol.c: Likewise.
+ * lib/posix/mktemp.c: Likewise.
+ * lib/posix/wait.c: Likewise.
+ * lib/stdio/fopen.c: Likewise.
+ * lib/stdio/fputc.c: Likewise.
+ * lib/stdio/fseek.c: Likewise.
+ * lib/stdio/printf.c: Likewise.
+ * lib/stdio/sprintf.c: Likewise.
+ * lib/stdio/vfprintf.c: Likewise.
+ * lib/stdio/vsprintf.c: Likewise.
+ * lib/stdio/vsscanf.c: Likewise.
+ * lib/stdlib/qsort.c: Likewise.
+ * lib/x86-mes-gcc/setjmp.c: Likewise.
+ * scaffold/tests/11-if-1.c: Likewise.
+ * scaffold/tests/15-if-!f.c: Likewise.
+ * scaffold/tests/16-if-t.c: Likewise.
+ * scaffold/tests/21-char[].c: Likewise.
+ * scaffold/tests/23-pointer.c: Likewise.
+ * scaffold/tests/32-compare.c: Likewise.
+ * scaffold/tests/33-and-or.c: Likewise.
+ * scaffold/tests/34-pre-post.c: Likewise.
+ * scaffold/tests/35-compare-char.c: Likewise.
+ * scaffold/tests/36-compare-arithmetic.c: Likewise.
+ * scaffold/tests/37-compare-assign.c: Likewise.
+ * scaffold/tests/38-compare-call.c: Likewise.
+ * scaffold/tests/40-if-else.c: Likewise.
+ * scaffold/tests/41-?.c: Likewise.
+ * scaffold/tests/42-goto-label.c: Likewise.
+ * scaffold/tests/43-for-do-while.c: Likewise.
+ * scaffold/tests/44-switch.c: Likewise.
+ * scaffold/tests/45-void-call.c: Likewise.
+ * scaffold/tests/46-function-static.c: Likewise.
+ * scaffold/tests/51-strcmp.c: Likewise.
+ * scaffold/tests/51-strncmp.c: Likewise.
+ * scaffold/tests/53-strcpy.c: Likewise.
+ * scaffold/tests/54-argv.c: Likewise.
+ * scaffold/tests/60-math.c: Likewise.
+ * scaffold/tests/61-array.c: Likewise.
+ * scaffold/tests/63-struct-cell.c: Likewise.
+ * scaffold/tests/64-make-cell.c: Likewise.
+ * scaffold/tests/65-read.c: Likewise.
+ * scaffold/tests/70-printf.c: Likewise.
+ * scaffold/tests/71-struct-array.c: Likewise.
+ * scaffold/tests/72-typedef-struct-def.c: Likewise.
+ * scaffold/tests/74-multi-line-string.c: Likewise.
+ * scaffold/tests/76-pointer-arithmetic.c: Likewise.
+ * scaffold/tests/79-int-array.c: Likewise.
+ * scaffold/tests/7a-struct-char-array.c: Likewise.
+ * scaffold/tests/7b-struct-int-array.c: Likewise.
+ * scaffold/tests/7i-struct-struct.c: Likewise.
+ * scaffold/tests/7k-for-each-elem.c: Likewise.
+ * scaffold/tests/7l-struct-any-size-array.c: Likewise.
+ * scaffold/tests/7o-struct-pre-post.c: Likewise.
+ * scaffold/tests/7q-bit-field.c: Likewise.
+ * scaffold/tests/7s-struct-short.c: Likewise.
+ * scaffold/tests/80-setjmp.c: Likewise.
+ * scaffold/tests/81-qsort.c: Likewise.
+ * scaffold/tests/85-sizeof.c: Likewise.
+ * scaffold/tests/87-sscanf.c: Likewise.
+ * scaffold/tests/90-strpbrk.c: Likewise.
+ * scaffold/tests/91-fseek.c: Likewise.
+ * scaffold/tests/95-signal.c: Likewise.
+ * scaffold/tests/97-fopen.c: Likewise.
+ * scaffold/tests/99-readdir.c: Likewise.
+ * scaffold/tests/t.c: Likewise.
+ * lib/linux/x86_64-mes/mes.c: New file.
+ * lib/linux/x86_64-mes/mini.c: New file.
+ * lib/x86_64-mes/setjmp.c: New file.
+ * scaffold/tests/06-!call-1.c: New file.
+ * scaffold/tests/06-call-2.c: New file.
+ * scaffold/tests/06-call-variable.c: New file.
+ * scaffold/tests/08-assign-global.c: New file.
+ * scaffold/tests/08-assign-negative.c: New file.
+ * scaffold/tests/17-compare-and-or.c: New file.
+ * scaffold/tests/17-compare-and.c: New file.
+ * scaffold/tests/17-compare-ge.c: New file.
+ * scaffold/tests/17-compare-gt.c: New file.
+ * scaffold/tests/17-compare-le.c: New file.
+ * scaffold/tests/17-compare-lt.c: New file.
+ * scaffold/tests/17-compare-or.c: New file.
+ * scaffold/tests/17-compare-unsigned-ge.c: New file.
+ * scaffold/tests/17-compare-unsigned-gt.c: New file.
+ * scaffold/tests/17-compare-unsigned-le.c: New file.
+ * scaffold/tests/17-compare-unsigned-lt.c: New file.
+ * scaffold/tests/21-char[]-simple.c: New file.
+ * scaffold/tests/23-global-pointer-init-null.c: New file.
+ * scaffold/tests/23-global-pointer-init.c: New file.
+ * scaffold/tests/23-global-pointer-pointer-ref.c: New file.
+ * scaffold/tests/23-global-pointer-ref.c: New file.
+ * scaffold/tests/23-pointer-sub.c: New file.
+ * scaffold/tests/31-oputs.c: New file.
+ * scaffold/tests/32-call-wrap.c: New file.
+ * scaffold/tests/38-compare-call-2.c: New file.
+ * scaffold/tests/38-compare-call-3.c: New file.
+ * scaffold/tests/51-pointer-sub.c: New file.
+ * scaffold/tests/54-argc.c: New file.
+ * scaffold/tests/63-struct-array-assign.c: New file.
+ * scaffold/tests/63-struct-array-compare.c: New file.
+ * scaffold/tests/63-struct-array.c: New file.
+ * scaffold/tests/63-struct-assign.c: New file.
+ * scaffold/tests/63-struct-function.c: New file.
+ * scaffold/tests/63-struct-local.c: New file.
+ * scaffold/tests/63-struct-pointer.c: New file.
+ * scaffold/tests/63-struct.c: New file.
+ * scaffold/tests/70-printf-hello.c: New file.
+ * scaffold/tests/70-printf-simple.c: New file.
+ * scaffold/tests/70-stdarg.c: New file.
+ * scaffold/tests/70-strchr.c: New file.
+ * scaffold/tests/73-union-hello.c: New file.
+ * scaffold/tests/76-pointer-arithmetic-pp.c: New file.
+ * scaffold/tests/79-int-array-simple.c: New file.
+ * scaffold/tests/7b-struct-int-array-hello.c: New file.
+ * scaffold/tests/7b-struct-int-array-pointer.c: New file.
+ * scaffold/tests/7i-struct-struct-simple.c: New file.
+ * scaffold/tests/7k-for-each-elem-simple.c: New file.
+ * scaffold/tests/7l-struct-any-size-array-simple.c: New file.
+ * scaffold/tests/7o-struct-pre-post-simple.c: New file.
+ * scaffold/tests/7q-bit-field-simple.c: New file.
+ * scaffold/tests/90-strspn.c: New file.
+ * scaffold/tests/06-call-string.c.: Rename from 31-eputs.c.
+ * scaffold/tests/7t-function-destruct.c: Rename from 48-function-destruct.c.
+ * scaffold/tests/48-global-static.c: Rename from 49-global-static.c.
+ * scaffold/tests/55-char-array.c:renamed: Rename from 4a-char-array.c.
+ * scaffold/tests/51-itoa.c:r Rename from 52-itoa.c.
+ * include/signal.h:(struct sigaction):
+
+ mescc: x86_64 support: Add tests.
+
+2018-08-14 Jan Nieuwenhuizen
+
+ mescc: Initial x86_64 support.
+ make all-go && MES=guile ./pre-inst-env scripts/mescc -m64 -c scaffold/main.c
+
+ mescc: Prepare for x86_64 support.
+ * module/mescc/info.scm (info): Add allocated, registers.
+ * module/mescc/i386/info.scm: New file.
+ * build-aux/build-guile.sh (SCM_FILES): Add it.
+ * module/mescc/compile.scm (c99-input->info): Add info parameter.
+ (c99-ast->info): Likewise.
+ (i386:type-alist): Remove.
+ (alloc-register, free-register): New function.
+ (expr->register*): Rename from expr->accu*. Update callers.
+ (expr->accu): Rename from expr->accu. Update callers.
+ * module/mescc/mescc.scm(%info): New variable.
+ * module/mescc/mescc.scm (c->ast): Use it.
+ (mescc:compile): Likewise.
+ (E->info): Likewise.
+
+2018-09-16 Jan Nieuwenhuizen
+
+ emacs: Add disassembly helpers.
+ * .dir-locals.el (as-32, as-64): Add disassembly helpers.
+
+2018-09-11 Jan Nieuwenhuizen
+
+ guix: nyacc-for-mes: Update to 0.86.0.
+ * guix/git/mes.scm (nyacc-for-mes): Update to 0.86.0 plus fix binary
+ literals.
+
+ mescc: Support gcc-3.0: Locale header fix.
+ * include/locale.h (LC_ALL, LC_NUMERIC): Numbers, not strings.
+ (LC_COLLATE, LC_CTYPE): New macro.
+
+2018-09-09 Jan Nieuwenhuizen
+
+ build: Oops, fix ./check.sh for bootstrap build.
+ * build-aux/config.sh (top_builddir): Set default to `.'.
+
+2018-09-05 Jan Nieuwenhuizen
+
+ guix: nyacc-for-mes: Update to 0.85.3.
+ * guix/git/mes.scm (nyacc-for-mes): Update to 0.85.3.
+
+ mes: Support Nyacc 0.85.3: Integrate progress.
+ * mes/module/nyacc/lang/sx-util.mes: New file.
+ * mes/module/nyacc/version.mes: New file.
+ * mes/module/nyacc/lang/c99/cpp.mes (nyacc): Include them.
+ * mes/module/nyacc/lang/c99/parser.mes (nyacc): Include them.
+ * module/mescc/preprocess.scm (need-progress): New function.
+ (progress): New function.
+ (insert-progress-monitors): Use them to Integrate progress.
+
+ mes: Support Nyacc 0.85.3: Add char-set-copy.
+ * mes/module/srfi/srfi-14.mes (char-set-copy): New function>
+
+2018-09-04 Jan Nieuwenhuizen
+
+ doc: Update bootstrap graph.
+ * doc/images/gcc-mesboot-graph.dot: Regenerate.
+ * build-aux/GNUmakefile.in (doc/mes.info): Oops change dependency to .png.
+ * doc/mes.texi (The Mes Bootstrap Process): Update image and wording.
+
+ guix: Update hash.
+ * guix/git/mes.scm (mes): Update hash.
+
+2018-09-03 Jan Nieuwenhuizen
+
+ Release 0.17.1.
+ * configure (VERSION): Update to 0.17.1.
+ (main): Likewise.
+ * configure.sh (VERSION): Likewise.
+ * build-aux/GNUmakefile.in (gen-announce): Likewise.
+ * guix/git/mes.scm (mes, mes.git): Likewise.
+
+2018-08-09 Jan Nieuwenhuizen
+
+ doc: Release update.
+ * HACKING (prefix): Update.
+ * INSTALL (http): Update.
+ * NEWS: Update.
+ * README (C-compiler): Update.
+ * doc/announce/ANNOUNCE-0.17: Update.
+
+2018-09-03 Jan Nieuwenhuizen
+
+ build: ALlow releasing from worktree.
+ * build-aux/GNUmakefile.in (COMMIT): Check for .git file.
+
+2018-09-01 Jan Nieuwenhuizen
+
+ mescc: Mes C Library: Do not redefine size_t.
+ * include/stddef.h: Do not redefine size_t.
+
+2018-08-27 Jan Nieuwenhuizen