2018-10-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	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  <janneke@gnu.org>

	doc: Release update.
	* BOOTSTRAP: Update.
	* HACKING: Update.
	* NEWS: Update.
	* README: Update.
	* doc/mes.texi (Submitting Patches): Fix misquoting, misattribution.

2018-10-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	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.

	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.

2018-10-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	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.

2018-10-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Avoid 64bit zero divide.
	* src/math.c (divide): Avoid (64bit) 0 divide.
	(modulo): Likewise.

2018-10-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	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  <janneke@gnu.org>

	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  <janneke@gnu.org>

	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  <janneke@gnu.org>

	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  <janneke@gnu.org>

	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  <janneke@gnu.org>

	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  <janneke@gnu.org>

	emacs: Add disassembly helpers.
	* .dir-locals.el (as-32, as-64): Add disassembly helpers.

2018-09-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	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  <janneke@gnu.org>

	build: Oops, fix ./check.sh for bootstrap build.
	* build-aux/config.sh (top_builddir): Set default to `.'.

2018-09-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	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  <janneke@gnu.org>

	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  <janneke@gnu.org>

	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-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	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  <janneke@gnu.org>

	build: ALlow releasing from worktree.
	* build-aux/GNUmakefile.in (COMMIT): Check for .git file.

2018-09-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Mes C Library: Do not redefine size_t.
	* include/stddef.h: Do not redefine size_t.

2018-08-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Mes C Library: Support make 3.80: Add setlocale, sigaddset.
	* include/limits.h (ULONG_MAX): New macro.
	* include/locale.h (LC_ALL, LC_NUMERIC): New macro.
	* lib/stub/setlocale.c: New file.
	* lib/stub/sigaddset.c: New file.
	* lib/libc+gnu.c: Include them.

2018-08-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Mes C Library: Fix qsort to support duplicate entries.
	* lib/stdlib/qsort.c (qpart): Handle dupes.
	* scaffold/tests/81-qsort-dupes.c: New file.
	* build-aux/check-mescc.sh (tests): Run it.

	mescc: Mes C Library: Support make: Implement clock_gettime, time.
	* include/linux/x86/syscall.h (SYS_time, SYS_clock_gettime,
	SYS_gettimeofday): New macro.
	* include/linux/x86_64/syscall.h (SYS_time, SYS_clock_gettime,
	SYS_gettimeofday): New macro.
	* lib/linux/tcc.c (gettimeofday, time): New function.
	* lib/linux/gnu.c (clock_gettime): New function.
	* include/time.h: Declare it.
	* lib/stub/gettimeofday.c: Remove.
	* lib/stub/time.c: Remove.

2018-08-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Mes C Library: Support make: Support main with envp.
	* lib/linux/x86-mes-gcc/crt1.c (_start): Also push envp.
	* lib/linux/x86-mes/crt1.c (_start): Also push envp.
	* lib/linux/x86_64-mes-gcc/crt1.c (_start): Also mov environment,%rdx.

	mescc: Mes C Library: Support make: Add chdir, getlogin, setvbuf, sigblock.
	* lib/stub/getlogin.c: New file.
	* lib/stub/setvbuf.c: New file.
	* lib/stub/sigblock.c: New file.
	* lib/libc+gnu.c: Include them.
	* include/linux/x86/syscall.h (SYS_chdir): New macro.
	* include/linux/x86_64/syscall.h (SYS_chdir): New macro.
	* include/stdio.h (_IOFBF, _IOLBF, _IONBF): New macro.
	* include/errno.h (ENOEXEC, ECHILD): New macro.
	* include/sys/wait.h (WNOHANG): New macro.
	* lib/linux/gnu.c (chdir): New function.
	* include/ar.h: New file.

	mescc: Mes C Library: Support diffutils: Add execl.
	* include/limits.h (CHAR_MAX): New macro.
	* lib/posix/execl.c: New file.
	* include/unistd.h: Declare it.

	mescc: Mes C Library: Add closedir, opendir, readdir.
	* include/dirent.h: New file.  Import from glibc-2.2.5.
	* include/dirstream.h: Likewise.
	* lib/dirent/__getdirentries.c: Likewise.
	* lib/dirent/closedir.c: Likewise.
	* lib/dirent/readdir.c (readdir): Likewise.
	* lib/libc+gnu.c: Include them.
	* include/linux/x86/syscall.h (SYS_getdents): New macro.
	* include/linux/x86_64/syscall.h (SYS_getdents): Likewise.
	* lib/linux/gnu.c (getdents): New function.
	* include/limits.h (NAME_MAX): New macro.
	* include/fcntl.h (O_DIRECTORY): New macro.
	* scaffold/tests/readdir.dir: New directory.
	* scaffold/tests/99-readdir.c: New file, use it.
	* build-aux/check-mescc.sh (tests): Run it.

2018-08-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Mes C Library: Move strncmp to own test.
	* scaffold/tests/51-strcmp.c: Remove strncmp tests.
	* scaffold/tests/51-strncmp.c: New file.
	* build-aux/check-mescc.sh (tests): Add it.

2018-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Cleanup includes.
	* scaffold/tests/30-strlen.c: Include only libmes-mini.h
	* scaffold/tests/31-eputs.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.

	mescc: Cleanup includes.
	* include/libmes-mini.h: New file.
	* include/libmes.h: Use it.

2018-08-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Add dir to include path.
	* module/mescc/mescc.scm (preprocess): Add dir to include path.
	(c->info): Likewise.
	* scaffold/tests/08-assign.c: New file.

2018-08-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	check-mescc: c-mini

2018-08-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Mes C Library: Explode libc+gnu.c.
	* modified:   include/math.h: Add declarations.
	* lib/posix/getopt.c: Rename from lib/getopt.c.
	* lib/gcc.c: Remove.
	* lib/m4.c: Remove.
	* lib/ctype/isalnum.c: New file, explode from libc+gnu.c.
	* lib/ctype/isalpha.c: Likewise.
	* lib/ctype/isascii.c: Likewise.
	* lib/ctype/iscntrl.c: Likewise.
	* lib/ctype/isnumber.c: Likewise.
	* lib/ctype/isprint.c: Likewise.
	* lib/ctype/ispunct.c: Likewise.
	* lib/math/fabs.c: Likewise.
	* lib/posix/alarm.c: Likewise.
	* lib/posix/mktemp.c: Likewise.
	* lib/posix/raise.c: Likewise.
	* lib/posix/sbrk.c: Likewise.
	* lib/posix/sleep.c: Likewise.
	* lib/posix/unsetenv.c: Likewise.
	* lib/stdio/clearerr.c: Likewise.
	* lib/stdio/fdgets.c: Likewise.
	* lib/stdio/feof.c: Likewise.
	* lib/stdio/fgets.c: Likewise.
	* lib/stdio/fileno.c: Likewise.
	* lib/stdio/freeopen.c: Likewise.
	* lib/stdio/freopen.c: Likewise.
	* lib/stdio/perror.c: Likewise.
	* lib/stdlib/__exit.c: Likewise.
	* lib/stdlib/abs.c: Likewise.
	* lib/stdlib/atexit.c: Likewise.
	* lib/stdlib/atol.c: Likewise.
	* lib/stdlib/bsearch.c: Likewise.
	* lib/stdlib/mbstowcs.c: Likewise.
	* lib/string/bcmp.c: Likewise.
	* lib/string/bcopy.c: Likewise.
	* lib/string/bzero.c: Likewise.
	* lib/string/index.c: Likewise.
	* lib/string/rindex.c: Likewise.
	* lib/string/strcspn.c: Likewise.
	* lib/string/strdup.c: Likewise.
	* lib/string/strerror.c: Likewise.
	* lib/string/strncat.c: Likewise.
	* lib/string/strpbrk.c: Likewise.
	* lib/string/strspn.c: Likewise.
	* lib/stub/__cleanup.c: Likewise.
	* lib/stub/atof.c: Likewise.
	* lib/stub/chown.c: Likewise.
	* lib/stub/ctime.c: Likewise.
	* lib/stub/fpurge.c: Likewise.
	* lib/stub/freadahead.c: Likewise.
	* lib/stub/frexp.c: Likewise.
	* lib/stub/fscanf.c: Likewise.
	* lib/stub/getpwnam.c: Likewise.
	* lib/stub/gmtime.c: Likewise.
	* lib/stub/pclose.c: Likewise.
	* lib/stub/popen.c: Likewise.
	* lib/stub/rewind.c: Likewise.
	* lib/stub/setbuf.c: Likewise.
	* lib/stub/sigsetmask.c: Likewise.
	* lib/stub/strftime.c: Likewise.
	* lib/stub/sys_siglist.c: Likewise.
	* lib/stub/system.c: Likewise.
	* lib/stub/times.c: Likewise.
	* lib/stub/umask.c: Likewise.
	* lib/stub/utime.c: Likewise.
	* lib/libc+gnu.c: Include explodings.
	* lib/libg.c: Likewise.
	* lib/libgetopt.c: Include explodings.

2018-08-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Mes C Library: Explode libc+tcc.c.
	* include/libmes.h: Add declarations.
	* include/string.h: Likewise.
	* lib/ctype/islower.c: New file, explode from lib/libc+tcc.c.
	* lib/ctype/isupper.c: Likewise.
	* lib/ctype/tolower.c: Likewise.
	* lib/ctype/toupper.c: Likewise.
	* lib/mes/search-path.c: Likewise.
	* lib/posix/execvp.c: Likewise.
	* lib/stdio/fclose.c: Likewise.
	* lib/stdio/fdopen.c: Likewise.
	* lib/stdio/ferror.c: Likewise.
	* lib/stdio/fflush.c: Likewise.
	* lib/stdio/fopen.c: Likewise.
	* lib/stdio/fprintf.c: Likewise.
	* lib/stdio/fread.c: Likewise.
	* lib/stdio/fseek.c: Likewise.
	* lib/stdio/ftell.c: Likewise.
	* lib/stdio/fwrite.c: Likewise.
	* lib/stdio/printf.c: Likewise.
	* lib/stdio/remove.c: Likewise.
	* lib/stdio/snprintf.c: Likewise.
	* lib/stdio/sprintf.c: Likewise.
	* lib/stdio/sscanf.c: Likewise.
	* lib/stdio/vfprintf.c: Likewise.
	* lib/stdio/vprintf.c: Likewise.
	* lib/stdio/vsnprintf.c: Likewise.
	* lib/stdio/vsprintf.c: Likewise.
	* lib/stdio/vsscanf.c: Likewise.
	* lib/stdlib/calloc.c: Likewise.
	* lib/stdlib/qsort.c: Likewise.
	* lib/stdlib/strtof.c: Likewise.
	* lib/stdlib/strtol.c: Likewise.
	* lib/stdlib/strtold.c: Likewise.
	* lib/stdlib/strtoll.c: Likewise.
	* lib/stdlib/strtoul.c: Likewise.
	* lib/stdlib/strtoull.c: Likewise.
	* lib/string/memcmp.c: Likewise.
	* lib/string/memmem.c: Likewise.
	* lib/string/memmove.c: Likewise.
	* lib/string/memset.c: Likewise.
	* lib/string/strcat.c: Likewise.
	* lib/string/strchr.c: Likewise.
	* lib/string/strlwr.c: Likewise.
	* lib/string/strncpy.c: Likewise.
	* lib/string/strrchr.c: Likewise.
	* lib/string/strstr.c: Likewise.
	* lib/string/strupr.c: Likewise.
	* lib/stub/gettimeofday.c: Likewise.
	* lib/stub/ldexp.c: Likewise.
	* lib/stub/localtime.c: Likewise.
	* lib/stub/mprotect.c: Likewise.
	* lib/stub/sigaction.c: Likewise.
	* lib/stub/sigemptyset.c: Likewise.
	* lib/stub/strtod.c: Likewise.
	* lib/stub/time.c: Likewise.
	* lib/libc+tcc.c: Include explodings.

2018-08-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Mes C Library: Explode libmes.c.
	* include/libmes.h: Add declarations.
	* lib/abtol.c: New file, explode from lib/libmes.c.
	* lib/ctype/isdigit.c: Likewise.
	* lib/ctype/isnumber.c: Likewise.
	* lib/ctype/isspace.c: Likewise.
	* lib/ctype/isxdigit.c: Likewise.
	* lib/mes/abtol.c: Likewise.
	* lib/mes/eputc.c: Likewise.
	* lib/mes/eputs.c: Likewise.
	* lib/mes/fdgetc.c: Likewise.
	* lib/mes/fdputc.c: Likewise.
	* lib/mes/fdputs.c: Likewise.
	* lib/mes/fdungetc.c: Likewise.
	* lib/mes/itoa.c: Likewise.
	* lib/mes/ltoab.c: Likewise.
	* lib/mes/ntoab.c: Likewise.
	* lib/mes/utoa.c: Likewise.
	* lib/stdlib/atoi.c: Likewise.
	* lib/libmes.c: Include explodings.

	mescc: Mes C Library: Explode libc-mini.c.
	* include/libmes.h: Add declarations.
	* lib/mes/eputs.c: New file, explode from lib/libc-mini.c.
	* lib/mes/oputs.c: Likewise.
	* lib/stdlib/exit.c: Likewise.
	* lib/stdlib/puts.c: Likewise.
	* lib/string/strlen.c: Likewise.
	* lib/libc-mini.c: Include explodings.

	mescc: Mes C Library: Explode libc.c.
	* lib/libc.c: New file, explode from lib/libc.c.
	* lib/posix/execv.c: Likewise.
	* lib/posix/isatty.c: Likewise.
	* lib/posix/wait.c: Likewise.
	* lib/stdio/fgetc.c: Likewise.
	* lib/stdio/fputc.c: Likewise.
	* lib/stdio/fputs.c: Likewise.
	* lib/stdio/getc.c: Likewise.
	* lib/stdio/getchar.c: Likewise.
	* lib/stdio/putc.c: Likewise.
	* lib/stdio/putchar.c: Likewise.
	* lib/stdio/ungetc.c: Likewise.
	* lib/stdlib/free.c: Likewise.
	* lib/stdlib/getenv.c: Likewise.
	* lib/stdlib/realloc.c: Likewise.
	* lib/stdlib/setenv.c: Likewise.
	* lib/string/strcmp.c: Likewise.
	* lib/string/strcpy.c: Likewise.
	* lib/string/strncmp.c: Likewise.
	* lib/libc.c: Include explodings.

2018-08-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Build initial scaffold tests without libc.
	* scaffold/argv.c (strcmp): New function; support building without
	libc.
	* build-aux/build-cc.sh: Build initial scaffold tests without libc.
	* build-aux/build-cc32.sh: Likewise.
	* build-aux/build-mes.sh: Likewise.
	* build-aux/check-mescc.sh: Likewise.
	* scaffold/read.data: Rename from `mesmes'.
	* scaffold/read.c: Rename from `m.c'; update.

	test: Remove 30-test.i indirection.
	* include/30-test.i: Remove.
	* scaffold/tests/30-strlen.c: Remove 30-test.i indirection.
	* scaffold/tests/31-eputs.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/50-assert.c: Likewise.
	* scaffold/tests/51-strcmp.c: Likewise.
	* scaffold/tests/52-itoa.c: Likewise.
	* scaffold/tests/53-strcpy.c: Likewise.
	* scaffold/tests/60-math.c: Likewise.
	* scaffold/tests/63-struct-cell.c: Likewise.
	* scaffold/tests/64-make-cell.c: Likewise.
	* scaffold/tests/65-read.c: Likewise.
	* scaffold/tests/66-local-char-array.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/73-union.c: Likewise.
	* scaffold/tests/74-multi-line-string.c: Likewise.
	* scaffold/tests/75-struct-union.c: Likewise.
	* scaffold/tests/76-pointer-arithmetic.c: Likewise.
	* scaffold/tests/77-pointer-assign.c: Likewise.
	* scaffold/tests/78-union-struct.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/7c-dynarray.c: Likewise.
	* scaffold/tests/7d-cast-char.c: Likewise.
	* scaffold/tests/7e-struct-array-access.c: Likewise.
	* scaffold/tests/7f-struct-pointer-arithmetic.c: Likewise.
	* scaffold/tests/7g-struct-byte-word-field.c: Likewise.
	* scaffold/tests/7h-struct-assign.c: Likewise.
	* scaffold/tests/7i-struct-struct.c: Likewise.
	* scaffold/tests/7j-strtoull.c: Likewise.
	* scaffold/tests/7k-for-each-elem.c: Likewise.
	* scaffold/tests/7l-struct-any-size-array.c: Likewise.
	* scaffold/tests/7m-struct-char-array-assign.c: Likewise.
	* scaffold/tests/7n-struct-struct-array.c: Likewise.
	* scaffold/tests/80-setjmp.c: Likewise.
	* scaffold/tests/81-qsort.c: Likewise.
	* scaffold/tests/86-strncpy.c: Likewise.
	* scaffold/tests/87-sscanf.c: Likewise.

	test: Remove 00-test.i indirection.
	* include/00-test.i: Remove.
	* scaffold/tests/01-return-0.c: Remove 00-test.i indirection.
	* scaffold/tests/02-return-1.c: Likewise.
	* scaffold/tests/03-call.c: Likewise.
	* scaffold/tests/04-call-0.c: Likewise.
	* scaffold/tests/05-call-1.c: Likewise.
	* scaffold/tests/06-call-!1.c: Likewise.
	* scaffold/tests/10-if-0.c: Likewise.
	* scaffold/tests/11-if-1.c: Likewise.
	* scaffold/tests/12-if-==.c: Likewise.
	* scaffold/tests/13-if-!=.c: Likewise.
	* scaffold/tests/14-if-goto.c: Likewise.
	* scaffold/tests/15-if-!f.c: Likewise.
	* scaffold/tests/16-if-t.c: Likewise.
	* scaffold/tests/20-while.c: Likewise.
	* scaffold/tests/21-char[].c: Likewise.
	* scaffold/tests/22-while-char[].c: Likewise.
	* scaffold/tests/23-pointer.c: Likewise.

	build: Cleanup trace output.
	* build-aux/build-cc.sh: Cleanup trace output.
	* build-aux/build-cc32.sh: Likewise.
	* build-aux/build-guile.sh: Likewise.
	* build-aux/build-mes.sh: Likewise.
	* build-aux/build-x86_64-mes.sh: Likewise.
	* build-aux/cc-mes.sh: Likewise.
	* build-aux/cc.sh: Likewise.
	* build-aux/cc32-mes.sh: Likewise.
	* build-aux/cc64-mes.sh: Likewise.
	* build-aux/check-boot.sh: Likewise.

	mescc: Support -l none (linking without libc).
	* module/mescc/mescc.scm (mescc:link): Support -l none.

2018-08-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support -o-.
	* module/mescc/mescc.scm (GUILE-with-output-to-file): New variable.
	(with-output-to-file): Use it in redefined function.

	build: Update dir-locals for new layout.
	* .dir-locals.el: Update to new layout.

2018-08-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Mes C Library: Support oputs for POSIX.
	* lib/libmes.c (oputs)[POSIX]: New function.

	core: mes: Prepare for M2-Planet.
	* src/mes.c (cal): Refactor to use if instead of switch.
	(eval_apply): Likewise.

	core: lib: Prepare for M2-Planet.
	* src/lib.c (display_helper): Refactor to use if instead of switch.
	(memq): Likewise.

	core: reader: Prepare for M2-Planet.
	* src/reader.c (MAX_STRING): New define.
	(read_input_file_env_): Remove dead code.
	(reader_read_line_comment): Refactor to remove recursion.
	(reader_read_line_sexp_): Refactor to use if instead of switch.
	(reader_read_hash): Likewise.
	(reader_read_character): Refactor: cache peekchar () value, make
	M2-Planet friendly.
	(reader_read_binary): Make M2-Planet friendly.
	(reader_read_octal): Likewise.
	(reader_read_hex): Likewise.
	(reader_read_string): Refactor.
	(dump): Make M2-Planet friendly.

	build: src/mes build fixes.
	* build-aux/GNUmakefile.in (seed): Add dependency on gcc.
	* build-aux/build-cc.sh: Copy result to src/mes.
	* build-aux/build-cc32.sh: Likewise.
	* build-aux/build.sh.in: Remove copying of results.

	mescc: Mes C Library: Cleanup start files.
	* lib/linux/x86-mes-gcc/crt0.c: Split from lib/linux/crt0.c.
	* lib/linux/x86-mes-gcc/crt1.c: Split from lib/linux/crt1.c.
	* lib/linux/x86-mes-gcc/crti.c: Split from lib/linux/crti.c.
	* lib/linux/x86-mes-gcc/crtn.c: Split from lib/linux/crtn.c.
	* lib/linux/x86-mes/crt0.c: Split from lib/linux/crt0.c.
	* lib/linux/x86-mes/crt1.c: Split from lib/linux/crt1.c.
	* lib/linux/x86-mes/crti.c: Split from lib/linux/crti.c.
	* lib/linux/x86-mes/crtn.c: Split from lib/linux/crtn.c.
	* build-aux/build-cc.sh: Update.
	* build-aux/build-cc32.sh: Update.
	* build-aux/build-mes.sh: Update.

2018-08-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Mes C Library: Add x86_64 libc+gnu support.
	* include/linux/x86/syscall.h: Move SYS_ defines from gnu.c.
	* include/linux/x86_64/syscall.h: Add SYS_ defines for gnu.
	* lib/linux/gnu.c: Update.
	* lib/linux/gnu.c (signal)[__x86_64__]: Implement using rt_sigaction.
	* lib/stdlib/abort.c: Support x86_64.

	mescc: Mes C Library: Add x86_64 libc+tcc support.
	* include/linux/x86/syscall.h: Move SYS_ defines from tcc.c.
	* include/linux/x86_64/syscall.h: Add SYS_ defines for tcc.
	* lib/x86-mes-gcc/setjmp.c: Rename from lib/libc+tcc-gcc.c
	* lib/x86-mes/setjmp.c: Rename from lib/libc+tcc-mes.c
	* lib/linux/tcc.c: Update.

	mescc: Mes C Library: Add x86_64 libc support.
	* include/linux/x86_64/syscall.h: New file.
	* include/linux/x86/syscall.h: New file.
	* lib/linux/x86_64-mes-gcc/mes.c: New file.
	* lib/linux/x86-mes/mes.c: Rename from lib/linux/mes.c.
	* lib/linux/x86-mes-gcc/mes.c: Rename from lib/linux/gcc.c.
	* lib/linux/libc.c: Update includes.
	(waitpid)[__x86_64__]: Use wait4.
	* build-aux/build-cc.sh: Build libc too.
	* lib/x86-mes/x86.M1 (mov____0x8(%ebp),%esi): New macro.

2018-08-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Mes C Library: Add x86_64 libc-mini support.
	* lib/linux/x86-mes-gcc/mini.c: Rename from lib/linux/mini-gcc.c.
	* lib/linux/x86-mes/mini.c: Rename from lib/linux/mini-mes.c.
	* lib/linux/x86_64-mes-gcc/crt1.c: Rename from lib/linux/x86_64/crt1.c.
	* lib/linux/x86_64-mes-gcc/mini.c: New file.
	* build-aux/build-cc.sh: Build libc-mini, scaffold/main, scaffold/hello.
	* build-aux/cc64.sh: New file.

	mescc: Add objdump'able x86_64-mes scaffold.
	* lib/x86_64-mes/elf64-header.hex2: New file.
	* lib/x86_64-mes/elf64-footer-single-main.hex2: New file.
	* build-aux/build-x86_64-mes.sh: Enable second, objdump'able exit-42
	  scaffold test.

	mescc: Initial x86_64-mes scaffold.
	* build-aux/GNUmakefile.in (x86_64-mes): New target.
	* .gitignore: Ignore x86 and x86_64 out files.
	* build-aux/build-mes.sh: Resurrect three initial exit42 scaffold tests.
	* build-aux/build-x86_64-mes.sh: New file.  Add initial exit42
	  scaffold test.
	* lib/x86-mes/elf32-0header.hex2: Fix comment.
	* lib/x86-mes/elf32-header.hex2: Likewise.
	* lib/x86_64-mes/elf-0footer.hex2: New file.
	* lib/x86_64-mes/elf64-0header.hex2: New file.
	* lib/x86_64-mes/elf64-body-exit-42.hex2: New file.
	* lib/x86_64-mes/exit-42.c: New file.

2018-08-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: seed: Oops, copy TCC seed after it's been regenerated.
	* build-aux/GNUmakefile.in (seed): Oops, copy TCC seed after it's been
	regenerated.

2018-08-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Fix mescc man page generation.
	* build-aux/GNUmakefile.in (doc/mescc.1): Reverse dependencies;
	  generate page for mescc.

2018-08-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Fixes for make check.
	* build-aux/config.sh (srcdir): Initialize if unset.
	* build-aux/test.sh (DIFF): Do not fail if unset.

2018-08-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Update to 0.17.
	* guix/git/mes.scm (mes): Update to 0.17.

2018-07-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	Release 0.17.
	* configure (VERSION): Update to 0.17.

	doc: Release update.
	* HACKING: Update.
	* INSTALL: Update.
	* NEWS: Update.
	* README: Update.
	* doc/announce/ANNOUNCE-0.17: New file.

2018-08-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Non-bootstrap install fixes.
	* configure (main): Fix default bindir.
	* build-aux/GNUmakefile.in (PHONY_TARGETS): Remove src/mes.  Fixes
	  re-build upon install.
	* build-aux/install.sh.in: Fix tar arguments for scaffold files.
	  Expand install directories.

	check: Do not fail if partial test prerequisites fail.
	* build-aux/check-tcc.sh: Pass if no test directory found.
	* build-aux/check.sh.in (TINYCC_PREFIX): Rename from TCC_PREFIX.  Pass
	  if partial tests prerequisites fail.

	check: Fix 4f-string-split.scm for Guile.
	* module/mes/guile.scm (core:car, core:make-cell): New function.
	  Fixes scaffold/boot/4f-string-split.scm.

	build: configure: Oops, substitute @prefix@.
	* build-aux/pre-inst-env.in (MES_PREFIX): Respect pre-set value.
	* configure (main): Oops, substitute @prefix@.
	* configure.sh (subst): Likewise.

2018-07-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: web: New target.
	* README: Add bug-mes@gnu.org
	* NEWS: Likewise.
	* doc/mes.texi: Likewise.
	* build-aux/gendocs.sh: New file, from gnulib.
	* doc/gendocs_template: New file, from gnulib.
	* build-aux/GNUmakefile.in (web): New target.

	Remove fosdem talk.
	* doc/fosdem/GuixSD.png: Remove.
	* doc/fosdem/LISP-1-5-page-13-bottom.png: Remove.
	* doc/fosdem/LISP-1.5-page-13-bottom.png: Remove.
	* doc/fosdem/LISP-1.5-page-13.pdf: Remove.
	* doc/fosdem/LISP-1.5-page-13.png: Remove.
	* doc/fosdem/README: Remove.
	* doc/fosdem/beamercolorthemeX.sty: Remove.
	* doc/fosdem/beamerthemeX.sty: Remove.
	* doc/fosdem/bootstrap-graph.png: Remove.
	* doc/fosdem/egg.jpeg: Remove.
	* doc/fosdem/egg.png: Remove.
	* doc/fosdem/egg.xcf: Remove.
	* doc/fosdem/fosdem.org: Remove.
	* doc/fosdem/fosdem.pdf: Remove.
	* doc/fosdem/fsb-logo-guile-guix-gnu.png: Remove.
	* doc/fosdem/fsb-logo-guile-guix-gnu.xcf: Remove.
	* doc/fosdem/fsb-logo-guile-guix-mes.png: Remove.
	* doc/fosdem/fsb-logo-guile-guix-mes.xcf: Remove.
	* doc/fosdem/fsb-logo.png: Remove.
	* doc/fosdem/guix-build-bootstrap-tarballs.log: Remove.
	* doc/fosdem/mes.png: Remove.
	* doc/fosdem/mes.xcf: Remove.

2018-07-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Remove tinycc/test2 import.
	* scaffold/tinycc/: Remove.
	* build-aux/check-mescc.sh: Remove tinycc testing.
	* build-aux/check-tcc.sh: New file.
	* build-aux/check.sh.in: Use it.
	* build-aux/config.sh: Update.
	* build-aux/export.make: Update.

	Add missing copyright headers and READMEs.
	* ChangeLog: Add copyright header.
	* build-aux/GNUmakefile.in (generate-ChangeLog): Append it as copyright footer.
	* BOOTSTRAP: Add copyright header.
	* scaffold/boot/2f-define-second-lambda.scm: Likewise.
	* scaffold/boot/39-global-define-override.scm: Likewise.
	* scaffold/boot/3a-global-define-lambda-override.scm: Likewise.
	* scaffold/boot/4f-string-split.scm: Likewise.
	* scaffold/boot/numbers.scm: Likewise.
	* scaffold/gc.scm: Likewise.
	* scaffold/b-0.mes: Remove.
	* doc/GNU-EVAL-APPLY: Remove.
	* doc/announce/README: New file.
	* doc/announce/ANNOUNCE: Move from doc/ANNOUNCE.
	* doc/announce/ANNOUNCE-0.10: Likewise.
	* doc/announce/ANNOUNCE-0.11: Likewise.
	* doc/announce/ANNOUNCE-0.12: Likewise.
	* doc/announce/ANNOUNCE-0.13: Likewise.
	* doc/announce/ANNOUNCE-0.14: Likewise.
	* doc/announce/ANNOUNCE-0.15: Likewise.
	* doc/announce/ANNOUNCE-0.16: Likewise.
	* doc/announce/ANNOUNCE-0.3: Likewise.
	* doc/announce/ANNOUNCE-0.4: Likewise.
	* doc/announce/ANNOUNCE-0.5: Likewise.
	* doc/announce/ANNOUNCE-0.6: Likewise.
	* doc/announce/ANNOUNCE-0.7: Likewise.
	* doc/announce/ANNOUNCE-0.8: Likewise.
	* doc/announce/ANNOUNCE-0.9: Likewise.
	* doc/announce/ANNOUNCE-2: Likewise.
	* doc/announce/UPDATE-0.13: Likewise.
	* doc/fosdem/README: New file.
	* doc/fosdem/fosdem.org: Add legalese.
	* doc/fosdem/fosdem.pdf: Regenerate.
	* doc/images/README: New file.
	* mes/module/mes/psyntax.pp.header: New file.
	* mes/module/mes/psyntax.pp: Add it to generated file.

2018-07-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Make build more autotools-like.
	* build-aux/build.sh.in: Move from ./build.sh
	* build-aux/check.sh.in: Likewise.
	* build-aux/GNUmakefile.in: Likewise.
	* build-aux/install.sh.in: Likewise.
	* build-aux/uninstall.sh.in: Likewise.
	* configure: Substitute them.
	* configure.sh: Likewise.
	* build-aux/build-cc.sh: Update: use ${srcdest} instead of ${top_builddest}.
	* build-aux/build-cc32.sh: Likewise.
	* build-aux/build-guile.sh: Likewise.
	* build-aux/build-mes.sh: Likewise.
	* build-aux/cc-mes.sh: Likewise.
	* build-aux/cc.sh: Likewise.
	* build-aux/cc32-mes.sh: Likewise.
	* build-aux/check-boot.sh: Likewise.
	* build-aux/check-mes.sh: Likewise.
	* build-aux/check-mescc.sh: Likewise.
	* build-aux/config.sh: Likewise.
	* build-aux/export.make: Likewise.
	* build-aux/mes-snarf.scm: Likewise.
	* build-aux/pre-inst-env.in: Likewise.
	* build-aux/test.sh: Likewise.
	* build-aux/trace.sh: Likewise.
	* module/mescc/mescc.scm: Likewise.
	* scripts/mescc.in: Likewise.
	* src/mes.c: Likewise.
	* .gitignore: Likewise.

2018-07-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Support all `Standard targets' for users.
	* GNUmakefile (distclean mostlyclean, maintainer-clean, html, dvi, ps,
	  install-dvi, install-ps, install-html, installcheck): New target.
	  (install-info): Remove fake target.
	* configure (parse-opts): Add --srcdir.

	xx

2018-07-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add taken-from-Binutils and copyright line to alloca.c
	* lib/stdlib/alloca.c: Add `taken from binutils' and copyright line to
	  alloca.c for minor changes.

2018-07-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	Relicense some taken-from-GNU Guile LGPLv3+ files to GPLv3+.
	* mes/module/mes/pmatch.scm: Relicense to GPLv3+.
	* mes/module/sxml/xpath.scm: Likewise.
	* mes/module/mes/peg/cache.scm: Likewise.
	* mes/module/mes/peg/codegen.scm: Likewise.
	* mes/module/mes/peg/simplify-tree.scm: Likewise.
	* mes/module/mes/peg/string-peg.scm: Likewise.
	* mes/module/mes/peg/using-parsers.scm: Likewise.

2018-07-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	Relicense some taken-from-GNU Guile LGPLv2+ files to GPLv3+.
	* mes/module/mes/pretty-print.scm: Relicense to GPLv3+.
	* mes/module/mes/psyntax.ss: Likewise.
	* mes/module/srfi/srfi-1.scm: Likewise.
	* mes/module/srfi/srfi-16.scm: Likewise.
	* mes/module/srfi/srfi-26.scm: Likewise.
	* module/mes/getopt-long.scm: Likewise.

	Add missing copyright headers.
	* .dir-locals.el: Add copyright header.
	* AUTHORS: Likewise.
	* HACKING: Likewise.
	* INSTALL: Likewise.
	* README: Likewise.
	* build-aux/export.make: Likewise.
	* build-aux/setup-mes.sh: Likewise.
	* configure.sh: Likewise.
	* install.sh: Likewise.
	* scaffold/tests/90-goto-var.c: Likewise.
	* scaffold/tests/91-goto-array.c: Likewise.
	* tests/read.test: Likewise.
	* uninstall.sh: Likewise.
	* doc/fosdem/beamercolorthemeX.sty:
	* doc/fosdem/beamerthemeX.sty:
	* doc/fosdem/html.sty: Remove.
	* doc/fosdem/README: New file.
	* doc/images/README: New file.

2018-07-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	GNU Mes.
	Throughout, make these changes

	   Copyright headers: GNU Mes
	   First mention of name: GNU Mes
	   Website: https://www.gnu.org/software/mes
	   Git:     git://git.savannah.gnu.org/mes.git

2018-07-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Support uninstall.
	* uninstall.sh: New file.
	* GNUmakefile (uninstall): Use it in new target.

	build: Generate gcc-mesboot-graph from .dot.
	* doc/images/gcc-mesboot-graph.dot: New file.
	* doc/images/gcc-mesboot-graph.png: Remove.
	* GNUmakefile (${top_builddest}doc/images/gcc-mesboot-graph.png): New target.
	* configure (det): Add check.
	* build-aux/export.make: Export it.
	* doc/mes.texi (The Mes Bootstrap Process): Describe new recipe.
	* guix/git/mes.scm (mes): Add graphvis dependency.

2018-07-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Refactor package setup.
	Next to the convenient environment setup and package build from git

	   guix environment -l .guix.scm
	   guix build -f .guix.scm

	we can now also build other included packages

	    GUIX_PACKAGE_PATH=guix guix build mes@0.17
	    GUIX_PACKAGE_PATH=guix guix build nyacc@0.80.42

	* guix/git/mes.scm: Move from .guix.scm, make a module.
	* .guix.scm: Move from guix.scm, use it.
	* build-aux/manifest.scm: Update location.
	* build-aux/pre-inst-env.in: Support it.
	* configure: Check for guix.
	* build-aux/export.make: Export GUIX.
	* GNUmakefile (update-hash): New target.

2018-07-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Respect --docdir.
	* configure: Respect --docdir.

	build: Support --srcdir build.
	* build-aux/config.sh: New file.
	* build-aux/trace.sh: New file.
	* build-aux/GNUmakefile.in: New file.
	* configure: Support srcdir configure.
	* GNUmakefile: Support srcdir build.
	* build-aux/build-cc.sh: Likewise.
	* build-aux/build-cc32.sh: Likewise.
	* build-aux/build-guile.sh: Likewise.
	* build-aux/build-mes.sh: Likewise.
	* build-aux/cc-mes.sh: Likewise.
	* build-aux/cc.sh: Likewise.
	* build-aux/cc32-mes.sh: Likewise.
	* build-aux/check-mes.sh: Likewise.
	* build-aux/check-mescc.sh: Likewise.
	* build-aux/export.make: Likewise.
	* build-aux/mes-snarf.scm: Likewise.
	* build-aux/pre-inst-env.in: Likewise.
	* build-aux/test.sh: Likewise.
	* build.sh: Likewise.
	* check.sh: Likewise.
	* install.sh: Likewise.
	* module/mescc/mescc.scm: Likewise.
	* scripts/mescc.in: Likewise.
	* src/mes.c: Likewise.

2018-06-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Prepare for the Hurd.
	* lib/linux/libc.c: Move from lib/linux.c.
	* lib/linux/gcc.c: Move from lib/linux-gcc.c.
	* lib/linux/gnu.c: Move from lib/linux+gnu.c.
	* lib/linux/libc.c: Move from lib/linux.c.
	* lib/linux/mes.c: Move from lib/linux-mes.c.
	* lib/linux/mini-gcc.c: Move from lib/linux-mini-gcc.c.
	* lib/linux/mini-mes.c: Move from lib/linux-mini-mes.c.
	* lib/linux/tcc.c: Move from lib/linux+tcc.c.
	* lib/linux/crt0.c: Move from lib/crt0.c.
	* lib/linux/crt1.c: Move from lib/crt1.c.
	* lib/linux/crti.c: Move from lib/crti.c.
	* lib/linux/crtn.c: Move from lib/crtn.c.
	* build-aux/build-cc.sh: Update for new layout.
	* build-aux/build-cc32.sh: Likewise.
	* build-aux/build-mes.sh: Likewise.
	* build-aux/cc-mes.sh: Likewise.
	* build-aux/cc32-mes.sh: Likewise.
	* lib/string/argz-count.c: New file taken from GNU C Library,
	  relicensed.
	* lib/string/argz-extract.c: New file taken from GNU C Library,
	  relicensed.
	* include/argz.h: New file.
	* lib/string/memcpy.c: New file, extract from libc.
	* lib/assert/assert.c: Likewise.

2018-07-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Install ChangeLog.
	* ChangeLog: New file.
	* install.sh: Regenerate it, install it.

	build: Refactor configure.
	* configure: Refactor.

2018-07-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Prepare for autoconfiscation.
	Make build system more in alignment with how autotools work.  This
	will make transition easier.

	* mes/module/mes/boot-0.scm.in: Update from module/mes/boot-0.scm.
	* scripts/mescc.in: Update from scripts/mescc.
	* build-aux/pre-inst-env.in: New file.
	* build-aux/cc-mes.sh: Use pre-inst-env.
	* configure: Substitute new .in files.
	* install.sh: Do not substitute mescc, boot-0.scm.

2018-07-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Document number->string INT-MIN failure with gcc-x86.
	* src/mes.c (scm_symbol_arch, scm_symbol_compiler): New symbol.
	  (mes_symbols, bload_env): Add them.
	  (scm_symbol_gnuc, scm_symbol_mesc): Remove.
	* scaffold/mini-mes.c: Likewise.
	* module/mes/mes-0.scm (%arch, %compiler): New public variable.
	* tests/srfi-13.test: Expect number->string INT-MIN to fail for
	  gcc-x86.
	* HACKING (Bugs): Add it.

	build: Refactor mes tests.
	* build-aux/check-mes.sh: New file.
	* check.sh: Invoke it for Guile and Mes.
	* .gitignore: Ignore new guile logs.
	* mes/module/mes/boot-0.scm: Ignore some standard Guile options.
	* module/mes/test.scm: Make a module.
	* tests/base.test: Use it.  Make a module, support invoking with Guile
	  or Mes alike.
	* tests/boot.test: Likewise.
	* tests/catch.test: Likewise.
	* tests/closure.test: Likewise.
	* tests/cwv.test: Likewise.
	* tests/display.test: Likewise.
	* tests/fluids.test: Likewise.
	* tests/getopt-long.test: Likewise.
	* tests/guile.test: Likewise.
	* tests/let-syntax.test: Likewise.
	* tests/let.test: Likewise.
	* tests/match.test: Likewise.
	* tests/math.test: Likewise.
	* tests/module.test: Likewise.
	* tests/optargs.test: Likewise.
	* tests/peg.test: Likewise.
	* tests/pmatch.test: Likewise.
	* tests/psyntax.test: Likewise.
	* tests/quasiquote.test: Likewise.
	* tests/read.test: Likewise.
	* tests/scm.test: Likewise.
	* tests/srfi-13.test: Likewise.
	* tests/srfi-14.test: Likewise.
	* tests/srfi-16.test: Likewise.
	* tests/srfi-1.test: Likewise.
	* tests/srfi-43.test: Likewise.
	* tests/srfi-9.test: Likewise.
	* tests/syntax.test: Likewise.
	* tests/vector.test: Likewise.
	* tests/base.test-guile: Remove.
	* tests/boot.test-guile: Remove.
	* tests/catch.test-guile: Remove.
	* tests/closure.test-guile: Remove.
	* tests/cwv.test-guile: Remove.
	* tests/display.test-guile: Remove.
	* tests/fluids.test-guile: Remove.
	* tests/getopt-long.test-guile: Remove.
	* tests/guile.test-guile: Remove.
	* tests/let-syntax.test-guile: Remove.
	* tests/let.test-guile: Remove.
	* tests/match.test-guile: Remove.
	* tests/math.test-guile: Remove.
	* tests/module.test-guile: Remove.
	* tests/optargs.test-guile: Remove.
	* tests/peg.test-guile: Remove.
	* tests/pmatch.test-guile: Remove.
	* tests/psyntax.test-guile: Remove.
	* tests/quasiquote.test-guile: Remove.
	* tests/read.test-guile: Remove.
	* tests/scm.test-guile: Remove.
	* tests/srfi-13.test-guile: Remove.
	* tests/srfi-14.test-guile: Remove.
	* tests/srfi-16.test-guile: Remove.
	* tests/srfi-1.test-guile: Remove.
	* tests/srfi-43.test-guile: Remove.
	* tests/srfi-9.test-guile: Remove.
	* tests/syntax.test-guile: Remove.
	* tests/vector.test-guile: Remove.

	build: all-go: Support V=0,1,2.
	* build-aux/build-guile.sh: Support V=0,1,2.

	build: Fix for handling missing makeinfo.
	* configure (main): Update MAKEINFO.

	mescc: fwrite: Increase debug tracing threshold.
	* lib/libc+tcc.c (fwrite): Increase debug tracing threshold.

	mescc: Add proper includes.
	* include/libmes.h (__mes_debug): Declare.
	* lib/libtcc1.c: Add proper includes.
	* lib/linux+gnu.c: Likewise.
	* lib/m4.c: Likewise.

	core: Resurrect gcc support.
	* src/mes.c (MES_ARENA)[POSIX]: Default to 100000000.

	scaffold: Add proper includes.
	* scaffold/argv.c: Add proper includes.
	* scaffold/malloc.c: Likewise.
	* scaffold/micro-mes.c: Likewise.
	* scaffold/mini-mes.c: Likewise.
	* scaffold/tiny-mes.c: Likewise.

	build: cc32: Silence warnings.
	* build-aux/build-cc32.sh (CC32_CFLAGS): Silence warnings.

	build: Resurrect i686-unknown-linux-gnu-gcc support.
	* build-aux/build-cc32.sh (CC32_CFLAGS): Add -fno-builtin.  Resurrects
	  i686-unknown-linux-gnu-gcc.

	mescc: Support verbose int types.
	* module/mescc/compile.scm (i386:type-alist): Support verbose int types.

	build: Separate Mes and Guile modules.
	* scaffold/gc.scm: Move from guile/gc.scm.
	* guile/: Remove.
	* module/language/paren.mes: Remove.
	* mes/module/mes/base.mes: Move from module/mes/.
	* mes/module/mes/boot-0.scm: Likewise.
	* mes/module/mes/boot-00.scm: Likewise.
	* mes/module/mes/boot-01.scm: Likewise.
	* mes/module/mes/boot-02.scm: Likewise.
	* mes/module/mes/catch.mes: Likewise.
	* mes/module/mes/display.mes: Likewise.
	* mes/module/mes/fluids.mes: Likewise.
	* mes/module/mes/getopt-long.mes: Likewise.
	* mes/module/mes/guile.mes: Likewise.
	* mes/module/mes/lalr.mes: Likewise.
	* mes/module/mes/lalr.scm: Likewise.
	* mes/module/mes/let.mes: Likewise.
	* mes/module/mes/match.mes: Likewise.
	* mes/module/mes/match.scm: Likewise.
	* mes/module/mes/mescc.mes: Likewise.
	* mes/module/mes/misc.mes: Likewise.
	* mes/module/mes/module.mes: Likewise.
	* mes/module/mes/optargs.mes: Likewise.
	* mes/module/mes/optargs.scm: Likewise.
	* mes/module/mes/peg.mes: Likewise.
	* mes/module/mes/peg/cache.scm: Likewise.
	* mes/module/mes/peg/codegen.scm: Likewise.
	* mes/module/mes/peg/simplify-tree.scm: Likewise.
	* mes/module/mes/peg/string-peg.scm: Likewise.
	* mes/module/mes/peg/using-parsers.scm: Likewise.
	* mes/module/mes/pmatch.mes: Likewise.
	* mes/module/mes/pmatch.scm: Likewise.
	* mes/module/mes/posix.mes: Likewise.
	* mes/module/mes/pretty-print.mes: Likewise.
	* mes/module/mes/pretty-print.scm: Likewise.
	* mes/module/mes/psyntax-0.mes: Likewise.
	* mes/module/mes/psyntax-1.mes: Likewise.
	* mes/module/mes/psyntax.mes: Likewise.
	* mes/module/mes/psyntax.pp: Likewise.
	* mes/module/mes/psyntax.ss: Likewise.
	* mes/module/mes/quasiquote.mes: Likewise.
	* mes/module/mes/quasisyntax.mes: Likewise.
	* mes/module/mes/quasisyntax.scm: Likewise.
	* mes/module/mes/repl.mes: Likewise.
	* mes/module/mes/scm.mes: Likewise.
	* mes/module/mes/syntax.mes: Likewise.
	* mes/module/mes/syntax.scm: Likewise.
	* mes/module/mes/test.mes: Likewise.
	* mes/module/mes/tiny-0.mes: Likewise.
	* mes/module/mes/type-0.mes: Likewise.
	* mes/module/mescc/M1.mes: Likewise.
	* mes/module/mescc/as.mes: Likewise.
	* mes/module/mescc/bytevectors.mes: Likewise.
	* mes/module/mescc/compile.mes: Likewise.
	* mes/module/mescc/i386/as.mes: Likewise.
	* mes/module/mescc/info.mes: Likewise.
	* mes/module/mescc/mescc.mes: Likewise.
	* mes/module/mescc/preprocess.mes: Likewise.
	* mes/module/nyacc/lalr.mes: Likewise.
	* mes/module/nyacc/lang/c99/cpp.mes: Likewise.
	* mes/module/nyacc/lang/c99/parser.mes: Likewise.
	* mes/module/nyacc/lang/c99/pprint.mes: Likewise.
	* mes/module/nyacc/lang/calc/parser.mes: Likewise.
	* mes/module/nyacc/lang/util.mes: Likewise.
	* mes/module/nyacc/lex.mes: Likewise.
	* mes/module/nyacc/parse.mes: Likewise.
	* mes/module/nyacc/util.mes: Likewise.
	* mes/module/rnrs/arithmetic/bitwise.mes: Likewise.
	* mes/module/srfi/srfi-0.mes: Likewise.
	* mes/module/srfi/srfi-1.mes: Likewise.
	* mes/module/srfi/srfi-1.scm: Likewise.
	* mes/module/srfi/srfi-13.mes: Likewise.
	* mes/module/srfi/srfi-14.mes: Likewise.
	* mes/module/srfi/srfi-16.mes: Likewise.
	* mes/module/srfi/srfi-16.scm: Likewise.
	* mes/module/srfi/srfi-26.mes: Likewise.
	* mes/module/srfi/srfi-26.scm: Likewise.
	* mes/module/srfi/srfi-43.mes: Likewise.
	* mes/module/srfi/srfi-8.mes: Likewise.
	* mes/module/srfi/srfi-9.mes: Likewise.
	* mes/module/srfi/srfi-9/gnu.mes: Likewise.
	* mes/module/sxml/xpath.mes: Likewise.
	* mes/module/sxml/xpath.scm: Likewise.
	* module/mes/mes-0.scm: Likewise.
	* build-aux/build-guile.sh: Update for new layout.
	* build-aux/build-mes.sh: Likewise.
	* build-aux/check-boot.sh: Likewise.
	* build-aux/check-mescc.sh: Likewise.
	* install.sh: Likewise.
	* scaffold/boot/51-module.scm: Likewise.
	* scaffold/boot/52-define-module.scm: Likewise.
	* scripts/mescc: Likewise.
	* src/mes.c: Likewise.
	* tests/base.test-guile: Likewise.
	* tests/boot.test: Likewise.
	* tests/srfi-9.test: Likewise.
	* mes/include: New symlink.
	* mes/lib: New symlink.
	* AUTHORS: Update file names.

	core: typo: Remove trailing 1.
	* include/alloca.h: typo: Remove trailing 1.

2018-07-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add missing copyright header.  Thanks, Mike!
	* guile/gc.c: Add missing copyright header.  Thanks, Mike!

2018-07-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: mes: Updatee to 0.16.1.
	* guix.scm (mes): Update to 0.16.1.
	  (mes.git): Likewise.

2018-07-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Release 0.16.1
	* configure (VERSION): Bump to 0.16.1.

	doc: Release update.
	* BOOTSTRAP: Update.
	* HACKING: Update.
	* INSTALL: Update.
	* NEWS: Update.
	* README: Update.
	* scaffold/tests/23-pointer.c: Add (janneke) to copyright line.
	* doc/images/gcc-mesboot-graph.png: Update.
	* doc/mes.texi (The Mes Bootstrap Process): Describe update.

	build: setup-mes.sh: Cater for Debian/stretch too.  Thanks, pdewacht!
	* build-aux/setup-mes.sh: Cater for Debian/stretch too.  Thanks,
	  pdewacht!

	core: Fix segfault on Debian/strectch.  Thanks, pdewacht!
	* src/posix.c (execl_): Typo in initialization.  Fixes segfault on
	  Debian/strectch.  Thanks, pdewacht!

	doc: Add html, pdf.
	* GNUmakefile (html, pdf): New target.
	* .gitignore: Ignore html, pdf targets.

	doc: Remarks from Rutger.
	* doc/mes.texi: Remarks from Rutger.

	doc: Further work.
	* doc/images/gcc-mesboot-graph.png: New file.
	* install.sh: Install it.
	* doc/mes.texi (The Mes Bootstrap Process): Show it.
	  (Bootstrapping): Add missing Mes direntry.
	  (Running the Test Suites): Fix example.
	  Fix typos.

	build: Handle CFLAGS, CPPFLAGS for Debian.

	build: Have configure create a git archive.
	* configure: Create git archive if necessary.

	build: Use GNU style lower case directory configure variable naming.
	* GNUmakefile: Use GNU style lower case directory configure variable naming.
	* HACKING: Likewise.
	* INSTALL: Likewise.
	* build-aux/build-cc.sh: Likewise.
	* build-aux/build-cc32.sh: Likewise.
	* build-aux/cc-mes.sh: Likewise.
	* build-aux/cc.sh: Likewise.
	* build-aux/cc32-mes.sh: Likewise.
	* build-aux/export.make: Likewise.
	* build-aux/setup-mes.sh: Likewise.
	* build.sh: Likewise.
	* check.sh: Likewise.
	* configure: Likewise.
	* doc/mes.texi: Likewise.
	* install.sh: Likewise.
	* scripts/mescc: Likewise.

	build: Support Debian build, install.
	* scripts/mescc: Support Debian build, install.
	* lib/libmes.c (fdgetc): Allow Nyacc/ungetc conflict.
	* build-aux/export.make (ARCH): Export.
	* build-aux/build-mes.sh: Disable full build for non-bootstrap
	  x86-only.
	* check.sh (total): Use bash to invoke build-aux/check-mescc.sh.
	* build-aux/build-guile.sh (SCM_FILES): Support guile-2.0.
	* module/mes/guile.scm (guile-2.0): Support guile-2.0.
	* build-aux/build-mes.sh: Use bash.
	* build-aux/setup-mes.sh: New file.

	mescc: Be sure to exit upon system* failure.
	* module/mescc/mescc.scm (assert-system*): New function.
	  (M1->hex2, hex2->elf, M1->blood-elf): Use it.

	build: Support $DESTDIR.
	* build-aux/export.make: export DESTDIR.
	* install.sh: Support $DESTDIR.

	build: Build and install manual pages.
	* build-aux/export.make: New file.
	* GNUmakefile (man): New target.
	  (doc): Depend on man.
	  include build-aux/export.make, remove exports.
	* guix.scm (mes): Add dependency on help2man.
	* configure: Check for help2man.
	* install.sh: Install manual pages if built.

	doc: Initial version.
	* doc/mes.texi: New file.
	* doc/fdl-1.3.texi: New file.
	* AUTHORS: Mention it.
	* GNUmakefile (doc, info, install-info): New targets.
	* install.sh: Install info if available.
	* guix: (mes): Add texinfo to native-inputs.
	* configure: Check for makeinfo.

2018-06-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: mescc-tools: Update to 0.5.1.
	* guix.scm (mescc-tools): Update to 0.5.1.

	guix: Oops, fix nyacc-for-mes checksum.  Thanks, pdewacht!
	* guix.scm (nyacc-for-mes): Fix checksum.

	guix: Update mes to 0.16.
	* guix.scm (mes): Update to 0.16.
	  (mes.git): Likewise.

2018-06-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	Release 0.16.
	* configure (VERSION): Bump to 0.16.

2018-06-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Release update.
	* BOOTSTRAP: Update.
	* HACKING: Update.
	* INSTALL: Update.
	* NEWS: Update.
	* README: Update.
	* doc/ANNOUNCE-0.16: New file.

2018-06-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Fix compile warnings.
	* lib/libmes.c: Fix warning.
	* src/posix.c (execl_): Fix warning, add debug printing.

	core: execl_: Allow 1000 arguments.
	* src/posix.c (execl_): Allow 1000 arguments.

2018-06-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support binutils 2.10.1: strrchr: Stop at start of string.
	* lib/libc+tcc.c (strrchr): Stop at start of string.
	* scaffold/tests/88-strrchr.c: Test it.
	* build-aux/check-mescc.sh (tests): Run it.

	build: Support tcc, create tinycc-seed with tcc.
	* configure: check for tcc.
	* build-aux/cc32-mes.sh: Rename from cc-mes-gcc.sh.  Support
	  tcc.  Update users.
	* build-aux/build-cc32-mes.sh: Rename from build-mes-gcc.sh.  Update users.
	* GNUmakefile (mes-tcc): New target.
	* .gitignore: Ignore mes-tcc arch output.
	* lib/crt1.c (_start): Add "rm" constraint so satisfy tcc.
	* lib/linux-gcc.c (_sys_call, _sys_call1 _sys_call2 _sys_call3): Likewise.

2018-06-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support glibc-2.2.5: header tweaks.
	* include/sys/types.h [__PTRDIFF_T]: Extra guard for ptrdiff_t.
	  [__SIZE_T]: Extra guard for size_t.
	* include/stdlib.h: Include alloca; remove alloca prototype,
	* include/errno.h: Add E2BIG.

2018-06-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support binutils 2.20.1: vfprint, vsprintf: %llx.
	* lib/libc+tcc.c (vfprintf, vsprintf): Handle %%llx.  Print error:
	  should we skip another int, va_arg a long long?

2018-06-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support binutils 2.14: vfprint, vsprintf: %12.10d.
	* lib/libc+tcc.c (vfprintf, vsprintf): Handle %12.10d.
	* scaffold/tests/70-printf.c: Test it.

2018-06-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support gnu toolchain: libtcc1.
	* lib/libtcc1.c: New file.
	* lib/libc+tcc-gcc.c: Remove libtcc1 stubs.

	mescc: Support binutils-2.20.1a: header tweaks.
	* include/signal.h: Include sys/types.h; remove type declaration copies.
	* include/stdarg.h: Likewise.
	* include/stdio.h: Likewise.
	* include/stdlib.h: Likewise.
	* include/unistd.h: Likewise.

2018-06-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support Tinycc 0.9.27: Drop dlclose, dlopen.
	* lib/libc+tcc.c (dlclose, dlopen): Remove.
	* include/dlfcn.h (RTLD_DEFAULT): Add.

	core: Resurrect dump-tiny.
	* src/reader.c (dump): Resurrect dump-tiny.

	core: Resurrect loading of boot-0.32-mo.

2018-06-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support binutils 2.25: fseek: Add debug printing.
	* lib/libc+tcc.c (fseek): Add debug printing.

	mescc: Tinycc support: bcopy: Do not return void.
	* lib/m4.c (bcopy): Do not return void.  Helps tcc.

	mescc: Support binutils 2.25: memcmp: Support size 0.
	* lib/libc+tcc.c (memcmp): Support size 0.

	mescc: Support binutils 2.25: vsscanf: Skip `l'.
	* lib/libc+tcc.c (vsscanf): Skip `l'.

	mescc: Debugging oops.
	* lib/libc.c (__mes_debug): Oops, wrong direction.

2018-06-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support binutils 2.15a: fread: read ungetc'd chars too.
	* lib/libmes.c (_ungetc_fd): New variable.
	  (fdgetc): Use it.
	  (_fdungetc_p): New function.
	* lib/libc+tcc.c (_fungetc_p): New function.
	* lib/libc+tcc.c (fread): Use it to read ungetc'd chars too.

	mescc: Add another fopen test.
	* scaffold/tests/98-fopen.c: New file.
	* build-aux/check-mescc.sh (tests): Add it.
	* AUTHORS: Mention it.

	mescc: Add fopen test.
	* scaffold/tests/97-fopen.c: New file.
	* build-aux/check-mescc.sh (tests): Run it.
	* include/unistd.h (link): Declare.

	mescc: Support binutils-2.14: fopen: Return 0 upon failure.
	* lib/libc+tcc.c (fopen): Return 0 upon failure.

2018-06-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Update elf32-header for linux-4.17.
	Previously, our binaries showed this

	    $ readelf -s scaffold/main.mes-out
	    There are 2 program headers, starting at offset 64

	    Program Headers:
	      Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
	      LOAD           0x000000 0x01000000 0x01000000 0x0557c 0x0557c RWE 0x1
	      LOAD           0x000000 0x01000000 0x01000000 0x0557c 0x0557c RWE 0x1

	     Section to Segment mapping:
	      Segment Sections...
	       00     .text .data
	       01     .text .data

	Linux-4.17 refuses to run this and says

	    Uhuuh, elf segment at 0000000001000000 requested but the memory is mapped already
	    Segmentation fault

	* lib/x86-mes/elf32-header.hex2: Remove unused data program header.

2018-06-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: make seed: Update mescc-tools-seed too.

	guix: mescc-tools: Update to 0.5.
	* guix.scm (mescc-tools): Update to 0.5.

	Update for mescc-tools-0.5.
	* build-aux/build-mes.sh (HEX2FLAGS): Remove = from flags.
	* build.sh (HEX2FLAGS): Likewise.
	* module/mescc/mescc.scm (hex2->elf): Likewise.

2018-06-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Update mes to 0.15.
	* guix.scm (mes): Update to 0.15.
	  (mes.git): Likewise.

2018-06-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	Release 0.15.
	* configure (VERSION): Bump to 0.15.

2018-05-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Release udpate.
	* BOOTSTRAP: Update.
	* HACKING: Update.
	* NEWS: Update.
	* README: Update.
	* doc/ANNOUNCE-0.15: New file.

2018-06-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Resurrect non-bootstrap build.
	* configure (parse-opts): Support mixing VAR=VALUE --prefix=PREFIX.
	* guix.scm (mes): Remove setting PREFIX in make-flags.
	* install.sh: Cater for Guix's setting read-only of scripts/diff.scm.

2018-06-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support less-patched tcc/gcc: Add crti and crtn.
	* lib/crt0.c[__MESC__]: Support MesCC.
	* lib/crti.c: New file.
	* lib/crtn.c: New file.
	* build-aux/build-mes-gcc.sh: Build them.

	mescc: Refactor debug and stub printing.
	* lib/libc.c (__mes_debug): New function.  Use it for debug printing
	  and in stubs throughout.

	mescc: Support binutils-2.30: fopen fix.
	* lib/libc+tcc.c (fopen): Set O_APPEND for 'a'.

2018-06-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support binutils-2.30.
	* lib/binutils.c (raise, strdup): New function.
	  (mbstowcs): New stub.
	* include/fcntl.h (O_APPEND, FD_CLOEXEC): New define.

	mescc: Support binutils-2.10.1: Stubs set errno to 0.

	mescc: Silence some stubs.
	* lib/libc+tcc.c: [!NOISY_FLOATS, !NOISY_TIMES]: Silence stubs.
	* lib/gcc.c: Likewise.
	* lib/binutils.c: Likewise.

2018-06-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Add debug printing: fopen, fwrite.
	* lib/libc+tcc.c (fopen, fwrite)[MESC_DEBUG]: Print debug info.

	mescc: Support binutils-2.10.1: opentype `r+'.
	* lib/libc+tcc.c (fopen): Support opentype `r+'.

2018-06-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: syscall: return only ever error -1, set errno.

2018-06-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support gcc-2.95: Add getpwnam stub.
	* lib/gcc.c (getpwnam): New stub.

	mescc: Support gcc-3.0: Implement alarm, setitimer.

	mescc: Support gcc-3.0: Implement atexit.

	mescc: Support gcc-3.0: Implement dup2, fcntl, getrusage.
	* include/sys/resource.h: New file.
	* lib/linux+gnu.c (fcntl, dup2, getrusage): New function.
	* lib/binutils.c (fcntl): Remove stub.

	mescc: Support gcc-3.2: Implement getuid, getgid.
	* lib/linux+gnu.c (getuid, getdid): New function.
	* lib/binutils.c (getuid, getdid): Remove stub.

	mescc: Support gcc-3.2: Reset errno.
	* lib/linux-gcc.c (_sys_call, _sys_call1, _sys_call2, _sys_call3):
	  Reset errno.
	* lib/linux-mes.c (__sys_call, __sys_call1, __sys_call2 ,
	  __sys_call3): Rename from _*.
	   (_sys_call, _sys_call1, _sys_call2, _sys_call3): New function.
	  Reset errno.

2018-06-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support gcc-3.2: Implement integer strto*.
	* lib/libc+tcc.c (strtoll, strtoul): Call strtoul.

	mescc: Support gcc-3.2: Add getpid, signal.
	* lib/linux+gnu.c (getpid, signal): New function.
	* include/signal.h: Declare signal.
	* include/unistd.h: Declare getpid.
	* scaffold/tests/95-signal.c: Test it.
	* build-aux/check-mescc.sh (tests): Run it.

	mescc: Support gcc-3.4.0: *printf: Support `%n'.
	* lib/libc+tcc.c (vfprintf, vsprintf): Support `%n'.  For Gcc 3.4.0.
	* scaffold/tests/70-printf.c: Test it.

	mescc: Support gcc-3.4.0: alloca.
	* lib/alloca.c: New file.
	* AUTHORS: Mention it.
	* lib/libc+gnu.c: Add it.
	* include/stdlib.h: Declare alloca.

	mescc: Support gcc-3.4.0: unsetenv.
	* lib/gcc.c (unsetenv): New function.

	mescc: Support gcc-3.2: Add __divdi3, __moddi3 stubs.
	* lib/gcc.c (__divdi3, __moddi3): New stubs.

	mescc: Support gcc-3.2: puts with newline.
	* lib/libc-mini.c (oputs): Rename from puts.
	  (puts): New function: Add newline.

	mescc: Support binutils-2.10.1.
	xx

2018-06-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support glibc-1.06.4.
	* lib/glibc.c: New file.
	* lib/libc+gnu.c: Include it.

2018-06-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support gcc-2.6.3.
	* TODO

2018-05-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support binutils-2.5.1.
	* include/stdint.h: #undef types before typedef'ing them.
	* include/sys/types.h: Likewise.
	* include/string.h (NULL): New define.
	* include/stdio.h (BUFSIZ): New define.

2018-06-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	tests: Remove tinycc-imported non-free grep test.
	* scaffold/tinycc/46_grep.c: Remove.
	* scaffold/tinycc/46_grep.expect: Remove.

2018-05-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Implement fflush, sscanf, vsscanf.
	* lib/libc+tcc.c (vsscanf): New function.
	  (sscanf): Use it.
	  (fflush): Remove stub notice; we have no buffering.
	* include/stdarg.h: Declare it.
	* scaffold/tests/87-sscanf.c: Test it.
	* build-aux/check-mescc.sh (tests): Run it.

2018-05-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Use arch-dir.
	* lib/x86-mes: Move from stage0.
	* build-aux/build-cc.sh: Create libraries in lib/gcc.  Update users.
	* build-aux/build-mes.sh: Create libraries in lib/x86-mes.  Update users.
	* build-aux/build-mes-gcc.sh: Rename from build-mlibc.sh.  Create
	  libraries in lib/x86-mes-gcc.  Update callers.
	* build-aux/cc-mes-gcc.sh: Rename from cc-mlibc.sh.  Update callers.

	mlibc: Implement strstr.
	* lib/libc+tcc.c (_memmem, memmem): New function.  Import from GNU
	  LilyPond.
	  (strstr): Implement using memmem.
	* include/string.h (_memmem, memmem): Declare.
	* AUTHORS: Add Han-Wen Nienhuys.

	mlibc: Implement ftell, fseek.
	* lib/libc+tcc.c (ftell, fseek): Implement.

	mlibc: Cleanup.

2018-05-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: m4 support: WIP

2018-05-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Refactor boot-0 loading.
	* src/mes.c (load_boot): New function.
	  (load_env): Use it.

2018-05-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Out of the box Geiser support.
	* .dir-locals.el: New file.  Out of the box Geiser support for mescc.

2018-05-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Posixify interface.
	* module/mescc/compile.mes: Move from language/c99/compiler.mes.
	* module/mescc: New module..
	* module/mescc/M1.scm: Move from mes/M1.mes.
	* module/mescc/as.scm: Likewise.
	* module/mescc/bytevectors.scm: Likewise.
	* module/mescc/mescc.scm: New file.
	* scripts/mescc: Update to new layout and posixy interface.
	* GNUmakefile: Likewise.
	* build-aux/build-cc.sh: Likewise.
	* build-aux/build-guile.sh: Likewise.
	* build-aux/build-mes.sh: Likewise.
	* build-aux/build-mlibc.sh: Likewise.
	* build-aux/cc-mes.sh: Likewise.
	* build-aux/cc-mlibc.sh: Likewise.
	* build-aux/cc.sh: Likewise.
	* build-aux/check-mescc.sh: Likewise.
	* build-aux/test.sh: Likewise.
	* build.sh: Likewise.
	* .gitignore: Update for posixy extensions.

2018-05-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Add drop, drop-right.
	* module/srfi/srfi-1.mes (drop, drop-right): New function.

2018-05-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "fork/exec: debug."
	This reverts commit f0315ac0d9acd66a30dbb192334f443459b7ed16.

	fork/exec: debug.

2018-05-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Support fork, waitpid, execve.
	* stage0/x86.M1 (SYS_fork, SYS_waitpid, SYS_execve): New define.
	* lib/linux-gcc.c (fork, waitpid, execve): New function.
	* lib/linux-mes.c (fork, waitpid, execve): New function.
	* lib/libc.c (wait): New function.
	* include/unistd.h (fork, execve): Declare.
	* include/sys/wait.h (waitpid, wait): Declare.
	* module/mes/posix.mes (search-path, execlp, system*, waitpid): New function.
	* src/posix.c (primitive_fork, execl): New function.

2018-05-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Oops, alignment.
	* module/mes/M1.mes (object->M1): Oops, alignment: only add alignment
	  when not aligned.

2018-05-26  Jeremiah Orians  <jeremiah@pdp10.guru>

	mescc: Add fopen.
	* lib/libc+tcc.c (fopen)[!POSIX]: Remove stub.
	* lib/libc.c (fopen)[!POSIX]: New function.
	* AUTHORS: Add Jeremiah.

2018-05-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Remove function declarations from M1.
	* module/language/c99/compiler.mes (info->object): Remove function
	  declarations.

	build: Check for mes-seed, tinycc-seed.
	* configure: Check for guile-tools, mes-seed, tinycc-seed.  Bugfix:
	  Add cwd to load path.

2018-05-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: mes: Update to 0.14.
	* guix.scm (mes): Update to 0.14.
	  (mes.git): Likewise.

2018-05-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Add nyacc-for-mes.
	* guix.scm (nyacc-for-mes): New variable.

2018-05-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	Release 0.14.
	* configure (VERSION): Bump to 0.14.

2018-05-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Release udpate.
	* BOOTSTRAP: Update.
	* HACKING: Update.
	* NEWS: Update.
	* README: Update.
	* doc/ANNOUNCE-0.14: New file.

2018-05-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: Handle short struct initializer.
	* module/language/c99/compiler.mes (array-init-element->data): Handle
	  short struct initializer.

2018-05-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Align global data.
	* module/mes/M1.mes (object->M1): Align globals.

2018-05-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: strncpy.
	* lib/libc+tcc.c (strncpy): New function.
	* scaffold/tests/86-strncpy.c: Test it.
	* build-aux/check-mescc.sh (tests): Run it.
	* build-aux/cc-mlibc.sh (LIBC): Acknowlegde.
	* build-aux/test.sh (LIBC): Export it.

2018-05-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	tinycc: Add stubs: __fixdfdi, __fixxfdi, __fixsfdi.
	* lib/libc+tcc-gcc.c (__fixdfdi, __fixxfdi, __fixsfdi): New stub.

2018-05-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	tinycc: Add stubs: __floatundixf __fixunsxfdi.
	* lib/libc+tcc-gcc.c (__floatundixf, __fixunsxfdi): New stub.

	mescc: Tinycc support: workaround for tcc; this breaks: Structured type with char or short on heap.
	* module/language/c99/compiler.mes (int->bv): Always use 32bit byte
	  vector.

2018-05-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: Structured type with char or short on heap.
	* module/language/c99/compiler.mes (int->bv): New function.
	  (init->data): Use it.  Add parameter.  Update callers.
	  (array-init->data): Add type parmeter.
	  (array-init-element->data): Likewise.
	* module/mes/bytevectors.mes (bytevector-u8-set!): New function.
	* module/mes/bytevectors.scm (mes): Export it.
	* module/mes/as.mes (int->bv8): New function.

2018-05-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Fix size ERROR message.
	* module/language/c99/compiler.mes (expr->accu): Fix size ERROR message.

	mescc: Fix itoa.
	* lib/libc.c (itoa): Use function-static buffer.  Increase to 12 to
	  handle INT_MIN.
	  (itoab): Likewise.

2018-05-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: Export nested struct definitions.
	* module/language/c99/compiler.mes (struct-field): Support nested,
	  named and anonymous enums.
	  (field->info): New function.
	  (type->info): Use it to reap nestedly defined enums, structs, unions.
	  (decl->info): Likewise.
	* scaffold/tests/t.c: Test it.

	mescc: Tinycc support: Unsigned comparison.
	* stage0/x86.M1 (ja32, jae32, jb32, jbe32): New macro.
	* module/mes/as-i386.mes (i386:jump-a, i386:jump-ae, i386:jump-b,
	  i386:jump-be): Use it in new function.
	* module/mes/as-i386.scm: Export them.
	* module/language/c99/compiler.mes (test-jump-label->info): Use them to
	  support unsigned comparison.
	* scaffold/tests/7s-unsigned-compare.c: Test it.
	* build-aux/check-mescc.sh (tests): Run it.

2018-05-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: Char and short sign extend.
	* module/mes/as-i386.mes (i386:accu*n->local, i386:byte-accu->local+n,
	  i386:word-accu->local+n): Remove.
	  (i386:byte-accu, i386:signed-byte-accu, i386:word-accu,
	  i386:signed-word-accu): New function.
	* module/mes/as-i386.scm: Export them.
	* module/language/c99/compiler.mes (accu->local+n-text): Simplify.
	  (mem->accu, convert-accu): New function.
	  (expr->accu): Use them.
	* stage0/x86.M1 (mov____%al,0x32(%ebp), mov____%al,0x8(%ebp),
	  mov____%ax,0x32(%ebp), mov____%ax,0x8(%ebp), movzbl_0x32(%ebp),%eax,
	  movzbl_0x8(%ebp),%eax, movzwl_0x32(%ebp),%eax,
	  movzwl_0x8(%ebp),%eax): Deprecate.
	* scaffold/tests/7r-sign-extend.c: Test it.
	* build-aux/check-mescc.sh (tests): Run it.

2018-05-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: string->number: Support upper case hex.
	* module/mes/scm.mes (string->number): Support upper case hex.

2018-05-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: Minimal float support.
	* lib/libc+tcc.c (ldexp, strtod, strtof, strtold): New stub.
	* include/math.h (ldexp): Declare.
	* include/stdlib.h (strtod, strtof, strtold): Declare.
	* module/mes/scm.mes (string->number): Minimal float support.
	  (inexact->exact): New function.
	* tests/math.test ("string->number"): Test it.
	* module/language/c99/compiler.mes (ast->type): Handle float type.
	  (type->info): Likewise.
	  (cstring->int): Rename from cstring->number.  Update callers.
	  (cstring->float): New function.
	  (expr->accu): Use it.

2018-05-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: Switch with heterogeneous body, non-last default.
	* module/language/c99/compiler.mes (switch->info): New function.
	  (ast->info): Use it for switch.
	  (clause->info, statements->clauses): Remove.
	* scaffold/tests/44-switch.c (default_first): Test it.

2018-05-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Support fold 3.
	* module/srfi/srfi-1.mes (fold): Support fold 3.

2018-05-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: Compound strings as function argument.
	* module/language/c99/compiler.mes (expr->accu): Handle compound
	  strings as function argument.
	* module/mes/M1.mes (object->M1): Call error when string not found.
	* scaffold/tests/t.c: Test it.

	mescc: Tinycc support: Update some tests.

	mescc: Tinycc support: Add __lshrdi3, __ashldi3, __ashrdi3.
	* lib/libc+tcc-gcc.c (__lshrdi3, __ashldi3, __ashrdi3): New function.

	mescc: Tinycc support: Fix sizeof interesting expressions.
	* module/language/c99/compiler.mes (ast->type): Return type for
	  sizeof-expr, sizeof-type.
	* scaffold/tests/85-sizeof.c: Test it.

2018-05-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: Support bit-fields.
	* module/language/c99/compiler.mes (struct->fields): Support bit-fields.
	  (ast->type):
	  (field-field):
	  (field-offset):
	  (expr->accu*):
	  (expr->accu):
	  (struct-field):
	  (->size):
	* module/language/c99/info.scm (<bit-field>): New type.
	* stage0/x86.M1 (and____$i32,%eax, and____(%edx),%eax,
	  mov____(%edx),%eax, or____(%edx),%eax): New macro.
	* module/mes/as-i386.mes (i386:base-mem->accu): Use
	  it.
	  (i386:accu-and, i386:accu-and-base-mem, i386:accu-or-base-mem): New
	  function.
	* module/mes/as-i386.scm: Export them.
	* scaffold/tests/7q-bit-field.c: Test it.
	* build-aux/check-mescc.sh (tests): Run it.

2018-05-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: Anonymous string array.
	* module/language/c99/compiler.mes (global->info): Anonymous string
	  array.
	  (local->info): Likewise.
	  (array-init->string): Support array of char.
	  (init-local): Likewise.
	  (->size): Fix for array.
	* scaffold/tests/4a-char-array.c: Test it.
	* build-aux/check-mescc.sh (tests): Run it.

	mescc: Tinycc support: sizeof: Bugfix for c-array.
	* module/language/c99/compiler.mes (->size): Bugfix for c-array.
	* scaffold/tests/85-sizeof.c: Test it.

	mescc: Tinycc support: Implement ((struct foo*)p)->bar.
	* module/language/c99/compiler.mes (expr->accu*):
	* scaffold/tests/7p-struct-cast.c: Test it.
	* build-aux/check-mescc.sh (tests): Run it.

2018-05-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: Implement (foo--)->bar and permutations.
	* module/language/c99/info.scm (clone): Add post field.
	  (make): Handle post parameter.
	* module/language/c99/compiler.mes (clone): Handle post parameter.
	  (expr->accu*): Set it to support foo--/foo--.
	  (expr->accu): Read it to support foo--/foo--.
	* scaffold/tests/7o-struct-pre-post.c: Test it.
	* build-aux/check-mescc.sh: Run it.

2018-05-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: Function addresses.

	mescc: Tinycc support: Numeric constant expressions.

	mescc: Tinycc support: Function variables.

	mescc: Tinycc support: Pointer typedefs.

	mescc: Tinycc support: Array typedefs.

	mescc: Tinycc support: Sizeof struct destruct.

	mescc: Tinycc support: Anonymous union initialization.

	mescc: Tinycc support: Fix for ?-operator.

	mescc: Tinycc support: Valued function assign.

2018-05-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Refactor type system: WIP
	* module/language/c99/compiler.mes (): WIP
	* module/language/c99/info.scm (): WIP

	mescc: Refactor type system: struct/enum fields: (name . <type>).
	* module/language/c99/compiler.mes (struct-field): Refactor.
	  (field:name): Update.
	  (field:pointer): Update.
	  (field:size): Update.
	  (field:type): Remove.
	  (->size): New function.

2018-05-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Refactor type system: introduce <array>, <pointer>, <var>.
	* module/language/c99/info.scm (<array>, <pointer>, <var>): New type.
	* module/language/c99/compiler.mes (ast-><type>): New function.
	  (ast-type): Use it.

2018-05-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Refactor variable declaration.
	* module/language/c99/compiler.mes (decl->info): Refactor.

	mescc: Handle sizeof expression.
	* module/language/c99/compiler.mes (expr->accu): Handle sizeof
	  expression.
	* scaffold/tests/85-sizeof.c: Test it.

	mescc: Handle struct field lists.
	* module/language/c99/compiler.mes (struct-field): Return list of
	  fields.  Update callers.
	* scaffold/tests/84-struct-field-list.c: Test it.
	* build-aux/check-mescc.sh (tests): Add it.

2018-05-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support heterogeneous variable init.
	* module/language/c99/compiler.mes (decl->info): Support heterogeneous
	  variable init.
	* scaffold/tests/83-heterogenoous-init.c: Test it.
	* build-aux/check-mescc.sh (tests): Add it.

	mescc: Handle (Skip) global static.
	* module/language/c99/compiler.mes (decl->info): Handle (Skip) global
	  static.
	* scaffold/tests/48-global-static.c: Test it.

	mescc: Support functions in expression.
	* module/language/c99/info.scm (<function>): New type.
	* module/language/c99/compiler.mes (ast->type): Support function.
	  (expr->type-size): Likewise.
	  (expr->type): Likewise.
	  (expr->accu*): Likewise.
	  (function->info): Create <function>.
	* module/mes/M1.mes (object->M1): Grok <function>.
	* scaffold/tests/47-function-expression.c: Test it.
	* build-aux/check-mescc.sh: Add it.

	mescc: Support function-static variables.
	* module/language/c99/info.scm (make): Add statics field.
	  (<global>): Add name and function fields.  Update callers.
	  (global->string): New function.
	* module/mes/M1.mes (object->M1): Update.
	* module/language/c99/compiler.mes (clone): Add statics field.
	  (ident->accu): For <global>, use global in text (WAS: name).
	  (ident-address->accu): Likewise.
	  (ident-address->base): Likewise.
	  (decl-local->info): New function.
	  (decl->info): New function.
	  (ast->info): Use them.
	  (function->info): Keep globals in object (WAS: global:value only).
	* scaffold/tests/46-function-static.c: Test it.

2018-05-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Add unfold.
	* module/srfi/srfi-1.mes (unfold): New function.

	mes: Add const.
	* module/mes/scm.mes (const): New function.
	* tests/scm.test ("const"): Test it.

2018-05-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Add logxor.
	* src/math.c (logxor): New function.
	* tests/math.test ("logxor"): Test it.

	mes: string-join: Support optional delimiter, support grammar.
	* module/srfi/srfi-13.mes (string-join): Support optional infix and
	  grammar.
	* tests/srfi-13.test ("string-join"): Test it.

	core: reader: Support binary #b101.
	* src/reader.c (reader_read_binary): New function.
	  (reader_read_hash): Use it.
	* tests/scm.test ("binary"): Test it.

2018-05-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Support srfi-9-gnu.
	* module/srfi/srfi-9/gnu.mes: New file.  Support srfi-9-gnu.
	* tests/srfi-9.test: Test it.
	* tests/srfi-9.test-guile:

2018-04-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Have core:eval expand macros.
	* src/mes.c (core:eval-expand): Remove
	  (core:eval-expanded): New variable.
	  (eval_apply): Have core:eval expand macros; core:eval-expanded evals
	  expanded sexps.

2018-04-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "core: Remove pmatch-car, pmatch-cdr hack."
	This reverts commit be1e84624ea4a158173f34af923e3c4a3793412a.

2018-04-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Remove pmatch-car, pmatch-cdr hack.
	* src/mes.c (scm_vm_eval_pmatch_car, scm_vm_eval_pmatch_cdr): Remove
	  (eval_apply): Remove cell_vm_eval_pmatch_car,
	  cell_vm_eval_pmatch_cdr hack.
	  (mes_symbols): Remove cell_symbol_pmatch_car, cell_symbol_pmatch_cdr.
	* scaffold/mini-mes.c: Likewise.
	* module/mes/guile.scm (mes): Remove pmatch-car, pmatch-cdr.
	* module/mes/pmatch.scm (ppat): Use plain car, cdr.

2018-05-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Do not assume /bin/sh, basename/dirname.
	* install.sh: Do not assume /bin/sh, basename/dirname.
	* scripts/diff.scm: Likewise.

	build: Build mini-libc and libc+tcc-gcc too.
	* include/getopt.h[__GNUC__ && POSIX]: Only use include_next.
	* lib/libc+tcc-gcc.c[POSIX](longjmp, setjmp, __udivdi3, __umoddi3):
	  Remove.
	* build-aux/build-cc.sh: Build mini-libc-gcc and libc+tcc-gcc too.
	* build-aux/build-mlibc.sh: Build mini-libc-gcc too.

	boot: Bugfix for diff on mes.
	* scripts/diff.scm (diff-files): Rename from diff; Avoids name clash
	  with module to allow using -e '(<module>)' hack.

	build: Install naive diff.
	* scripts/diff.scm: Move from build-aux.
	* install.sh: Install it.
	* build-aux/tests.sh: Update location.

2018-05-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Update configure.
	* configure: Update.

2018-05-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Remove debugging.
	* module/mes/module.mes (mes-load-module-env): Remove debugging.

2018-05-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Use ../mes-seed/refresh.sh, ../tinycc-seed/refresh.sh.
	* GNUmakefile (seed): Use ../mes-seed/refresh.sh, ../tinycc-seed/refresh.sh.

2018-05-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Guile fixes.
	* scripts/mescc: Set GODIR.  Add module as expression to Mes
	  invokation.  Remove explicit (second) call to main.

2018-05-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Use diff -ub for tinycc tests.
	* build-aux/diff.scm: Support -b.
	* build-aux/test.sh: Use it.

2018-05-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	check: Also test with i686-unknown-linux-gnu-gcc.
	* check.sh (CC32): New variable.
	* build-aux/test.sh: Also test with CC32.o

2018-05-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: configure: Handle VAR=VALUE.  Update help.
	* configure: Handle VAR=VALUE.  Update help.

2018-05-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Fixes for Debian and /bin/sh == dash.
	* build.sh: Use separate export stanzas.  Use command -v (WAS: type
	  -p).  Fixes sh, /bin/sh == dash.
	* build-aux/build-cc.sh: Likewise.
	* build-aux/build-guile.sh: Likewise.
	* build-aux/build-mes.sh: Likewise.
	* build-aux/build-mlibc.sh: Likewise.
	* build-aux/cc-mes.sh: Likewise.
	* build-aux/check-mescc.sh: Likewise.
	* check.sh: Likewise.
	* install.sh: Likewise.
	* scripts/mescc: Likewise.

	build: Rebuild after build from seed.
	* build-aux/build-mes.sh: Rebuild after build from seed.

	mescc: Use file-name as global prefix.
	* module/mes/M1.mes (object->M1): Add file-name parameter.

2018-05-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Fixes for int-max, int-min.
	* src/math.c (greater_p): Fix INT_MAX > 0.
	  (less_p): Fix INT_MIN < 0.
	* tests/math.test ("< INT-MIN"): Test it.
	  ("< INT-MAX"):
	  ("> INT-MAX"):
	  ("> INT-MAX 0"):
	  ("> INT-MIN"):
	* tests/srfi-13.test ("string->number INT-MAX"): Test it.
	  ("string->number INT-MIN"):
	  ("number->string INT-MAX"):
	  ("number->string INT-MIN"):
	* scaffold/tests/60-math.c (test): Test it.

	mescc: Fix dumping of strings > M1_STRING_MAX.
	* module/mes/M1.mes (object->M1): Skip opening quote.

2018-04-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "core: length: Check parameter."
	This reverts commit 1f52ed35c66febcce16e06868e803a39be7eda41.

	core: length: Check parameter.
	* src/mes.c (length): Check parameter.

2018-05-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: enable all tests, use expect count, add tinycc tests.
	* build-aux/check-mescc.sh (tests): Add tinycc tests.
	* build-aux/diff.scm: Naive diff for tinycc tests.
	* build-aux/test.sh: Run diff when .expect found.

2018-04-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Simplify, drop make.scm experiment.
	* build.sh: Rewrite.
	* build-aux/build-cc.sh: New file.
	* build-aux/build-mes.sh: New file.
	* build-aux/build-mlibc.sh: New file.
	* build-aux/cc.sh: New file.
	* build-aux/cc-mes.sh: New file.
	* build-aux/cc-mlibc.sh: New file.
	* install.sh: Update.
	* make.scm: Remove.
	* guile/guix/make.scm: Remove.
	* guile/guix/records.scm: Remove.
	* guile/guix/shell-utilsg.scm: Remove.

2018-04-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Use length__.
	* src/mes.c (check_formals): Use length__.

2018-04-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes-snarf: Support running with Mes.
	* build-aux/mes-snarf.scm: Support running with Mes.

	mes: Support -C and -L for Guile compatibility.
	* module/mes/boot-0.scm): Support -C and -L for Guile compatibility.

	mes: Support -e,--main option.
	* module/mes/boot-0.scm: Support -e,--main option.

	mes: Upgrade Guile module support.
	* module/mes/boot-0.scm (define-module): New macro with minimal Guile support.
	  (use-modules): New macro.

	mes: Add srfi-8.
	* module/srfi/srfi-8.mes: New file.

	mes: string-join: Handle empty list.
	* module/mes/boot-0.scm (string-join): Handle empty list.

	mes: Add basename.
	* module/mes/posix.mes (basename): New function.

	mes: Add delete-duplicates.
	* module/srfi/srfi-1.mes (delete-duplicates): New function.

	mes: filter-map: Handle two lists.
	* module/srfi/srfi-1.mes (filter-map): Handle two lists, add error
	  when called with three or more.

	mes: Add string-replace.
	* module/srfi/srfi-13.mes (string-replace): New function.
	* tests/srfi-13.test ("string-replace"): Test it.

	mes: Add string-map.
	* module/srfi/srfi-13.mes (string-map): New function.
	* tests/srfi-13.test ("string-map"): Test it.

	mes: Add string-trim, string-trim-right, string-trim-both.
	* module/srfi/srfi-13.mes (string-trim, string-trimn-right,
	  string-trim-both): New function.
	* tests/srfi-13.test ("string-trim"): Test it.
	  ("string-trim-right"):
	  ("string-trim-both"):

	mes: Add string-contains.
	* module/srfi/srfi-13.mes (string-contains): New function.
	* tests/srfi-13.test ("string-contains"): Test it.
	  ("string-contains not"):

	mes: string-drop: Error on negative droppings.
	* module/srfi/srfi-13.mes (string-drop, string-take,
	  string-drop-right): Error on negative droppings.
	* tests/srfi-13.test ("string-drop"): Test it.

	core: reverse!: Handle empty list.
	* src/mes.c (reverse_x_): Handle empty list.
	* tests/scm.test ("reverse! ()"): Test it.

	core: Add string ports.
	* src/mes.c (type_t): Add TPORT.
	  (scm_type_port): New symbol.
	  (PORT): New macro.
	  (MAKE_STRING_PORT): New macro.
	  (eval_apply): Handle string ports in primitive-load.
	  (mes_symbols): Add scm_type_port.
	* src/posix.c (peekchar): Handle string ports.
	  (readchar): New function.  Replace all getchar callers.
	  (unreadchar): Likewise.
	* module/mes/type-0 (port?): New function.
	* module/mes/guile.mes (with-input-from-file): Rewrite.
	  (open-input-string): Remove.
	* module/mes/guile.scm (guile): Update cell types.
	* src/gc.c (gc_loop): Support TPORT.
	* src/lib.c (display_helper): Support TPORT.
	* module/mes/display.mes (display): Support TPORT.

	mes: assq, assoc-ref: Handle non-A-LISTs.
	* src/mes.c (assq): Return #f if A-LIST is not a list.
	* module/mes/scm.mes (assoc): Likewise.

	core: Use single definition rule for cell-type.
	* src/mes.c (scm_type_char, scm_type_closure, scm_type_continuation,
	  scm_type_function, scm_type_keyword, scm_type_macro,
	  scm_type_number, scm_type_pair, scm_type_ref, scm_type_special,
	  scm_type_string, scm_type_symbol, scm_type_values,
	  scm_type_variable, scm_type_vector): New symbol.
	  (mes_symbols): Add them.
	* module/mes/type-0.mes (<cell:char>, <cell:char>, <cell:closure>,
	  <cell:continuation>, <cell:function>, <cell:keyword>, <cell:macro>,
	  <cell:number>, <cell:pair>, <cell:ref>, <cell:special>,
	  <cell:string>, <cell:symbol>, <cell:values>, <cell:variable>,
	  <cell:vector>, <cell:broken-heart): Remove.
	* module/mes/boot-0.scm: Likewise.
	* module/mes/boot-01.scm: Likewise.
	* module/mes/boot-02.scm: Likewise.
	* scaffold/boot/20-define-quote.scm: Likewise.
	* scaffold/boot/37-closure-lambda.scm: Likewise.
	* scaffold/boot/38-simple-format.scm: Likewise.
	* scaffold/boot/4c-quasiquote.scm:
	* scaffold/boot/4e-string-split.scm: Likewise.
	* scaffold/boot/51-module.scm: Likewise.
	* scaffold/boot/52-define-module.scm: Likewise.
	* scaffold/boot/60-let-syntax.scm: Likewise.
	* module/mes/guile.scm: Add some of them.

	core: Fix gc_up_arena for x86_64.
	* src/gc.c (gc_): Fix gc_up_arena for x86_64.

	core: Fix compile warnings.
	* src/posix.c: Include sys/stat.h.
	  (chmod): Return cell_unspecified.
	* include/stdlib.h: Typo.

	mlibc: Declare chmod.
	* include/sys/stat.h (mode_t, chmod): Declare.

2018-04-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Update mes to 0.13.
	* guix.scm (mes): Update to 0.13.
	  (mes.git): Likewise.

2018-04-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	Release 0.13.
	* configure (VERSION): Bump to 0.13.

2018-04-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Release udpate.
	* BOOTSTRAP: Update.
	* HACKING: Update.
	* NEWS: Update.
	* README: Update.
	* doc/ANNOUNCE-0.13: New file.

2018-04-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Merge mescc.mes and mescc.scm.
	* scripts/mescc: New file.
	* scripts/mescc.mes: Remove.
	* guile/mescc.scm: Remove.
	* guile/guix/make.scm (CC.mescc): Update.
	* install.sh (TINYCC_SEED): Update.
	* make.scm (bootstrap?): Update.
	* test.sh (MES): Update.
	* check-boot.sh: Use $GUILE to allow running without Guile.

	core: Add chmod.
	* src/posix.c (chmod_): New function.

2018-04-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: jam-scaper/garbage-collector: Use only one arena.
	* src/mes.c (ARENA_SIZE): Lower to 200000.
	  (MES_MAX_ARENA): Bump to 300000000.
	  (JAM_SIZE): New global.
	  (make_cell__): Remove ARENA assert.
	  (gc_init_cells): Alloc ARENA_SIZE + JAM_SIZE.
	  (mes_symbols): Do not init news.
	  (gc_init_news): Remove.
	  (main): Initialize JAM_SIZE, consider MES_JAM environment variable.
	* src/gc.c (gc_init_news): Move from mes.c.  Start at g_free.
	  (gc_flip): Do not flip to g_news, instead copy g_news to cells.
	  (gc_up_arena): Realloc to ARENA_SIZE + JAM_SIZE.
	  (gc_): Init news.  Only up arena if g_news is safe.

2018-04-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Create less garbage when dumping M1.
	* module/mes/M1.mes (display-join): New function.
	* (object->M1): Use it.

	core: last_pair: Move to core.
	* src/lib.c (last_pair): New function.
	* module/mes/scm.mes (last-pair): Remove.

	core: equal2_p: Add short-circuit and eliminate tail call.
	* src/lib.c (equal2_p): Add short-circuit and eliminate tail call.

2018-04-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Use display for dumping M1.
	* module/mes/M1.mes (object->M1): Use display for dumping M1.

2018-04-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Guile-like command-line interface.
	* module/mes/boot-0.scm (tty?): Guile-like command-line interface.
	* scripts/repl.mes: Remove.
	* scripts/mescc.mes: Update.
	* tests/*.test: Update scripts.
	* module/mes/repl.mes (repl): Add ,quit.

	mes: getopt-long: Support stop-at-first-non-option.
	* module/mes/getopt-long.scm (process-options): Fix parsing `-'.  Add
	  parameter: stop-at-first-non-option.
	  (getopt-long): Add keyword parameter #:stop-at-first-non-option.

	mes: Add isatty?.
	* src/posix.c (isatty_p): New function.

	mlibc: Add isatty.
	* lib/libc.c (isatty): New function.
	* include/unistd.h: Declare it.

	mlibc: Add ioctl.
	* stage0/x86.M1 (SYS_ioctl): New define.
	* lib/linux-mes.c (ioctl): New syscall.
	* lib/linux-gcc.c (ioctl): New syscall.
	* include/sys/ioctl.h: New file.

2018-04-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Compile minimal mes with MES_MINI=1.
	* src/mes.c: Compile minimal mes with MES_MINI=1.

2018-04-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	core; reader_read_string: Support escaped characters.
	* src/reader.c (reader_read_string): Support escaped characters.

	Revert "mescc: Use core:write."
	This reverts commit d88e31dfec3158a830c32f9f732b052cfccac6eb.

2018-04-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Use core:write.
	* scripts/mescc.mes (source->ast): Use core:write.

2018-04-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: display: Display escaped characters.
	* module/mes/display.mes (display): Display escaped characters.

2018-04-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: display_helper: Display escaped characters.
	* src/lib.c (display_helper): Display escaped characters.

	mes: Resurrect macros in repl.
	* src/mes.c (scm_vm_begin_expand): Rename to core:begin-expand.
	 (eval_apply): Expose it.
	* module/mes/repl.mes (repl): Use it to resurrect macros.

	core: Fixes for garbage collector/jam scraper.
	* src/gc.c (gc_loop): Do not relocate car of TCLOSURE, TCONTINUATION.
	  Check for TBROKEN_HEART.
	* src/mes.c (make_closure_): Set car to 0.
	  (check_apply): Check for TBROKEN_HEART.  Fixes reporting artificial
	  out-of-memory error.
	  (eval_apply): Likewise.
	* src/vector.c (vector_entry): Only copy TCHAR and TNUMBER.

	core: drop global_p from variable.
	* src/mes (struct scm): Remove field global_p.
	 (VARIABLE_GLOBAL_P): Remove.
	 (make_variable_): Remove global_p parameter.  Update callers.
	* src/lib.c (display_helper): Drop VARIABLE_GLOBAL_P support.

	core: Reenable full printing of lists.
	* src/lib.c (display_helper): Reenable full printing of lists.

2018-04-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: append2, append_reverse, reverse, reverse!: Create less garbage.
	* src/mes.c (append_reverse): New function.
	  (reverse_x_): New function.
	  (append2): Use them to create less garbage.
	* module/mes/scm.mes (reverse): Create less garbage.
	* module/srfi/srfi-1.mes (reverse!): Rewrite, use core:reverse!.
	  (append-reverse): Remove.

	core: vector_to_list: Create less garbage.
	* src/vector.c (vector_to_list): Create less garbage.

	core: Optimize vector-map, vector-for-each.
	* module/srfi/srfi-43.mes (vector-map): Optimize.
	  (vector-for-each): Optimize.
	* tests/srfi-43.test: New file.
	* tests/srfi-43.test-guile: New file.
	* check.sh (tests): Add it.
	* make.scm (mes-tests): Add it.

2018-04-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "build-32.sh"
	This reverts commit ace8b6f1b52de58c9ab404ed13234f397dac6bdc.

2018-04-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	build-32.sh

2018-04-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Cleanup make_cell, remove tmp cells.
	* src/mes.c (make_cell__): New function.
	  (make_cell_): Use it.
	  (length__): New function.
	  (tmp, tmp_num, tmp_num2, tmp_num_, tmp_num2_, make_tmps): Remove.
	  Update callers to use make_cell__ directly.
	 * src/vector.c (make_vector__): New function.
	  (make_vector_): Use it.

2018-04-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "mlibc: Use memmove in realloc."
	This reverts commit f47a21e3cb4814c4a30d10ff59e5c947441725e9.

2018-04-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	mlibc: Use memmove in realloc.
	* src/libc.c (memmove): New function.
	  (realloc): Use it.
	* src/libc+tcc.c (memmove): Remove.

	mes: Add char-whitespace?
	* module/srfi/srfi-14.mes (char-whitespace?): New function.

2018-04-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Move base-0.mes int boot-0.scm.
	* module/mes/boot-02.scm: New file, rename from boot-0.scm.
	* module/mes/boot-0.scm: Add base-0.mes.
	* module/mes/base-0.mes: Remove.

2018-04-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Unify mlibc-gcc and mes builds.
	* make.scm (bin.gcc): Remove stray slash.
	* src/mes.c: Unify mlibc-gcc and mes builds.
	(gc_init_cells):
	(gc_init_news):
	(bload_env):
	* src/reader.c (reader_read_character):
	(reader_read_string):

2018-04-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Remove local variables from gc.
	* src/gc.c (gl_loop): Remove local variables.

	core: Listen to MES_SAFETY environment variable.

	core: Remove local variables from eval/apply.
	* src/mes.c (eval_apply): Move all variables to global scope.

	core: Remove MesCC reminder.

2018-04-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Update default memory settings.
	* src/mes.c (MAX_ARENA_SIZE)[__MESC__]: Set to maximum 172100000.

2018-04-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Tune debug printing.
	* src/mes.c: Tune debug printing.
	* src/gc.c: Likewise.
	* module/mes/guile.mes: Likewise.
	* HACKING: Describe it.

	core: Rewrite reader to create less garbage.
	* src/reader.c (reader_read_line_comment): Rename from read_line_comment.
	(reader_identifier_p): New function.
	(reader_end_of_word_p): New function.
	(reader_read_identifier_or_number): New function.
	(reader_read_sexp_): Rewrite.  Update callers.
	(reader_read_list): Rewrite.
	(reader_lookup_): Remove.

2018-04-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Add isspace.
	* include/ctype.h (isspace): Declare.
	* lib/libc.c (isspace): New function.

2018-04-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Rewrite string reader.
	* src/reader.c (reader_read_string): Rewrite, create much less
	  garbage.
	  (append_char): Remove.

	install: Fix prefix confusion.
	* install.sh: Substitute @PREFIX@ with MES_PREFIX.
	* scripts/mescc.mes: Grok PREFIX as MES_PREFIX.

	guix.scm: Update mes to 0.12.
	* guix.scm (mes, mes.git): Update to 0.12.

2018-04-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	Release 0.12.
	* configure (VERSION): Bump to 0.12.

2017-11-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Release udpate.
	* HACKING: Update.
	* INSTALL: Update.
	* NEWS: Update.
	* README: Update.
	* doc/ANNOUNCE-0.12: New file.
	* throughout: (janneke) coming out.

2018-04-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix.scm: Update mescc-tools to 0.4.
	* guix.scm (mescc-tools): Update to 0.4.

	core: Workaround for mescc.
	* src/mes.c (eval_apply)[__MESC__]: Add reminder for macro_p, global_p.

2018-04-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Remove scripts/mes symlink.

	mes: Add string-fold, string-fold-right.
	* module/srfi/srfi-13.mes (string-fold, string-fold-right): New
	  function.
	* tests/srfi-13.test ("string-fold"): Test it.
	  ("string-fold-right"): Test it.

	mes: Allow tick as part of identifier.
	* src/reader.c (reader_read_sexp_): Do not treat tick as special.

	mescc: Remove debugging.
	* module/language/c99/compiler.mes: Remove debugging.

	mescc: No comments in M1 when running on Mes.
	* module/language/c99/compiler.mes (ast-comment): If mes?, return nil.

	mescc: Trace globals.
	* module/language/c99/compiler.mes (mescc:trace): New function.  Use
	  throughout.

	Revert "core: Add member."
	This reverts commit 921686a0a3b06281f1804d04e6d4a0344dda507a.

	core: Add member.
	* src/lib.c (member): New function.
	* module/mes/scm.mes (member): Remove.

	mescc: trace M1 dumping.
	* module/language/c99/compiler.mes (info->object): Add tracing.
	* module/mes/M1.mes (object->M1): Add tracing.

	Revert "guix: Update nyacc to 0.83.31."
	This reverts commit 624b85d6b1dd876542f7ad342d6beb8a92408397.

	guix: Update nyacc to 0.83.31.
	* guix.scm (nyacc): Update to 0.83.31.

	mescc: Have Nyacc trace functions while parsing.
	* guile/mescc.scm (main): Set NYACC_TRACE.
	* scripts/mescc.mes (main): Set NYACC_TRACE.

	mes: Add setenv.
	* src/posix.c (setenv_): New function.
	* tests/base.test ("setenv, getenv"): Test it.

	core: Add setenv.
	* lib/libc.c (setenv): New function.
	* include/stdlib.h (setenv): Declare it.
	* scaffold/tests/61-array.c (test): Test it.

2018-04-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Add manifest.
	* build-aux/manifest.scm: New file.

	guix: Update Nyacc to 0.80.42.
	* guix.scm (nyacc): Update to 0.80.42.

2018-04-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Also print `parsing: input' when using -E.
	* module/language/c99/compiler.mes (c99-input->ast): Print `parsing:
	  input'.
	  (c99-input->info): Remove that.

2018-04-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Cleanup reader.
	* src/reader.c (reader_read_sexp_): Rename from reader_read_word_.  Cleanup.
	  (read_hash): Cleanup.

	mes: Cleanup formatting.

	core: Add equal2?.
	* src/lib.c (equal2_p): New function.
	* module/mes/base.mes (equal2?): Remove.

	core: Add memq.
	* lib/mes.c (memq): New function.
	* module/mes/scm.mes (memq): Remove.

	mes: Remove duplicate memq.
	* module/mes/base-0.mes (memq): Remove.

2017-12-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Single environment lookup for variables, SICP chapter 3.
	* src/mes.c (t): Add TVARIABLE.
	  (scm_vm_eval_deref): New vm special.
	  (make_vref_): New internal function.
	  (eval_apply): WIP: replace symbols with their variable reference.
	* src/gc.c (gc_loop): Handle TVARIABLE.
	* src/lib.c (display_helper): Handle TVARIABLE.
	* module/mes/type-0.mes (<cell:variable>): New variable.
	  (cell:type-alist): Add it.
	  (variable?): New function.
	* module/mes/display.mes (display): Handle <variable>.

2018-04-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Remove override hook for read-input-file.
	* src/reader.c (read_input_file_env): Remove override hook for
	read-input-file.

2018-03-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Iterative recursive macro expand.
	* src/mes.c (eval_apply): Iterative recursive macro expand.
	* src/posix.c (set_current_input_port): Return previous port.
	* module/mes/catch.mes (%eh): Use core:display.
	* module/mes/display.mes (display-cut, display-cut2): Move macro
	  definitions to toplevel.

2018-04-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: records.scm: update from upstream.
	* guile/guix/records.scm: Update from upstream.

2018-01-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Add incremental test suite.
	* check-boot.sh: New file.
	* check.sh: Invoke it.
	* module/srfi/srfi-16.mes: New file.
	* scaffold/boot/00-zero.scm: New file.
	* scaffold/boot/01-true.scm: New file.
	* scaffold/boot/02-symbol.scm: New file.
	* scaffold/boot/03-string.scm: New file.
	* scaffold/boot/04-cons.scm: New file.
	* scaffold/boot/04-quote.scm: New file.
	* scaffold/boot/05-list.scm: New file.
	* scaffold/boot/06-tick.scm: New file.
	* scaffold/boot/07-if.scm: New file.
	* scaffold/boot/08-if-if.scm: New file.
	* scaffold/boot/10-cons.scm: New file.
	* scaffold/boot/11-list.scm: New file.
	* scaffold/boot/12-car.scm: New file.
	* scaffold/boot/13-cdr.scm: New file.
	* scaffold/boot/14-exit.scm: New file.
	* scaffold/boot/15-display.scm: New file.
	* scaffold/boot/16-if-eq-quote.scm: New file.
	* scaffold/boot/20-define-quote.scm: New file.
	* scaffold/boot/20-define-quoted.scm: New file.
	* scaffold/boot/20-define.scm: New file.
	* scaffold/boot/21-define-procedure.scm: New file.
	* scaffold/boot/22-define-procedure-2.scm: New file.
	* scaffold/boot/23-begin.scm: New file.
	* scaffold/boot/24-begin-define.scm: New file.
	* scaffold/boot/25-begin-define-2.scm: New file.
	* scaffold/boot/26-begin-define-later.scm: New file.
	* scaffold/boot/26-define-define.scm: New file.
	* scaffold/boot/27-lambda-define.scm: New file.
	* scaffold/boot/28-define-define.scm: New file.
	* scaffold/boot/29-lambda-define.scm: New file.
	* scaffold/boot/2a-lambda-lambda.scm: New file.
	* scaffold/boot/2b-define-lambda.scm: New file.
	* scaffold/boot/2c-define-lambda-recurse.scm: New file.
	* scaffold/boot/2d-define-lambda-set.scm: New file.
	* scaffold/boot/2e-define-second.scm: New file.
	* scaffold/boot/30-capture.scm: New file.
	* scaffold/boot/31-capture-define.scm: New file.
	* scaffold/boot/32-capture-modify-close.scm: New file.
	* scaffold/boot/33-procedure-override-close.scm: New file.
	* scaffold/boot/34-cdr-override-close.scm: New file.
	* scaffold/boot/35-closure-modify.scm: New file.
	* scaffold/boot/36-closure-override.scm: New file.
	* scaffold/boot/37-closure-lambda.scm: New file.
	* scaffold/boot/38-simple-format.scm: New file.
	* scaffold/boot/40-define-macro.scm: New file.
	* scaffold/boot/41-when.scm: New file.
	* scaffold/boot/42-if-when.scm: New file.
	* scaffold/boot/43-or.scm: New file.
	* scaffold/boot/44-or-if.scm: New file.
	* scaffold/boot/45-pass-if.scm: New file.
	* scaffold/boot/46-report.scm: New file.
	* scaffold/boot/47-pass-if-eq.scm: New file.
	* scaffold/boot/48-let.scm: New file.
	* scaffold/boot/49-macro-override.scm: New file.
	* scaffold/boot/4a-define-macro-define-macro.scm: New file.
	* scaffold/boot/4b-define-macro-define.scm: New file.
	* scaffold/boot/4c-quasiquote.scm: New file.
	* scaffold/boot/50-primitive-load.scm: New file.
	* scaffold/boot/51-module.scm: New file.
	* scaffold/boot/52-define-module.scm: New file.
	* scaffold/boot/53-closure-display.scm: New file.
	* scaffold/boot/60-let-syntax.scm: New file.
	* scaffold/boot/closure.scm: New file.
	* scaffold/boot/compose.scm: New file.
	* scaffold/boot/data/bar.mes: New file.
	* scaffold/boot/data/i.scm: New file.
	* scaffold/boot/data/module.mes: New file.
	* scaffold/boot/foo.scm: New file.
	* scaffold/boot/lambda-star.scm: New file.
	* scaffold/boot/vector.scm: New file.
	* tests/boot.test: New file.
	* tests/boot.test-guile: New file.
	* tests/srfi-16.test: New file.
	* tests/srfi-16.test-guile: New file.

2018-02-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Boot from MES_BOOT, boot-0.scm.
	* src/mes.c (load_env): Softcode loading of boot-0.scm from
	  environment variabl MES_BOOT.
	* module/mes/boot-00.scm: New file.
	* module/mes/boot-01.scm: New file.
	* module/mes/boot-0.scm: Rename from read-0.mes.
	* module/mes/module.mes: New file.

2018-03-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Add -fno-stack-protector for debian.
	* guile/guix/make.scm (%C32-FLAGS): Add -fno-stack-protector.

2018-01-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: reader: reader_ prefix; read/write char/string in core.
	* src/posix.c (peek_char, read_char, read_string, unread_char, write_char): New function.
	* src/reader.c: Use reader_ prefix.

	r#	bootstrappable.org

2018-01-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: More informative error reporting for number asserts.
	* src/math.c (assert_number): New function.  Update assert () users.

2018-01-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	guile: Resurrect eval/apply in scheme.
	* guile/mes.mes (eval-expand): Short-circuit make-closure.
	* guile/mes.scm (environment): Update.

2018-02-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: simple-format: support ~A, ~S.
	* module/mes/display.scm (simple-format): support ~A, ~S.

2018-01-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Display and write string and char compliance.
	* src/lib.c (display_helper): Display and write char and string compliance.

2018-02-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: display: Support keyword.
	* src/lib.c (display_helper): Support keyword.

2018-01-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: display: vector.
	* src/lib.c (display_helper): Display vector.

2018-01-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: display: closure names.
	* src/lib.c (display_helper): Display closure names.

2018-01-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Rename make-vector to core:make-vector.
	* src/vector.c (make_vector_): Rename from make_vector.  Update callers.

	mes: Better error reporting.
	* src/lib.c (write_error_): New function.
	* src/mes.c (error, check_apply): Use it.
	  (append2, set_car_x): Upon error, call error (WAS: assert).

	Revert "mes: un-defmacro optargs.  WIP"
	This reverts commit 5da527c540dc0e1481a010899233b4e806fe37da.

2018-01-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: un-defmacro optargs.  WIP

	mes: Test optargs without pmatch.
	* tests/optargs.test: Remove pmatch.

	mes: Add define-macro*.
	* module/mes/optargs.mes (define-macro*): New macro.

2018-01-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Evaluate test of COND only once.
	* module/mes/base-0.mes (cond): Evaluate test of COND only once.
	  Fixes cond tests with side effects (Nyacc).
	* tests/base.test ("cond side effect"): Test it.

2018-01-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: #\page is whitespace.
	* module/srfi/srfi-14.mes (char-set:whitespace): Add #\page.

	mes: #<eof> is not a character.
	* module/mes/display.mes (display):
	* module/mes/type-0.mes (char?): -1 is not a character.
	  (eof-object?): New function.
	* tests/base.test ("#<eof>"): Test it.
	* module/mes/scm.mes (eof-object?): Remove.
	  (unread-char): Return character (WAS: integer).

	mes: open-input-string: peek fix.
	* module/mes/guile.mes (open-input-string): Return actual tell.
	* tests/guile.test ("open-input-string peek"): Test it.

	mes: with-input-from-string: peek fix.
	* module/mes/guile.mes (with-input-from-string): Return actual tell.
	* tests/guile.test ("with-input-from-string peek"): Test it.

2018-01-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Resurrect guile-1.8.
	* guile/mescc.scm: Use GUILE_LOAD_COMPILED_PATH instead of -C.
	  [guile]: Include syncase.
	* module/language/c99/compiler.scm [guile]: Stub pretty-print-c99.
	  Set stack to unlimited.
	* module/language/c99/info.scm [guile]: Include (ice-9 syncase).
	* module/mes/as-i386.scm [guile]: Likewise.
	* module/mes/guile.scm [guile]: Add compose, export it.

	mes: Add string-drop-right.
	* module/srfi/srfi-13.mes (string-drop-right): New function.

2018-01-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: cleanups.
	* guile/mescc.scm: Cleanups.
	* module/language/c99/compiler.mes:
	* module/language/c99/compiler.scm:
	* module/language/c99/info.mes:
	* module/language/c99/info.scm:
	* module/mes/getopt-long.mes:
	* module/mes/optargs.mes:
	* module/mes/optargs.scm:
	* module/mes/repl.mes:
	* module/mes/scm.mes:
	* scripts/mescc.mes:

	nyacc cpp-debugging, tests

	mes: getopt-long: fix multi-opt and unclumping.
	* module/mes/getopt-long.scm (remove-if-not): Remove.
	  (option-spec): Add value field.  Update users.
	  (expand-clumped-singles): Simplify, fix.
	  (process-options): To get an option's value, use value instead of
	  value-policy.  Fixes multi-opt.
	* tests/getopt-long.test: New file.
	* make.scm (mes-tests): Add it.
	* check.sh (tests): Add it.
	* tests/getopt-long.test-guile: New symlink.

	guix: back to 0.80.41 for tinycc.
	guix.scm (nyacc): New variable.

2018-01-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Support equal? with arbitrary number of arguments.
	* module/mes/base.mes (equal2?): Rename from equal?.
	  (equal?): Implement.

	mescc: Use records for mes too.
	* module/language/c99/info.mes: Use info.scm records, remove
	  simplistic list data structures.

	mescc.mes: Use write for preprocessing output.
	* scripts/mescc.mes (source->ast): Use core:write instead of pretty-print.

	mes: Add write, core:write.
	* src/lib.c (display_helper, fdisplay_): Add parameter, write_p.
	  Update callers.  When write_p: write quoted strings.
	  (write_, write_port_): New function.
	* module/mes/read-0.mes (write): New function.

	mes: gc_safety.

	check-mescc.sh: run with mes.
	* src/build.sh:
	* src/check-mescc.sh: Run with mes.

	mes: Add string-null?.
	* module/srfi/srfi-13.mes (string-null?): New function.

	mes: Add dirname.
	* module/mes/guile.mes (dirname): New function.

2018-01-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Add syntax tests.
	* tests/syntax.test: New file.
	* tests/syntax.test-guile: New file.

	fixup: 1b0696f9 (Jan Nieuwenhuizen 2018-01-01 15:53:13 +0100 40) ,        (lambda ()

2017-12-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "mes: use array-based stack. WIP: will not survice gc."
	This reverts commit 7fb653f68c2dbf8bc83cce4bd138439c600b538f.

2017-12-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: use array-based stack. WIP: will not survice gc.
	* 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.

2017-12-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Fix assq to improve performance.
	* src/mes.c (assq): Special case eq_p to improve performance.

	mes: Reimplement records.
	* module/srfi/srfi-9.mes (define-record-type): New macro.
	* AUTHORS: Update.
	* module/mes/record-0.mes: Remove.
	* module/mes/record.mes: Remove.
	* module/srfi/srfi-9-psyntax.mes: Remove.
	* module/srfi/srfi-9.scm: Remove.
	* make.scm: Remove them.

2017-12-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Fix display of closure.
	* module/mes/display.mes (display): Drop extra ( at start of *closure*, *circ*.
	* src/lib.c (display_helper): Likewise.

2017-12-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Resurrect define, define-macro in C core.
	* make.scm (bin.gcc, bin.mescc): Use MES_C_READER=1.
	* src/mes.c (scm_symbol_define, scm_symbol_define_macro): New symbol.
	  (scm_vm_eval_define): New special.
	  (scm_symbol_c_define): New symbol.
	  (MAKE_MACRO): New define.
	  (eval_apply)[MES_C_DEFINE]: Handle define, define-macro.
	  (mes_symbols): Define %c-define for use in read-0.mes.
	* module/mes/read-0.mes: Do not implement full scheme define if %c-define.
	* module/mes/quasiquote.mes (sexp:define, env:define, env:macro): New function.
	  (define-macro): New macro.  FIXME
	* module/mes/psyntax.mes (define): New macro.  FIXME

2017-12-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Fix initial display.
	* module/mes/read-0.mes (display): Fix.

2017-12-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Fix compile warning in reader.
	* src/reader.c[MES_C_READER]: Declare read_block_comment, read_hash.
	  Fixes compile warning.

2017-12-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Allow invoking git mescc.mes from elsewhere.
	* src/mes.c (load_env): Look in MES_PREFIX too.  Add debug printing.
	* scripts/mescc.mes: Consider MES_PREFIX.
	* guile/mescc.scm (%prefix): Consider MES_PREFIX.
	* module/mes/base-0.mes (string->list): New function, move from type-0.mes.
	  (%moduledir): Consider MES_PREFIX.
	* module/mes/type-0.mes (string->list): Remove.

	mescc: Output performance hacks: use core:display.
	* src/lib.c (display_): Write to g_stdout (WAS: STDOUT).
	* module/mes/guile.scm (guile): Declare and export core:display core:display-error.
	* module/mes/M1.mes (object->M1): Use core:display and string-append
	  instead of format.
	* module/mes/guile.mes (with-input-from-string): Add debugging.
	  (open-input-string): Likewise.
	  (read-string): Likewise.  Re-implement.
	  (drain-input): Use read-string.

	mes: Nyacc support: substring/copy, substring/shared.
	* module/srfi/srfi-13.mes (substring/copy, substring/shared): Define
	  to substring.

	mes: Nyacc support: Read old characters.
	* src/reader.c (read_character)[MES_C_READER]: Support reading old
	  characters: #\bel, #\bs, #\vt.

	mes: resurrect running MesCC: handle \t in strings.
	* src/reader.c (read-string): Handle \t.  Fixex M1 output.

	mescc: Use small, bootstrappable syntax rather than huge psyntax seed.
	* module/nyacc/lex.mes (mes): Use syntax (WAS: psyntax).
	* module/mes/pmatch.mes (mes): Likewise.
	* module/nyacc/lang/c99/parser.mes (srfi-9): Use syntax (WAS: srfi-9-psyntax).

	mes: Fix for pmatch on bootstrappable syntax-rules.
	* module/mes/pmatch.scm (ppat): Do not use let.
	* tests/pmatch.test ("pmatch nyacc minimal", "pmatch nyacc"): Test it.

2017-12-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	mlibc: M4 support: robustify headers, add sys/signal.h.
	* include/errno.h (ERANGE): New define.
	* include/stdarg.h (size_t): Undefine before typedef.
	* include/stdint.h: Likewise.
	* include/stdio.h: Likewise.
	* include/stdlib.h: Likewise.
	* include/sys/types.h: Likewise.
	* include/string.h: Likewise.
	  (ssize_t): Undefine before typedef.
	* include/unistd.h: Likewise.
	  (off_t): Undefine before typedef.
	* include/sys/stat.h (struct stat): New stub.
	* include/sys/signal.h: New file.

2017-12-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: M4 support: scaffold/tests/82-define.c.
	* scaffold/tests/82-define.c: New file; inspired by M4.  Thanks, Ricardo!
	* make.scm ("82-define"): Build it.
	* check-mescc.sh: Add 82-define.

	mlibc: Tinycc support: Avoid hex.
	* include/00-test.i (main)[__TINYC__]: Do not use $0x.

	mlibc: Tinycc support: qsort.
	* lib/libc+tcc.c (qswap, qpart): New function
	  (qsort): Implement.
	* scaffold/tests/81-qsort.c: Test it.
	* make.scm ("81-qsort"): Build it.

2017-12-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: scaffold: misc cleanups.
	* scaffold/tests/44-switch.c (swits): More case labels.
	* scaffold/tests/60-math.c: Discriminate return values.
	* scaffold/tests/77-pointer-assign.c (memset)[__TINYC__]: Remove.
	* scaffold/tests/79-int-array.c (test): Discriminate return values.

	mlibc: Tinycc support: __udivdi3, __umoddi3.
	* lib/libc+tcc-gcc.c (__udivdi3, __umoddi3): Fix signature, do not
	  crash on simple integer devisions.

	mescc: Tinycc support: Respect word size better.
	* stage0/x86.M1 (movzwl_0x32(%ebp),%eax,movzwl_0x8(%ebp),%eax): New
	  define.
	* module/mes/as-i386.mes (i386:push-word-local-de-ref,
	  i386:word-local->accu): New function.
	* module/mes/as-i386.scm: Export them.
	* module/language/c99/compiler.mes (push-local-de-ref): Respect word size.
	  (ident->accu): Likewise.

	mlibc: New library layout; remove duplication.
	* lib/libc+tcc-gcc.c: New file: Libc bits for GCC from libc-mes+tcc.c.
	* lib/libc+tcc-mes.c: New file: Libc bits for MesCC from libc-mes+tcc.c.
	* lib/libc+tcc.c: New file: Libc bits from libc-mes+tcc.c.
	* lib/libc.c: New file: Merged from libc-mes.c, libc-gcc.c.
	  (abtoi): New function: Rename from _atoi.
	* lib/linux+tcc-gcc.c: New file:  Linux bits from libc-gcc+tcc.c.
	* lib/linux+tcc-mes.c: New file: Linux bits from libc-mes+tcc.c.
	* lib/linux-gcc.c: New file: Linux bits from libc-gcc.c.
	* lib/linux-mes.c: New file: Linux bits from libc-mes.c.
	* lib/mini-libc-gcc.c: New file.
	* lib/mini-libc.c: New file: Libc bits from mini-libc-mes.c.
	* lib/mini-linux-gcc.c: New file.
	* lib/mini-linux-mes.c: New file: Linux bits from mini-libc-mes.c.
	* lib/libc-gcc.c: Remove duplication using include now.
	* lib/libc-mes.c: Likewise.
	* lib/mini-libc-mes.c: Likewise.
	* include/stdio.h (puts)[POSIX]: Remomve macro.
	  (fputc, fputs)[!POSIX]: New macro.
	  (fputc, fputs): Remove declaration.
	* scaffold/tests/7j-strtoull.c (strtoull, test): Use abtoi.
	* src/lib.c (fputs)[__MESC__]: Remove define.
	* guile/guix/make.scm: Update for new library layout.
	* make.scm: Likewise.
	* build.sh: Likewise.
	* install.sh: Likewise.

	mlibc: Tinycc support: itoab, for debugging.
	* lib/libc-gcc.c (itoab): New function.
	* lib/libc-mes.c (itoab): New function.

2017-12-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: prefix string labels with _.
	* module/mes/M1.mes (object->M1): Prefix string lables with _.

	mescc: prefix local labels with _.
	* module/language/c99/compiler.mes (expr->accu): prefix local labels with _.

	bootstrap: Update build script.
	* build.sh: Add blood-elf, use -o.

	mlibc: Mescc-tools support: fix for [v]fprintf.
	* lib/libc-mes+tcc.c (vfprintf): Bugfix: print to fd.

2017-11-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: resurrect full reader in C core.
	* module/mes/read-0.mes (defined?): New function.
	  (eat-whitespace, read-env, read-word, read-block-comment,
	  read-line-comment, read-list, read-character, read-hex, read-octal,
	  reader:read-string, lookup, read-hash, read-word): Only define if
	  not %c-reader.
	* module/mes/base-0.mes (defined?): Remove.
	* src/mes.c[MES_C_READER]: Set ARENA_SIZE=10000000.
	  (scm_symbol_quasiquote scm_symbol_unquote,
	  scm_symbol_unquote_splicing, scm_symbol_syntax,
	  scm_symbol_quasisyntax, scm_symbol_unsyntax,
	  scm_symbol_unsyntax_splicing): New symbol.
	  (scm_symbol_c_reader): New symbol.
	  (MAKE_KEYWORD)[MES_C_READER]: New define.
	  (mes_symbols): Define %c_reader.
	* src/reader.c (read_word_)[MES_C_READER]: Extend to full Scheme
	  reader.
	  (eat_whitespace)[MES_C_READER]: Likewise.
	  (read_block_comment, read_hash, read_word, read_character,
	  read_octal, read_hex, append_char, read_string)[MES_C_READER]:
	  Likewise.
	* make.scm (bin.gcc,bin.mescc): Define MES_C_READER=1.

2017-11-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Mescc-tools support: char foo[BAR] = {'a', 'b', 'c'}.
	* stage0/x86.M1 (mov____%al,0x8(%ebp), mov____%al,0x32(%ebp),
	  mov____%ax,0x8(%ebp), mov____%ax,0x32(%ebp)): New define.
	* module/mes/as-i386.mes (i386:accu->local+n,i386:byte-accu->local+n,
	  i386:word-accu->local+n): New function.
	* module/language/c99/compiler.mes (accu->local+n): New function.
	  (initzer->data): Return char as single byte.
	  (decl->info): Support char foo[BAR] = {'a', 'b', 'c'}.
	* scaffold/tests/66-local-char-array.c: Test it.
	* make.scm (add-scaffold-test): Build it.

2017-11-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	mlibc: Mescc-tools support: chmod.
	* stage0/x86.M1 (SYS_chmod): New define.
	* lib/libc-gcc.c (chmod): New function.
	* lib/libc-mes.c (chmod): New function.

	mlibc: GNU Gcc support: setjmp, longjmp.
	* stage0/x86.M1 (jmp____*%ebx): New macro.
	  (mov____0x8(%ebp),%ebp): New macro.
	  (mov____0x8(%ebp),%esp): New macro.
	* include/setjmp.h (jmp_buf): Redefine as struct.
	* lib/libc-mes+tcc.c (longjmp, setjmp): Implement.
	* scaffold/tests/80-setjmp.c: Test it.
	* make.scm ("80-setjmp"): Build it.
	* .gitignore: Ignore *.tcc-guile.

2017-11-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	mlibc: GNU Gcc support: ferror.
	* lib/libc-mes+tcc.c (ferror): New function.
	* include/stdio.h (ferror): Declare it.

2017-11-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	bootstrap: Add bootstrap build scripts.
	* build.sh: New file.
	* check-mescc.sh: New file.
	* check.sh: New file.
	* install.sh: New File.

2017-11-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	remove obsolete Nyacc link.
	* guile/nyacc: Remove.

2017-11-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: mlib/include to include, move mlib to lib.
	* include: Move from mlib/include.
	* lib: Move from mlib.
	* BOOTSTRAP: Update.
	* HACKING: Update.
	* guile/guix/make.scm: Update.
	* make.scm: Update.
	* module/language/c99/compiler.mes: Update.

2017-11-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Resurrect running mes tests tests/*.test with Guile.
	* tests/tests/base.test-guile: New file to resurrect running Mes test with Guile.
	* tests/catch.test-guile: Symlink for same purpose.
	* tests/closure.test-guile: Likewise.
	* tests/cwv.test-guile: Likewise.
	* tests/display.test-guile: Likewise.
	* tests/fluids.test-guile: Likewise.
	* tests/guile.test-guile: Likewise.
	* tests/let-syntax.test-guile: Likewise.
	* tests/let.test-guile: Likewise.
	* tests/match.test-guile: Likewise.
	* tests/math.test-guile: Likewise.
	* tests/module.test-guile: Likewise.
	* tests/optargs.test-guile: Likewise.
	* tests/peg.test-guile: Likewise.
	* tests/pmatch.test-guile: Likewise.
	* tests/psyntax.test-guile: Likewise.
	* tests/quasiquote.test-guile: Likewise.
	* tests/read.test-guile: Likewise.
	* tests/record.test-guile: Likewise.
	* tests/scm.test-guile: Likewise.
	* tests/srfi-1.test-guile: Likewise.
	* tests/srfi-13.test-guile: Likewise.
	* tests/srfi-14.test-guile: Likewise.
	* tests/vector.test-guile: Likewise.
	* make.scm (add-guile-test): New function.  Use it to run running tests/*.test-guile.

2017-11-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: resurrect running MesCC: handle \t in strings.
	* module/mes/read-0.mes (reader:read-string): Handle \t.  Fixex M1 output.

	mes: Nyacc support: with-fluids.
	* module/mes/fluids.mes (with-fluids): New macro.
	* tests/fluids.test ("with-fluids"): Test it.

	mes: resurrect running MesCC: update info interface.
	* module/language/c99/info.mes (type?, global?, local?): New function.
	  (make-global): Remove name parameter.
	* module/nyacc/lang/c99/pprint.mes: New file.

2017-12-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Add last.
	* module/srfi/srfi-1.mes (last): New funcion.

2017-11-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Add reverse-list->string.
	* module/srfi/srfi-13.mes (reverse-list->string): New function.

	bootstrap: Unbundle necessary M1 sources.
	* mlibc/crt1.M1: Remove.
	* mlibc/libc-mes.M1: Remove.
	* src/mes.M1: Remove.

2017-11-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	mlibc: Mescc-tools support: fix fgetc.
	* mlibc/libc-mes.c (fgetc): Fix from completely fubar.

	mlibc: Mescc-tools support: strtol: partly implement stub.
	* mlibc/libc-mes+tcc.c (strtol): Partly implement stub.

	mlibc: Mescc-tools support: getopt, getopt_long.
	* mlibc/getopt.c: Move to ANSI C.  Remove GETOPT_COMPAT and
	  non-POSIXLY_CORRECT options.
	* mlibc/include/getopt.h: New file.
	* mlibc/libc-gcc+tcc.c: Include getopt.c.
	* mlibc/libc-mes+tcc.c: Likewise.

	mlibc: Mescc-tools support: import getopt_long.
	* mlibc/getopt.c: Import from gcc-2.0.

	Revert "mescc: Grok char foo[] parameter."
	This reverts commit c4cc75105db48b550cd515751b766b2e7a88ddc3.

	mescc: Grok char foo[] parameter.
	* module/language/c99/compiler.mes (function->text+data): Grok char
	  foo[] parameter.

	mescc: Grok char *const foo[];
	* module/language/c99/compiler.mes (ast-strip-const): Grok char *const argv[];

	mlibc: Mescc-tools support: endianness.
	* mlibc/include/endian.h: New file.
	* mlibc/include/ctype.h[!(__GNUC__ && POSIX)]: Include it.
	* mlibc/include/stdlib.h: Likewise.
	* mlibc/include/sys/types.h: Likewise.

	mlibc: Mescc-tools support: exit stati.
	* mlibc/include/stdlib.h (EXIT_FAILURE, EXIT_SUCCESS): New define.

2017-11-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: cleanup obsolete Nyacc 0.7x compatibility.
	* module/language/c99/compiler.mes (ast-type->type, ast->type
	  expr->accu, struct-field, decl->info,): Remove obsolete Nyacc 0.7x
	  patterns.

	guix: Release update.
	* guix.scm (mes): Update commit, hash and version.  Add
	  'make-git-source-writable stage.

	Release 0.11.
	* configure (VERSION): Bump to 0.11.

2017-11-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Release udpate.
	* HACKING: Update.
	* INSTALL: Update.
	* NEWS: Update.
	* README: Update.
	* doc/ANNOUNCE-0.11: New file.

2017-11-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: fix for 07-include, thanks rain1!
	* make.scm (add-scaffold-test): New keyword parameter: includes.
	  ("07-include"): Use it.

	build: support gcc -m32, thanks rain1!
	* guile/guix/make.scm (%CC32): fallback to %CC.
	  (%C32-FLAGS): Add -m32, to suppor gcc -m32.
	  (LINK.gcc): Use it.

2017-11-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	bootstrap: Update necessary M1 sources.
	   M1 -f stage0/x86.M1 -f mlibc/crt1.M1 --LittleEndian --Architecture=1 > mlibc/crt1.hex2
	   M1 -f stage0/x86.M1 -f mlibc/mini-libc-mes.M1 --LittleEndian --Architecture=1  > mlibc/libc-mes.hex2
	   M1 -f stage0/x86.M1 -f src/mes.M1 --LittleEndian --Architecture=1 > src/mes.hex2
	   hex2 --LittleEndian --Architecture=1 --BaseAddress=0x1000000 -f stage0/elf32-header.hex2 -f mlibc/crt1.hex2 -f mlibc/libc-mes.hex2 -f src/mes.hex2 -f stage0/elf32-footer-single-main.hex2 > src/mes-mes
	   exec_enable src/mes-mes

	* mlibc/libc-mes.M1: Update.
	* src/mes.M1: Udate.

2017-11-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: test #include.
	* scaffold/tests/exit-42.i: New file.
	* scaffold/tests/07-include.c: New file.
	* make.scm ("07-include"): Build it.

2017-11-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: struct struct array.
	Support

	  struct foo
	  {
	    struct bar baz[N];
	    struct bar bla*[M];
	  };

	* module/language/c99/compiler.mes (expr->accu):
	* scaffold/tests/7n-struct-struct-array.c: Test it.
	* make.scm (add-scaffold-test): Build it.

2017-11-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	mlibc: Tinycc support: support, most syscalls stubbed.
	* mlibc/libc-gcc.c (exit, write)[__TINYC__]: tcc-compatible gcc-style
	  asm implementation.
	  (read,open,access,brk,fsync)[__TINYC__]: Stub body.
	* mlibc/libc-gcc+tcc.c (close,unlink, lseek, getcwd)[__TINYC__]: Stub
	  body.
	* mlibc/libc-mes+tcc.c: Support tinycc.
	* mlibc/include/00-test.i (main) [__TINYC__]: Support tcc.

	mescc: Tinycc support: empty for.
	* module/language/c99/compiler.mes (test-jump-label->info): Handle
	  empty expression.
	* make.scm (add-tcc-test "45_empty_for"): Test it.

	tinycc: scaffold/main.c: running mes-tcc compiled binary #6.
	* scaffold/main.c (main): Use variable, if, argc, ++, +=, function call to return 42.

2017-11-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	tinycc: scaffold/main.c: running mes-tcc compiled binary #5.
	* scaffold/main.c (main): Use function call and variable to return 42.

2017-11-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	tinycc: scaffold/main.c: running mes-tcc compiled binary #4.
	* scaffold/main.c (main): Use variables to return 42.

	mescc: Tinycc support: workaround lack of long long support.
	* module/language/c99/compiler.mes (i386:type-alist): Use size=4 for
	  long long as a workaround.

2017-11-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: refactor expr->accu, expr->accu*, fixes nontrivial struct by value assign.
	* module/language/c99/compiler.mes: (pke): New function.
	  (expr->number): Rename from p-expr->number.  Update callers.
	  (decl->info, init-declr->pointer, struct-field): Several pointeryness fixes.
	  (expr->accu*, expr->accu): Remove special-casing for foo.bar,
	  foo->bar, foo[bar].  Fixes struct by value assign for non-trival
	  expressions.
	  (accu->ident, ident-address->accu, ident->accu):
	  (base->ident-address, ident->base): Remove.
	* scaffold/tests/7k-for-each-elem.c (test): Test it.
	* scaffold/tests/7c-dynarray.c (test): Test it.
	* scaffold/tests/7m-struct-char-array-assign.c: Test it.
	* make.scm (add-scaffold-test): Build it.

	mlibc: errno.h: declare errno without extern.
	* mlibc/include/errno.h: drop extern.  Fixes tcc compile.

	guix: nyacc: Update to 0.82.4.
	* guix.scm (nyacc): Update to 0.82.4.

2017-09-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Release update.
	* guix.scm (mes): Update commit, hash and version.

	Release 0.10.
	* configure (VERSION): Bump to 0.10.

	doc: Release udpate.
	* HACKING: Update.
	* INSTALL: Update.
	* NEWS: Update.
	* doc/ANNOUNCE-0.10: New file.
	* BOOTSTRAP: New file.
	* make.scm: Install them.

2017-09-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	bootstrap: Include necessary M1 sources.
	   M1 -f stage0/x86.M1 -f mlibc/crt1.M1 --LittleEndian --Architecture=1 > mlibc/crt1.hex2
	   M1 -f stage0/x86.M1 -f mlibc/mini-libc-mes.M1 --LittleEndian --Architecture=1  > mlibc/libc-mes.hex2
	   M1 -f stage0/x86.M1 -f src/mes.M1 --LittleEndian --Architecture=1 > src/mes.hex2
	   hex2 --LittleEndian --Architecture=1 --BaseAddress=0x1000000 -f stage0/elf32-header.hex2 -f mlibc/crt1.hex2 -f mlibc/libc-mes.hex2 -f src/mes.hex2 -f stage0/elf32-footer-single-main.hex2 > src/mes-mes
	   exec_enable src/mes-mes

	* mlibc/crt1.M1: New File.
	* mlibc/libc-mes.M1: New File.
	* src/mes.M1: New File.

2017-09-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Bump Nyacc to 0.82.0.
	* guix.scm (nyacc): Bump to 0.82.0.

	mescc: Support Nyacc-0.81.0.
	* module/language/c99/compiler.mes (ast->info): Handle asm-expr from
	  Nyacc 0.81.0.

2017-09-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	tinycc: scaffold/main.c: running tcc-compiled binary #3.
	* scaffold/main.c (main): Remove asm.

2017-09-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: struct by value assign.
	* module/language/c99/compiler.mes (expr->accu): warn for unsupported
	  sizes.
	* scaffold/tests/7h-struct-assign.c (test): Test it.

2017-09-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	tinycc: scaffold/main.c: running tcc-compiled binary #2.
	* scaffold/main.c (main)[__i386__]: Rename from _start.

2017-09-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: compile crt1.c, libc-mesc.c and <input>.c separately.
	* mlibc/crt1.c: New file.
	* mlibc/libc-mes.c (_start): Remove.
	* mlibc/libc-gcc.c (_start): Remove.
	* make.scm (LINK.hex2, bin.mescc): Move from guile/guix/make.scm.
	* guile/guix/make.scm (LINK.hex2, bin.mescc): Remove.

2017-09-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: refactor _start.
	* mlibc/libc-mes.c (_start): Refactor.
	  (_env): Remove.
	* stage0/x86.M1:

2017-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	tinycc: scaffold/main.c: first running tcc-compiled binary.
	* scaffold/main.c (_start): Exit 42 using asm.

2017-08-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: fix *--p = 'x'.
	* module/language/c99/compiler.mes (expr->accu): Respect size in *--p = 'x'.
	* scaffold/tests/23-pointer.c (test): Test it.

	mescc: Tinycc support: initializer arithmetic.
	* module/language/c99/compiler.mes (p-expr->bool): New function
	  (p-expr->number): Support bitwise-and, bitwise-not, cast, cond-expr.

	core: Add logand, lognot.
	* src/math.c (logand, lognot): New function.

	mescc: Tinycc support: array of struct of any size.
	* module/language/c99/compiler.mes (accu*value): New function
	  (expr->accu*): Use it to support array of struct of any size.
	* scaffold/tests/7l-struct-any-size-array.c: Test it.
	* make.scm (add-scaffold-test): Build it.

	mescc: Tinycc support: stdint.h: declare size_t.
	* mlibc/include/stdint.h (size_t)[!__MES_SIZE_T]: Declare.

2017-08-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: pointer arithmetic with pointer-variable.
	* module/language/c99/compiler.mes (expr->accu): pointer arithmetic with pointer-variable.
	* scaffold/tests/76-pointer-arithmetic.c (test): Test it.
	* mlibc/include/stdarg.h (va_start): Update for fixed pointer arithmetic.

2017-08-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: pointer arithmetic with &variable.
	* module/language/c99/compiler.mes (expr->pointer): Handle ref.
	* scaffold/tests/76-pointer-arithmetic.c: Test it.

2017-08-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: pointer arithmetic with variable.
	* module/language/c99/compiler.mes (expr->accu): Support pointer
	  arithmetic with variable: p + i, p - i, p += i, p -= i.
	* scaffold/tests/76-pointer-arithmetic.c (test): Test it.

	mescc: Tinycc support: handle pointerness, siziness for cast foo*.
	* module/language/c99/compiler.mes (expr->pointer): Support cast foo*.
	  (expr->size): Likewise.
	* scaffold/tests/7k-for-each-elem.c: Test it
	* make.scm (add-scaffold-test): Build it.

2017-08-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: strtoull.
	* mlibc/include/mlibc.h (_atoi): Declare.
	* mlibc/include/ctype.h (isxdigit): Declare.
	* mlibc/libc-gcc.c (isxdigit, _atoi): New function.
	  (atoi): Use it.
	* mlibc/libc-mes.c (isxdigit, _atoi): New function.
	  (atoi): Use it.
	* scaffold/tests/7j-strtoull.c (test): Test it.
	* make.scm (add-scaffold-test): Build it.

2017-08-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: snprintf.
	* mlibc/include/stdarg.h (vsprintf): Declare.
	* mlibc/libc-gcc.c (vsprintf): New function.
	  (sprintf): Use it.
	* mlibc/libc-mes+tcc.c (snprintf): Implement.
	* mlibc/libc-mes.c (vsprintf): New function
	  (sprintf): Use it.

2017-08-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: struct.struct.
	* module/language/c99/compiler.mes (field:name):
	  (field:pointer):
	  (field:size):
	  (field:type):
	  (field-field):
	  (field-offset):
	  (struct-field): Support struct.struct.
	* scaffold/tests/7i-struct-struct.c: Test it.
	* make.scm (add-scaffold-test): Build it.

	mescc: Fix compile warnings.
	* mlibc/include/stdio.h (fdputs): Declare.
	* mlibc/libc-gcc.c (malloc):
	  (memcpy): Fix compile warning.

	mescc: Tinycc support: --*p, ++*p.
	* module/language/c99/compiler.mes (expr->accu): Remove specific --/++.
	  (expr->accu*): Support p, *p.
	* scaffold/tests/76-pointer-arithmetic.c (test): Test it.

2017-08-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: word array assignment.
	* stage0/x86.M1 (movzwl_(%eax),%eax): New define.
	* module/mes/as-i386.mes (i386:word-mem->accu): New function.
	* module/mes/as-i386.scm: Export it.
	* module/language/c99/compiler.mes (expr->accu): word array assignment.
	  (expr->accu*): word array assignment.
	* scaffold/tests/7a-struct-char-array.c (test): Test it.

2017-08-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: struct char array assignment.
	* module/language/c99/compiler.mes (expr->accu): struct char array assignment.
	* scaffold/tests/7a-struct-char-array.c (test): Test it.

2017-08-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: struct assign by value.
	* module/language/c99/compiler.mes (base->ident): Remove.
	  (accu->ident): Use them to support assign of size >4 by value.
	* scaffold/tests/7h-struct-assign.c: Test it.
	* make.scm (add-scaffold-test): Build it.
	* module/mes/as-i386.mes (i386:base->local): Remove.
	  (i386:accu*n->local):
	  (i386:accu*n->label): New functions.
	* module/mes/as-i386.scm: Export them.
	* stage0/x86.M1: (mov____%ebx,0x32):
	  (mov____%ebx,0x32(%ebp)):
	  (mov____%ebx,0x8(%ebp)):
	  (mov____%ebx,0x8(%edx)):
	  (mov____%ecx,0x32(%ebp)):
	  (mov____%ecx,0x8(%ebp)):
	  (mov____0x32(%eax),%ebx):
	  (mov____0x32(%eax),%ecx):
	  (mov____0x8(%eax),%ebx): New define.

	mescc: Tinycc support: eputc.
	* mlibc/include/stdio.h (eputc): Declare.
	* mlibc/libc-gcc.c (eputc):
	* mlibc/libc-mes.c (eputc): New function.

	mescc: Move simple main to scaffold.
	* scaffold/main.c (main): Move from doc/examples/main.c
	* make.scm: Build it.
	* README: Update.
	* guile/mescc.scm (main):
	* scripts/mescc.mes (main): Remove fallback doc/examples/main.c

	mescc: Tinycc support: byte and word struct fields.
	* stage0/x86.M1 (mov____%al,0x8(%edx)):
	  (mov____%ax,(%edx)):
	  (mov____%ax,0x32(%edx)):
	  (mov____%ax,0x8(%edx)):
	  (movzbl_0x32(%eax),%eax):
	  (movzbl_0x8(%eax),%eax):
	  (movzwl_0x32(%eax),%eax):
	  (movzwl_0x8(%eax),%eax): New define.
	* module/mes/as-i386.mes (i386:word-accu->base-mem):
	  (i386:byte-accu->base-mem+n):
	  (i386:word-accu->base-mem+n):
	  (i386:byte-mem+n->accu):
	  (i386:word-mem+n->accu): New function.
	* module/mes/as-i386.scm: Export them.
	* module/language/c99/compiler.mes (struct-field): Use actual size for
	  simple types (WAS: 4).
	  (decl->info):
	  (expr->accu): Respect byte and word struct field sizes.
	* scaffold/tests/7g-struct-byte-word-field.c: Test it.
	* make.scm (add-scaffold-test): Build it.

	mescc: Tinycc support: eputs as function for gcc.
	* mlibc/libc-gcc.c (eputs)[POSIX]: New function.
	* mlibc/include/stdio.h (eputs)[POSIX]: Remove define.

2017-08-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: fixes for foo.bar[baz].
	* module/language/c99/compiler.mes (expr->accu, expr->accu*): fixes for foo.bar[baz].
	* scaffold/tests/7c-dynarray.c: Test it.

	mescc: Tinycc support: fixes for foo->bar[baz].
	* module/language/c99/compiler.mes (expr->accu, expr->accu*): fixes
	  for foo->bar[baz].
	  (expr->pointer): Support i-sel.
	  (p-expr->type): Support add, sub, de-ref, ref-to.
	* scaffold/tests/7f-struct-pointer-arithmetic.c: Test it.
	* make.scm (add-scaffold-test): Build it.

	mescc: Tinycc support: foo.bar[baz], foo->bar[baz] for typedef'd struct bar.
	* module/language/c99/compiler.mes (expr->accu): foo.bar[baz],
	  foo->bar[baz] for typedef'd struct bar.
	* scaffold/tests/7c-dynarray.c: Test it.

2017-08-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: foo[index]->bar for array bar.
	* module/language/c99/compiler.mes (expr->accu*): foo[index]->bar for array bar.
	* scaffold/tests/7e-struct-array-access.c: Test it.
	* make.scm (add-scaffold-test): Build it.

2017-08-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "mescc: Tinycc support: workaround for nyacc "\0" bug."
	This reverts commit b160540e221dbeb96908823b5a3504bdbfd7f751.

	Fixed by: https://lists.gnu.org/archive/html/guile-user/2017-08/msg00007.html

2017-08-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: use nyacc 0.80.41.
	* guix.scm (nyacc): use 0.80.41.

	mescc: Tinycc support: ((unsigned char*)str)[i].
	* module/language/c99/compiler.mes (expr->accu*): Consider size of
	  expr array deref.
	* scaffold/tests/7d-cast-char.c: Test it.

	mescc: Tinycc support: ((unsigned char*)str)[0].
	* module/language/c99/compiler.mes (expr->accu): Consider size of
	  expr array deref.
	* stage0/x86.M1 (movzbl_0x32(%ebp),%eax): New define.
	* scaffold/tests/7d-cast-char.c: Test it.

	mescc: Tinycc support: define __linux__.
	* module/language/c99/compiler.mes (c99-input->full-ast): Add
	  "__linux__=1" to cpp-defs.

2017-08-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: strcat.
	* mlibc/libc-mes+tcc.c (strcat): Implement.

	mescc: Tinycc support: vsnprintf.
	* module/language/c99/compiler.mes (ast-type->type): Support *p++ in test.
	* mlibc/libc-mes+tcc.c (vsnprintf): Implement.

	mescc: Tinycc support: support foo.bar[baz], foo->bar[baz] for struct bar.
	* module/language/c99/compiler.mes (struct-field): Use negative
	  pointer for struct array fields.
	  (expr->accu): support: support foo.bar[baz], foo->bar[baz] for struct bar.
	* scaffold/tests/7c-dynarray.c: Test it.

	mescc: drop naive realloc.
	* mlibc/libc-gcc.c (free, memcpy): Move from libc-mes+tcc.c.
	  (realloc): Use realloc from libc-mes+tcc.c
	* mlibc/libc-gcc+tcc.c (free, memcpy, realloc): Remove.
	* mlibc/libc-mes+tcc.c (free, memcpy, realloc): Remove.
	* scaffold/tests/79-int-array.c (test): Update.
	* scaffold/tests/7a-struct-char-array.c (test): Update.

2017-07-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: ((foo*) p) + n.
	* module/language/c99/compiler.mes init-declr->pointer, expr->pointer,
	  expr->size): support: ((foo*) p) + n.
	  (expr->accu*): Consider field size for foo.bar[baz].
	* scaffold/tests/7b-struct-int-array.c: Test it.
	* make.scm (add-scaffold-test): Build it.

2017-07-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: field size of foo.bar[baz], foo->bar[baz].
	Inspired by a patch from rain1 for foo->bar[baz].

	* module/language/c99/compiler.mes (expr->accu):
	  (expr->accu*): Consider field size for foo.bar[baz].
	* scaffold/tests/7a-struct-char-array.c: Test it.
	* make.scm (add-scaffold-test): Build it.

2017-07-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: fwrite.
	* mlibc/libc-mes+tcc.c (fwrite): Implement.

	mescc: Tinycc support: fclose.
	* mlibc/libc-mes+tcc.c (fclose): Implement.

2017-07-30  rain1  <rain1@openmailbox.org>

	mescc: Tinycc support: fgetc.
	* mlibc/libc-mes.c (fgetc): Implement.

	mescc: Tinycc support: fprintf.
	* mlibc/libc-mes+tcc.c (fprintf): Implement.

	mescc: allow complicated enums expressions.
	* module/language/c99/compiler.mes (p-expr->number): Support lshift, rshift, ash.
	  (enum-def-list->constants): Refactor using p-expr->number.

	mescc: support \x00 strings in M1.
	* module/mes/M1.mes (object->m1): Support \x00 strings.

2017-07-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: memmove.
	* mlibc/libc-mes+tcc.c (memmove): Implement.

	mescc: Tinycc support: strrchr.
	* mlibc/libc-mes+tcc.c (strrchr): Implement.

	mescc: Tinycc support: strchr.
	* mlibc/libc-mes+tcc.c (strchr): Implement.

2017-07-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: noisy stubs.
	* mlibc/libc-mes+tcc.c: Noisy stubs.

2017-07-30  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: int foo[bar] = {baz,...}.
	* scaffold/tests/79-int-array.c: Test it.
	* make.scm (add-scaffold-test): Build it.
	* module/language/c99/compiler.mes (init-declr->count): New function.
	  (decl->info): Support int foo[bar] = {baz,...}.

2017-07-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: union.struct.
	* module/language/c99/compiler.mes (decl->info): Support struct inside union.
	* scaffold/tests/78-union-struct.c: Test it.
	* make.scm (add-scaffold-test): Build it.

	mescc: Tinycc support: fix accu value after comparison.
	* stage0/x86.M1 (setg___%al,, setge__%al, setl___%al, setle__%al): New
	  defines.
	* module/mes/as-i386.mes (i386:g?->accu, i386:ge?->accu,
	  i386:l?->accu, i386:le?->accu, i386:jumpl, i386:jumple): New functions.
	* module/mes/as-i386.scm: Export them.
	* module/language/c99/compiler.mes (expr->accu): Use them to fix accu
	  value after comparisons.
	  (test-jump-label->info): Update comparison jumps.

	mescc: Tinycc support: memcmp.
	* mlibc/libc-mes+tcc.c (memcmp): Implement.

	mescc: Tinycc support: bugfix *++foo,*--foo.
	* module/language/c99/compiler.mes (c99-input->full-ast): Pre-define NULL.
	  (expr->pointer, expr->size): Handle pre/post-inc/dec.

	mescc: Tinycc support: uniquify strings per compilation unit.
	* module/mes/M1.mes (object->M1): Add file-name to string id.

2017-07-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: foo.bar = foo.baz = bla.
	* module/language/c99/compiler.mes (expr->base*): New function.
	 (expr->accu): Use it to have value in accu for assignments.
	* scaffold/tests/77-pointer-assign.c (test): Test it.
	* stage0/x86.M1 (mov____%ecx,(%edx), mov___(%eax),%ecx): New define.
	* module/mes/as-i386.mes (accu-mem->base->mem): New function.
	  (i386:byte-base->accu-mem+n):
	  (i386:byte-base->accu-mem):
	  (i386:base-mem->accu-mem):
	  (i386:base->accu-mem):
	  (i386:value->accu-mem+n):
	  (i386:value->accu-mem):
	  (i386:accu->base-mem+n):
	  (i386:byte-accu->base-mem):
	  (i386:accu->base-mem): Rename from accu-address, base-address.
	  Update callers.
	* module/mes/as-i386.scm (mes): Update exports.

	mescc: Tinycc support: workaround for nyacc "\0" bug.
	* module/language/c99/compiler.mes (fix-null): Replace "\nul" with "\0".
	  (initzer->data): Use it.
	  (expr->global): Use it.

	mescc: Tinycc support: bugfix foo % bar.
	* stage0/x86.M1 (mov____%edx,%ebx): Typo
	  (idiv___%ebx): Replace div____%ebx.
	* module/mes/as-i386.mes (i386:accu/base): Update.
	  (i386:accu%base): Update.

2017-07-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: fix foo[bar]->baz.
	* module/language/c99/compiler.mes (expr->accu*): Lose one indirection.
	* scaffold/tests/72-typedef-struct-def.c: Test it.

2017-07-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: foo *bar[baz].
	* module/language/c99/compiler.mes (decl->info): Support foo *bar[baz].
	* module/language/c99/compiler.mes (push-global): Support push of -2,
	  -1.  Change signature to take info.  Update callers.
	  (push-global-address): Change signature to take info.  Update callers.

	mescc: Tinycc support: bugfix foo[bar] = baz, with foo*[].
	* module/language/c99/compiler.mes (expr->accu): Support size for more expressions.
	  (expr->pointer):
	  (expr->size): Support more expressions.
	* scaffold/tests/77-pointer-assign.c (add0): Test it.

	mescc: Tinycc support: bugfix *foo = bar.
	* module/language/c99/compiler.mes (base->ident-address): Typo, fixes (non-char*)*x = y.
	* scaffold/tests/77-pointer-assign.c (test): Test it.

	mescc: Tinycc support: bugfix *(cast)foo = bar.
	* module/language/c99/compiler.mes (expr->accu): Thinko for de-ref assign.
	* stage0/x86.M1: Fix typos.
	* module/mes/as-i386.mes: Update for typos.
	* scaffold/tests/77-pointer-assign.c: Test it.
	* make.scm (add-scaffold-test): Build it.

	mescc: Tinycc support: pointer arithmetic.
	* module/language/c99/compiler.mes (ident->size, expr->size): New function.
	  (expr->accu): Use them for ++,--,add, sub.
	  (i386:type-alist): Set void size to 1.
	* scaffold/tests/71-struct-array.c (test):
	* scaffold/tests/76-pointer-arithmetic.c: Test it.
	* make.scm (add-scaffold-test): Build it.

	mescc: Tinycc support: compile tcc with TCC_IS_NATIVE.
	* mlibc/include/string.h (strcat): Declare.
	* mlibc/libc-mes+tcc.c (dlclose, dlopen, mprotect, sigaction,
	  sigemptyset, strcat, vfprintf): Move from libc-gcc+tcc.c.
	* mlibc/libc-gcc+tcc.c: Remove them.
	* module/language/c99/compiler.mes (c99-input->full-ast): Define __i386__=1.
	  (i386:type-alist): Parse `long long int', `unsigned short int',
	  `unsigned long long int'.
	  (struct-field): Support void**.
	  (init-declr->name):
	  (init-declr->pointer): Support function declaration.

2017-07-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	mlibc: Tinycc support: gcc -nostdinc -nostdlib.
	* mlibc/libc-gcc+tcc.c: New file.
	* mlibc/include/dlfcn.h:
	* mlibc/include/errno.h:
	* mlibc/include/signal.h:
	* mlibc/include/sys/mman.h:
	* mlibc/include/sys/time.h:  Add tcc declarations.

	mescc: Tinycc support: malloc,memcpy.
	* mlibc/libc-mes.c (malloc): Rewrite.
	* mlibc/libc-mes+tcc.c (memcpy): Implement.

	build: support libc-mes+tcc.

	mescc: Tinycc support: memset.
	* mlibc/libc-mes+tcc.c (memset): Implement.

2017-08-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: bump default maximum for M1-strings to 80.
	* module/mes/M1.mes (object->M1): bump default maximum for M1-strings to 80.

2017-07-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Tinycc support: oops, use new realloc.
	* mlibc/libc-mes.c (realloc): Disable naive realloc for libc-mes+tcc.c.

	mescc: Bugfix: output M1-strings if possible.
	* module/mes/M1.mes (object->M1): Typo.  Also disallow \return in M1-strings.

2017-07-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Release update.
	* guix.scm (mes): Update commit, hash and version.

	Release 0.9.
	* configure (VERSION): Bump to 0.9.

	doc: Release udpate.
	* HACKING: Update.
	* INSTALL: Update.
	* NEWS: Update.
	* README: Update.
	* doc/ANNOUNCE-0.9: New file.
	* make.scm: Install it.
	* guix.scm (mescc-tools): Bump to 0.2.

	build: Install and installed-run fixes.
	* guile/mescc.scm (%datadir,%docdir,%moduledir,%version): Remove.
	* scripts/mescc.mes: Likewise.
	* module/language/c99/compiler.mes: Likewise.
	 (%prefix): Prefer environment setting.
	 (c99-input->full-ast): Remove unnecessary includes.
	 Remove unnecessary defines.
	* make.scm (%scm-files): Add mes/guile.scm.
	 (src/mes.gcc, src/mes.mlibc-gcc, src/mes.guile):  Update  MODULEDIR,
	 add -I src.
	* src/mes.c (load_env): Use temporary variable for MODULEDIR concatenation.
	  (bload_env): Likewise.

	mescc: Tinycc support: calloc,malloc,realloc.
	* mlibc/libc-mes+tcc.c (calloc,malloc,realloc): New function.

	mescc: Tinycc support: bugfix struct.array.
	* module/language/c99/compiler.mes (struct-field): Update pointer
	  info.
	  (field:name,field:pointer,field:size,field:type): Rely on pointer
	  info.
	  (field:pointer): New function.
	 (expr->accu): Use it.
	* scaffold/tests/71-struct-array.c (test): Test it.

	mescc: Tinycc support: bugfix struct pointer.
	* module/language/c99/compiler.mes (decl->info): Only set non-pointer struct to -1.
	* scaffold/tests/23-pointer.c (test): Test it.

	mescc: Tinycc support: more function stack space.
	* module/mes/as-i386.mes (function-locals): Increase local space from
	  64 (16 vars) to 2*1025 + 80 (20 vars).

	mescc: Tinycc support: bugfix for char **pp = *p.
	* module/language/c99/compiler.mes (ptr-declr->pointer): Grok ***.
	  (decl->info): Bugfix for char **pp = *p, cleanup.
	* mlibc/libc-mes.c (getenv): Update for bugfix.
	* scaffold/tests/23-pointer.c (test): Test it.

	mescc: Tinycc support: execvp stub.
	* mlibc/include/unistd.h (execvp): Declare.
	* mlibc/libc-mes+tcc.c (execvp): Add stub.

	mescc: Tinycc support: remove stub.
	* mlibc/include/stdio.h (remove): Declare.
	* mlibc/libc-mes+tcc.c (remove): Add stub.

	mescc: Tinycc support: fread stub.
	* mlibc/include/stdio.h (fread): Declare.
	* mlibc/libc-mes+tcc.c (fread): Add stub.

	mescc: Tinycc support: ftell stub.
	* mlibc/include/stdio.h (ftell): Declare.
	* mlibc/libc-mes+tcc.c (ftell): Add stub.

	mescc: Tinycc support: fseek stub.
	* mlibc/include/stdio.h (fseek): Declare.
	* mlibc/libc-mes+tcc.c (fseek): Add stub.

	mescc: Tinycc support: fopen stub.
	* mlibc/include/stdio.h (fopen): Declare.
	* mlibc/libc-mes+tcc.c (fopen): Add stub.

	mescc: Tinycc support: strstr stub.
	* mlibc/include/string.h (strstr): Declare.
	* mlibc/libc-mes+tcc.c (strstr): Add stub.

	mescc: Tinycc support: sscanf stub.
	* mlibc/include/stdio.h (sscanf): Declare.
	* mlibc/libc-mes+tcc.c (sscanf): Add stub.

	mescc: Tinycc support: longjmp, setjump stub.
	* mlibc/include/stdarg.h (longjmp, setjmp): Declare.
	* mlibc/libc-mes+tcc.c (longjmp, setjmp): Add stub.

	mescc: Tinycc support: function parameters.
	* module/language/c99/compiler.mes (.name): Handle function parameters.

	mescc: Tinycc support: fflush stub.
	* mlibc/include/stdio.h (fflush): Declare.
	* mlibc/libc-mes+tcc.c (fflush): Add stub.

	mescc: Tinycc support: vnsprintf stub.
	* mlibc/include/stdarg.h (vnsprintf): Declare.
	* mlibc/libc-mes+tcc.c (vnsprintf): Add stub.

	mescc: Tinycc support: jump 32.
	* module/mes/as-i386.mes (i386:jump-byte-z): Use jne32 (was: jne8).

	mescc: Tinycc support: free stub.
	* mlibc/include/stdlib.h (free): Declare.
	* mlibc/libc-mes+tcc.c (free): Add stub.

	mescc: Tinycc support: strrchr stub.
	* mlibc/include/string.h (strrchr): Declare.
	* mlibc/libc-mes+tcc.c (strrchr): Add stub.

	mescc: Tinycc support: strtoll stub.
	* mlibc/include/stdlib.h (strtoll): Declare.
	* mlibc/libc-mes+tcc.c (strtoll): Add stub.

	mescc: Tinycc support: strtoull stub.
	* mlibc/include/stdlib.h (strtoull): Declare.
	* mlibc/libc-mes+tcc.c (strtoull): Add stub.

	mescc: Tinycc support: strtol stub.
	* mlibc/include/stdlib.h (strtol): Declare.
	* mlibc/libc-mes+tcc.c (strtol): Add stub.

	mescc: Tinycc support: lseek.
	* mlibc/include/unistd.h (lseek): Declare.
	* stage0/x86.M1 (SYS_lseek): New define.
	* mlibc/libc-mes+tcc.c (lseek): New function.

	mescc: Tinycc support: fclose stub.
	* mlibc/include/stdio.h (fclose): Declare.
	* mlibc/libc-mes+tcc.c (fclose): Add stub.

	mescc: Tinycc support: fdopen stub.
	* mlibc/include/stdio.h (fdopen): Declare.
	* mlibc/libc-mes+tcc.c (fdopen): Add stub.

	mescc: Tinycc support: unlink.
	* mlibc/include/unistd.h (unlink): Declare.
	* stage0/x86.M1 (SYS_unlink): New define.
	* mlibc/libc-mes+tcc.c (unlink): New function.

	mescc: Tinycc support: fwrite stub.
	* mlibc/include/stdio.h (fwrite): Declare.
	* mlibc/libc-mes+tcc.c (fwrite): Add stub.

	mescc: Tinycc support: qsort stub.
	* mlibc/include/stdlib.h (qsort): Declare.
	* mlibc/libc-mes+tcc.c (qsort): Add stub.

	mescc: Tinycc support: getcwd.
	* mlibc/include/unistd.h (getcwd): Declare.
	* stage0/x86.M1 (SYS_getcwd): New define.
	* mlibc/libc-mes+tcc.c (getcwd): New function.

	mescc: Tinycc support: strchr stub.
	* mlibc/include/string.h (strchr): Declare.
	* mlibc/libc-mes+tcc.c (strchr): Add stub.

	mescc: Tinycc support: fprintf stub.
	* mlibc/include/stdio.h (fprintf): Declare.
	* mlibc/libc-mes+tcc.c (fprintf): Add stub.

	mescc: Tinycc support: localtime stub.
	* mlibc/include/time.h (localtime): Declare.
	* mlibc/libc-mes+tcc.c (localtime): Add stub.

	mescc: Tinycc support: time stub.
	* mlibc/include/time.h (time): Declare.
	* mlibc/libc-mes+tcc.c (time): Add stub.

	mescc: Tinycc support: snprintf stub.
	* mlibc/include/stdio.h (snprintf): Declare.
	* mlibc/libc-mes+tcc.c (snprintf): Add stub.

	mescc: Tinycc support: strtoul stub.
	* mlibc/include/stdlib.h (strtoul): Declare.
	* mlibc/libc-mes+tcc.c (strtoul): Add stub.

	mescc: Tinycc support: memmove stub.
	* mlibc/include/string.h (memcmp): Declare.
	* mlibc/libc-mes+tcc.c (memcmp): Add stub.

	mescc: Tinycc support: memset stub.
	* mlibc/include/string.h (memset): Declare.
	* mlibc/libc-mes+tcc.c (memset): Add stub.

	mescc: Tinycc support: memmove stub.
	* mlibc/include/string.h (memmove): Declare.
	* mlibc/libc-mes+tcc.c (memmove): Add stub.

	mescc: Tinycc support: memcpy stub.
	* mlibc/include/string.h (memcpy): Declare.
	* mlibc/libc-mes+tcc.c (memcpy): Add stub.

	mescc: Tinycc support: close.
	* stage0/x86.M1 (SYS_close): New define.
	* mlibc/include/unistd.h (close): Declare.
	* mlibc/libc-mes+tcc.c: New file.
	* make.scm: Build and install it.

	mescc: Tinycc support: arithmetic in initializes.
	* module/language/c99/compiler.mes (p-expr->number): Handle
	  bitwise-or, constants.
	  (initzer-data): Refactor, use p-expr->number.

	mescc: Tinycc support: multi-byte [local] offsets.
	* stage0/x86.M1: Add 32bit variants for all 8bit instructions.
	* module/mes/as-i386.mes: Use them, switch on size.

	mescc: Naming fix.
	* stage0/x86.M1 (je8): Rename from jne8.
	* module/mes/as-i386.mes (i386:jump-byte-z): Update.

	mescc: Tinycc support: remove warnings for foo (void), foo (...).
	* module/language/c99/compiler.mes (.name, .type): Expect foo (void), foo (...).

	mescc: Tinycc support: multiple statements in default case.
	* module/language/c99/compiler.mes (clause->info): Support multiple
	  statements in default case.

	mescc: Tinycc support: array[<const-expr>].
	* module/language/c99/compiler.mes (p-expr->number): New function.
	  (struct-field, decl->info): Use it to support const expressions in array size.

	mescc: Use "tag" for tag namespace.
	* module/language/c99/compiler.mes: Use "tag" for tag namespace (WAS: "struct").
	  Move enums to "tag" namespace.

	mescc: Guile eval.c support: headers.
	* mlibc/include/signal.h (sigset_t): New type.
	* mlibc/include/float.h: New file.
	* mlibc/include/stddef.h: New file.
	* mlibc/include/sys/select.h: New file.

	mescc: Non-Guix support.  Thanks rain1!
	* mlibc/include: Neutralize include guards before #include_next.
	  Fixes compiling tinycc on Debian GNU/Linux.

	mescc: Tinycc support: sizeof (struct.field).
	* module/language/c99/compiler.mes (expr->accu): Support sizeof (struct.field).

	mescc: Tinycc support: struct.union.
	* module/language/c99/compiler.mes (struct-field): Add struct tag to
	  struct/union types.
	  (field-type, field-size, field-offset, field-field, ast-type->type):
	  Ascertain struct tag with type.
	* (expr->accu*): Do not add struct tag.
	* scaffold/tests/75-struct-union.c: Test it.
	* scaffold/tests/71-struct-array.c: Update.

	mescc: Tinycc support: sizeof ("foo").
	* module/language/c99/compiler.mes (expr->accu): Support sizeof (string).

	mescc: Tinycc support: struct foo {int bar; int baz} = {0}.
	* module/language/c99/compiler.mes (decl->info): struct foo {int bar; int baz} = {0}.
	* scaffold/tests/72-typedef-struct-def.c (test):

	mescc: Tinycc support: generalize neg.
	* module/language/c99/compiler.mes (expr->accu): Generalize neg.

	mescc: Tinycc support: >>=, <<=.
	* module/language/c99/compiler.mes (expr->accu): Support >>= <<=.

	mescc: Bugfix non-char* *x x[] test.
	* module/language/c99/compiler.mes (expr->pointer): New function.
	  (test-jump-label->info): Use it to fix non char* while (*x | x[i]).

	mescc: Tinycc support: foo[i].bar.baz.
	* module/language/c99/compiler.mes (init-declr->pointer): Use -1 for array.
	 (expr->accu): Implement foo[i].bar.baz.
	* scaffold/tests/72-typedef-struct-def.c (test): Test it.

	mescc: Tinycc support: *global =.
	* module/language/c99/compiler.mes (base->ident-address):
	  Support *global = ...
	* scaffold/tests/74-multi-line-string.c: Test it.

	mescc: Tinycc support: anonymous union.
	* module/language/c99/compiler.mes (field:name): New function.
	  (decl->info): Use it.
	  (struct-field): Support anonymous union.
	  (field:size): Update.
	  (field-field): Update.
	  (field-offset): Update.

	mescc: Tinycc support: declare struct tm.
	* mlibc/include/time.h (struct tm): New type.

	mescc: Tinycc support: ignore [ULL], UL, LL, L.
	* module/language/c99/compiler.mes (cstring->number): Drop suffix.

	mescc: Tinycc support: ~, ^=.
	* module/mes/as-i386.mes (i386:accu-not): New function.
	  (i386:accu-negate): Rename from i386:accu-not.
	* module/mes/as-i386.scm (mes): Export them.
	* module/language/c99/compiler.mes (expr->accu): Support ~, ^=.
	* scaffold/tests/60-math.c (test): Test it.
	* stage0/x86.M1 (not____%eax): New define.

	mescc: Tinycc support: struct.struct.
	* module/language/c99/compiler.mes (expr->accu): Support &*,
	  bar.foo.i, p->foo.i, p->pf->i (*pp)->foo.i, [slightly modified] offsetof.
	* scaffold/tests/72-typedef-struct-def.c (test): Test them.

	mescc: Tinycc support: ***parameter.
	* module/language/c99/compiler.mes (.name): Support ***parameter.

	mescc: Tinycc support: bitwise-or initializer.
	* module/language/c99/compiler.mes (initzer->value): New function.
	  (initzer->data): Use it to support bitwise-or initializer.
	* scaffold/tests/74-multi-line-string.c (test): Test it.

	mescc: Tinycc support: char*[] in function.
	* module/language/c99/compiler.mes (c99-input->full-ast): Add NULL.
	  (decl->info): Support char* [] in function scope.
	* scaffold/tests/71-struct-array.c (test) Test it.

	mescc: Tinycc support: more list initializers.
	* module/language/c99/compiler.mes (init-declr->name): Handle array,
	  pointer array.
	  (init-declr->pointer): Likewise.
	  (decl->info): Generalize list initializers, add pointer variant.
	  FIXME: AST-rewriting?

	mescc: Tinycc support: headers.
	* mlibc/include/string.h (ssize_t): New type.
	* mlibc/include/unistd.h (ssize_t): New type.

	mescc: Tinycc support: sizeof struct field.
	* module/language/c99/compiler.mes (expr->accu): Sizeof struct field.
	* scaffold/tests/72-typedef-struct-def.c (test): Test it.

	mescc: Tinycc support: sizeof typename.
	* module/language/c99/compiler.mes (expr->accu): Sizeof typename.

	mescc: Tinycc support: pre/post-inc/dec more.
	* module/language/c99/compiler.mes (expr-add): New function.
	  (expr->pointer): New function.
	  (expr->accu): Use it to support broader pre/post-inc/dec..
	* scaffold/tests/72-typedef-struct-def.c (test): Test it.

	mescc: Tinycc support: comma operator.
	* module/language/c99/compiler.mes (expr->accu): Handle comma operator.
	* scaffold/tests/74-multi-line-string.c (test): Test it.

	mescc: Tinycc support: assign pointer to struct field.
	* module/language/c99/compiler.mes (expr->accu, expr->accu*): Support
	  pointer field selection.
	* scaffold/tests/72-typedef-struct-def.c (test): Test it.

	mescc: Tinycc support: multi-line strings.
	* module/language/c99/compiler.mes (initzer->data, expr->global):
	  Handle multi-line strings.
	* scaffold/tests/74-multi-line-string.c: New file.
	* make.scm (add-scaffold-test): Build it.

	mescc: Tinycc support: union.
	* scaffold/tests/73-union.c: New file.
	* module/language/c99/compiler.mes (union->type-entry): New
	  function.
	  (decl->info): Support unions.

	mescc: Tinycc support: struct.
	* scaffold/tests/72-typedef-struct-def.c: New file.
	* module/language/c99/compiler.mes (decl->info): Struct support for tinycc.

	mescc: Refactor decl.
	* module/mes/as-i386.mes (i386:mem->base, i386:nop): New functions.
	* module/mes/as-i386.scm: Export them.
	* module/language/c99/compiler.mes:
	* stage0/x86.M1 (nop,mov____(%edx),%edx,movzbl_(%edx),%edx): New defines.
	* scaffold/tests/23-pointer.c: New file.
	* scaffold/tests/t.c: New file.
	* make.scm: Build them.
	* module/language/c99/compiler.mes (init-declr->name): Handle array.
	  (init-declr->pointer): Likewise.
	  (ident->accu): Simplify.
	  (ident->base): Simplify.
	  (ident-address->base): Typo.
	  (expr->accu): Simplify.
	  (decl->info): Simplify.
	* mlibc/libc-mes.c (getenv): Remove superfluous statement.

	mescc: Use records for Guile: <local>.
	* module/language/c99/info.scm (<local>): New record.
	* module/language/c99/compiler.mes (make-local-entry): Rename from
	  make-local.  Update callers.
	  (local-var?): Rename from local?. Update callers.
	* module/language/c99/info.mes (make-local, local:type, local:pointer,
	  local:id): Move from compiler.mes.

	mescc: Use records for Guile: <global>.
	* module/language/c99/info.scm (<global>): New record.
	* module/language/c99/compiler.mes (make-global-entry): Rename from
	  make-global.  Update callers.
	* module/language/c99/info.mes (make-global, global:type,
	  global:pointer, global:value): Move from compiler.mes.

	mescc: Use records for Guile: <type>.
	* module/language/c99/info.scm (<type>): New record.
	* module/language/c99/compiler.mes (make-type-entry): Rename from
	  make-type.  Update-callers.
	* module/language/c99/info.mes (make-type, type:type, type:size,
	  type:pointer, type:description): Move from compiler.mes.

	mescc: Use records for Guile: <info>.
	* module/language/c99/info.scm (<info>): Make immutable record.
	  Update users.

	mescc: Use records for Guile: preparation.
	* module/language/c99/info.mes: New file.
	* module/mes/M1.mes: Use it.
	* scripts/mescc.mes: Use it.
	* module/language/c99/compiler.mes: Use it.  (<info>, <types>,
	  <constants>, <functions>, <globals>, <locals>, <function>, <text>,
	  <break>, <continue>, make, info?, .info, .types, .constants,
	  .functions, .globals, .locals, .function, .text, .break, .continue):
	  Remove.
	* module/language/c99/info.scm: New file.
	* module/language/c99/compiler.scm: Use it.
	* guile/mescc.scm: Use it.
	* module/mes/M1.scm: Use it.

	mescc: Refactor decl.
	* module/language/c99/compiler.mes (decl->info, ptr-declr->pointer):
	  New function.
	  (ast->info): Use decl->info.

	guix: Update build.
	* guix.scm (mes): Do not strip.  Fixes mes binary.

	build: support Guix.
	* guile/guix/make.scm (link-or-cp): New function.
	  (assert-link, store): Use it.

	build: Add make install.
	* guile/guix/make.scm (method-cp, install, install-target?): New functions.
	* make.scm: Use them.

	build: Add target list.
	* GNUmakefile (%): Handle all targets.
	* make.scm (main): Show and implement target list.

	build: Ignore some files.
	.gitignore: Update for make.scm.

	build: Bugfix for store.
	* guile/guix/make.scm (store): Add each store file only once.

	build: Resurrect guile-2.0.  Thanks rain1!
	* module/mes/guile.scm: New file.
	* module/mes/elf.scm: Include it.
	* module/mes/bytevectors.scm: : Include it.
	* module/mes/as.scm: Include it.
	* module/mes/as-i386.scm: Include it.
	* module/mes/M1.scm: Include it.
	* module/language/c99/compiler.scm: Include it.
	* make.scm: Update.

2017-07-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Non-Guix build robustifications.  Thanks, rain1!
	Fix typo in configure, gracefully switch between M0 vs M1, skip
	CC32/i686-unknown-linux-gnu-gcc targets if not available, esp. for
	non-Guix usage.

	* configure (M1): Declare missing variable.
	* make.scm (main): all-go, clean-go: New targets.
	* GNUmakefile (PHONY_TARGETS): Add them.
	  (.config.make): New target.
	* guile/guix/make.scm (%CC32): Set to #f if not found.
	  (bin.gcc): Skip if CC not set.
	  (check-target?, add-target): Skip if target is not set.

2017-07-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Fix snarf dependencies.
	* guile/guix/make.scm (compile.gcc compile.mescc bin.mescc m1-asm):
	  Accept and forward dependencies.
	* make.scm (gcc-snarf-targets): Remove explicit defaults.

	build: Use released M0 intead of M1.

2017-07-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Import tinycc test suite.
	* make.scm (check-scaffold-tinycc): New target.
	* guile/guix/make.scm (<target>): Add baseline field.
	  (method-check): Handle baseline.
	* scaffold/tinycc/00_assignment.c: New file.
	* scaffold/tinycc/00_assignment.expect: New file.
	* scaffold/tinycc/01_comment.c: New file.
	* scaffold/tinycc/01_comment.expect: New file.
	* scaffold/tinycc/02_printf.c: New file.
	* scaffold/tinycc/02_printf.expect: New file.
	* scaffold/tinycc/03_struct.c: New file.
	* scaffold/tinycc/03_struct.expect: New file.
	* scaffold/tinycc/04_for.c: New file.
	* scaffold/tinycc/04_for.expect: New file.
	* scaffold/tinycc/05_array.c: New file.
	* scaffold/tinycc/05_array.expect: New file.
	* scaffold/tinycc/06_case.c: New file.
	* scaffold/tinycc/06_case.expect: New file.
	* scaffold/tinycc/07_function.c: New file.
	* scaffold/tinycc/07_function.expect: New file.
	* scaffold/tinycc/08_while.c: New file.
	* scaffold/tinycc/08_while.expect: New file.
	* scaffold/tinycc/09_do_while.c: New file.
	* scaffold/tinycc/09_do_while.expect: New file.
	* scaffold/tinycc/10_pointer.c: New file.
	* scaffold/tinycc/10_pointer.expect: New file.
	* scaffold/tinycc/11_precedence.c: New file.
	* scaffold/tinycc/11_precedence.expect: New file.
	* scaffold/tinycc/12_hashdefine.c: New file.
	* scaffold/tinycc/12_hashdefine.expect: New file.
	* scaffold/tinycc/13_integer_literals.c: New file.
	* scaffold/tinycc/13_integer_literals.expect: New file.
	* scaffold/tinycc/14_if.c: New file.
	* scaffold/tinycc/14_if.expect: New file.
	* scaffold/tinycc/15_recursion.c: New file.
	* scaffold/tinycc/15_recursion.expect: New file.
	* scaffold/tinycc/16_nesting.c: New file.
	* scaffold/tinycc/16_nesting.expect: New file.
	* scaffold/tinycc/17_enum.c: New file.
	* scaffold/tinycc/17_enum.expect: New file.
	* scaffold/tinycc/18_include.h: New file.
	* scaffold/tinycc/18_include.c: New file.
	* scaffold/tinycc/18_include.expect: New file.
	* scaffold/tinycc/19_pointer_arithmetic.c: New file.
	* scaffold/tinycc/19_pointer_arithmetic.expect: New file.
	* scaffold/tinycc/20_pointer_comparison.c: New file.
	* scaffold/tinycc/20_pointer_comparison.expect: New file.
	* scaffold/tinycc/21_char_array.c: New file.
	* scaffold/tinycc/21_char_array.expect: New file.
	* scaffold/tinycc/22_floating_point.c: New file.
	* scaffold/tinycc/22_floating_point.expect: New file.
	* scaffold/tinycc/23_type_coercion.c: New file.
	* scaffold/tinycc/23_type_coercion.expect: New file.
	* scaffold/tinycc/24_math_library.c: New file.
	* scaffold/tinycc/24_math_library.expect: New file.
	* scaffold/tinycc/25_quicksort.c: New file.
	* scaffold/tinycc/25_quicksort.expect: New file.
	* scaffold/tinycc/26_character_constants.c: New file.
	* scaffold/tinycc/26_character_constants.expect: New file.
	* scaffold/tinycc/27_sizeof.c: New file.
	* scaffold/tinycc/27_sizeof.expect: New file.
	* scaffold/tinycc/28_strings.c: New file.
	* scaffold/tinycc/28_strings.expect: New file.
	* scaffold/tinycc/29_array_address.c: New file.
	* scaffold/tinycc/29_array_address.expect: New file.
	* scaffold/tinycc/30_hanoi.c: New file.
	* scaffold/tinycc/30_hanoi.expect: New file.
	* scaffold/tinycc/31_args.c: New file.
	* scaffold/tinycc/31_args.expect: New file.
	* scaffold/tinycc/32_led.c: New file.
	* scaffold/tinycc/32_led.expect: New file.
	* scaffold/tinycc/33_ternary_op.c: New file.
	* scaffold/tinycc/33_ternary_op.expect: New file.
	* scaffold/tinycc/34_array_assignment.c: New file.
	* scaffold/tinycc/34_array_assignment.expect: New file.
	* scaffold/tinycc/35_sizeof.c: New file.
	* scaffold/tinycc/35_sizeof.expect: New file.
	* scaffold/tinycc/36_array_initialisers.c: New file.
	* scaffold/tinycc/36_array_initialisers.expect: New file.
	* scaffold/tinycc/37_sprintf.c: New file.
	* scaffold/tinycc/37_sprintf.expect: New file.
	* scaffold/tinycc/38_multiple_array_index.c: New file.
	* scaffold/tinycc/38_multiple_array_index.expect: New file.
	* scaffold/tinycc/39_typedef.c: New file.
	* scaffold/tinycc/39_typedef.expect: New file.
	* scaffold/tinycc/40_stdio.c: New file.
	* scaffold/tinycc/40_stdio.expect: New file.
	* scaffold/tinycc/41_hashif.c: New file.
	* scaffold/tinycc/41_hashif.expect: New file.
	* scaffold/tinycc/42_function_pointer.c: New file.
	* scaffold/tinycc/42_function_pointer.expect: New file.
	* scaffold/tinycc/43_void_param.c: New file.
	* scaffold/tinycc/43_void_param.expect: New file.
	* scaffold/tinycc/44_scoped_declarations.c: New file.
	* scaffold/tinycc/44_scoped_declarations.expect: New file.
	* scaffold/tinycc/45_empty_for.c: New file.
	* scaffold/tinycc/45_empty_for.expect: New file.
	* scaffold/tinycc/46_grep.c: New file.
	* scaffold/tinycc/46_grep.expect: New file.
	* scaffold/tinycc/47_switch_return.c: New file.
	* scaffold/tinycc/47_switch_return.expect: New file.
	* scaffold/tinycc/48_nested_break.c: New file.
	* scaffold/tinycc/48_nested_break.expect: New file.
	* scaffold/tinycc/49_bracket_evaluation.c: New file.
	* scaffold/tinycc/49_bracket_evaluation.expect: New file.
	* scaffold/tinycc/50_logical_second_arg.c: New file.
	* scaffold/tinycc/50_logical_second_arg.expect: New file.
	* scaffold/tinycc/51_static.c: New file.
	* scaffold/tinycc/51_static.expect: New file.
	* scaffold/tinycc/52_unnamed_enum.c: New file.
	* scaffold/tinycc/52_unnamed_enum.expect: New file.
	* scaffold/tinycc/54_goto.c: New file.
	* scaffold/tinycc/54_goto.expect: New file.
	* scaffold/tinycc/55_lshift_type.c: New file.
	* scaffold/tinycc/55_lshift_type.expect: New file.
	* scaffold/tinycc/56_btype_excess-1.c: New file.
	* scaffold/tinycc/56_btype_excess-1.expect: New file.
	* scaffold/tinycc/57_btype_excess-2.c: New file.
	* scaffold/tinycc/57_btype_excess-2.expect: New file.
	* scaffold/tinycc/58_function_redefinition.c: New file.
	* scaffold/tinycc/58_function_redefinition.expect: New file.
	* scaffold/tinycc/59_function_array.c: New file.
	* scaffold/tinycc/59_function_array.expect: New file.
	* scaffold/tinycc/60_enum_redefinition.c: New file.
	* scaffold/tinycc/60_enum_redefinition.expect: New file.
	* scaffold/tinycc/61_undefined_enum.c: New file.
	* scaffold/tinycc/61_undefined_enum.expect: New file.
	* scaffold/tinycc/62_enumerator_redefinition.c: New file.
	* scaffold/tinycc/62_enumerator_redefinition.expect: New file.
	* scaffold/tinycc/63_local_enumerator_redefinition.c: New file.
	* scaffold/tinycc/63_local_enumerator_redefinition.expect: New file.
	* scaffold/tinycc/64_macro_nesting.c: New file.
	* scaffold/tinycc/64_macro_nesting.expect: New file.
	* scaffold/tinycc/67_macro_concat.c: New file.
	* scaffold/tinycc/67_macro_concat.expect: New file.
	* scaffold/tinycc/70_floating_point_literals.c: New file.
	* scaffold/tinycc/70_floating_point_literals.expect: New file.
	* scaffold/tinycc/71_macro_empty_arg.c: New file.
	* scaffold/tinycc/71_macro_empty_arg.expect: New file.
	* scaffold/tinycc/72_long_long_constant.c: New file.
	* scaffold/tinycc/72_long_long_constant.expect: New file.
	* scaffold/tinycc/73_arm64.c: New file.
	* scaffold/tinycc/73_arm64.expect: New file.
	* scaffold/tinycc/74_nocode_wanted.c: New file.
	* scaffold/tinycc/74_nocode_wanted.expect: New file.
	* scaffold/tinycc/75_array_in_struct_init.c: New file.
	* scaffold/tinycc/75_array_in_struct_init.expect: New file.
	* scaffold/tinycc/76_dollars_in_identifiers.c: New file.
	* scaffold/tinycc/76_dollars_in_identifiers.expect: New file.
	* scaffold/tinycc/77_push_pop_macro.c: New file.
	* scaffold/tinycc/77_push_pop_macro.expect: New file.
	* scaffold/tinycc/78_vla_label.c: New file.
	* scaffold/tinycc/78_vla_label.expect: New file.
	* scaffold/tinycc/79_vla_continue.c: New file.
	* scaffold/tinycc/79_vla_continue.expect: New file.
	* scaffold/tinycc/80_flexarray.c: New file.
	* scaffold/tinycc/80_flexarray.expect: New file.
	* scaffold/tinycc/81_types.c: New file.
	* scaffold/tinycc/81_types.expect: New file.
	* scaffold/tinycc/82_attribs_position.c: New file.
	* scaffold/tinycc/82_attribs_position.expect: New file.
	* scaffold/tinycc/83_utf8_in_identifiers.c: New file.
	* scaffold/tinycc/83_utf8_in_identifiers.expect: New file.
	* scaffold/tinycc/84_hex-float.c: New file.
	* scaffold/tinycc/84_hex-float.expect: New file.
	* scaffold/tinycc/85_asm-outside-function.c: New file.
	* scaffold/tinycc/85_asm-outside-function.expect: New file.
	* scaffold/tinycc/86_memory-model.c: New file.
	* scaffold/tinycc/86_memory-model.expect: New file.
	* scaffold/tinycc/87_dead_code.c: New file.
	* scaffold/tinycc/87_dead_code.expect: New file.
	* scaffold/tinycc/88_codeopt.c: New file.
	* scaffold/tinycc/88_codeopt.expect: New file.
	* scaffold/tinycc/89_nocode_wanted.c: New file.
	* scaffold/tinycc/89_nocode_wanted.expect: New file.
	* scaffold/tinycc/90_struct-init.c: New file.
	* scaffold/tinycc/90_struct-init.expect: New file.
	* scaffold/tinycc/91_ptr_longlong_arith32.c: New file.
	* scaffold/tinycc/91_ptr_longlong_arith32.expect: New file.
	* scaffold/tinycc/92_enum_bitfield.c: New file.
	* scaffold/tinycc/92_enum_bitfield.expect: New file.
	* scaffold/tinycc/93_integer_promotion.c: New file.
	* scaffold/tinycc/93_integer_promotion.expect: New file.
	* scaffold/tinycc/COPYING: New file.
	* scaffold/tinycc/LICENSE: New file.

	include

2017-07-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Split-up Mescc scaffold test.
	* make.scm (check-scaffold, check-scaffold-tests): New targets.
	* mlibc/include/00-test.i: New file.
	* mlibc/include/30-test.i: New file.
	* mlibc/mini-libc-mes.c (puts): New function.
	* scaffold/tests/00-exit-0.c: : New file.
	* scaffold/tests/01-return-0.c: : New file.
	* scaffold/tests/02-return-1.c: : New file.
	* scaffold/tests/03-call.c: : New file.
	* scaffold/tests/04-call-0.c: : New file.
	* scaffold/tests/05-call-1.c: : New file.
	* scaffold/tests/06-call-!1.c: : New file.
	* scaffold/tests/10-if-0.c: : New file.
	* scaffold/tests/11-if-1.c: : New file.
	* scaffold/tests/12-if-==.c: : New file.
	* scaffold/tests/13-if-!=.c: : New file.
	* scaffold/tests/14-if-goto.c: : New file.
	* scaffold/tests/15-if-!f.c: : New file.
	* scaffold/tests/16-if-t.c: : New file.
	* scaffold/tests/20-while.c: : New file.
	* scaffold/tests/21-char[].c: : New file.
	* scaffold/tests/22-while-char[].c: : New file.
	* scaffold/tests/30-strlen.c: : New file.
	* scaffold/tests/31-eputs.c: : New file.
	* scaffold/tests/32-compare.c: : New file.
	* scaffold/tests/33-and-or.c: : New file.
	* scaffold/tests/34-pre-post.c: : New file.
	* scaffold/tests/35-compare-char.c: : New file.
	* scaffold/tests/36-compare-arithmetic.c: : New file.
	* scaffold/tests/37-compare-assign.c: : New file.
	* scaffold/tests/38-compare-call.c: : New file.
	* scaffold/tests/40-if-else.c: : New file.
	* scaffold/tests/41-?.c: : New file.
	* scaffold/tests/42-goto-label.c: : New file.
	* scaffold/tests/43-for-do-while.c: : New file.
	* scaffold/tests/44-switch.c: : New file.
	* scaffold/tests/45-void-call.c: : New file.
	* scaffold/tests/50-assert.c: : New file.
	* scaffold/tests/51-strcmp.c: : New file.
	* scaffold/tests/52-itoa.c: : New file.
	* scaffold/tests/53-strcpy.c: : New file.
	* scaffold/tests/54-argv.c: : New file.
	* scaffold/tests/60-math.c: : New file.
	* scaffold/tests/61-array.c: : New file.
	* scaffold/tests/63-struct-cell.c: : New file.
	* scaffold/tests/64-make-cell.c: : New file.
	* scaffold/tests/65-read.c: : New file.
	* scaffold/tests/66-struct-array.c: : New file.
	* scaffold/t.c: Remove.
	* scaffold/t-tcc.c: Remove.

	mescc: Avoid warnings in recursve functions.
	* module/language/c99/compiler.mes (expr->accu): Avoid warnings in recursve functions.

	mescc: undefine __GNUC__.
	* module/language/c99/compiler.mes (c99-input->full-ast): Remove
	  __GNUC__=0.  Should help compiling pcc, libguile/eval.c.

2017-07-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support stdarg.
	* mlibc/include/stdarg.h (va_list): New type.
	  (va_start, va_arg, va_end, va_copy): New macro.
	  (vprintf): New declaration.
	* mlibc/libc-mes.c (vprintf): New function.
	  (printf): Rewrite using vprintf.
	* module/language/c99/compiler.mes (expr->accu, expr->accu*): Handle
	  any array.  Limitation: element size must be 4/sizeof (expression).
	  (make-type): Add value pointer to type.
	  (type:type, type:size, type:pointer, type:description): New functions.
	  (ast->info): Handle typedef with pointer.

2017-07-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Remove make.
	* GNUmakefile: trivial convenience-frontend to ./make.scm
	* make/*.make: Remove.
	* */*.make: Remove.

2017-07-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Produce M1 output instead of hex2.
	Use: ./make.scm [TARGET]
	     ./make.scm check

	* stage0/x86.M1: New file.
	* mlibc/mini-libc-mes.c (exit, write): Use M1 instead of .byte.
	* mlibc/libc-mes.c (_start, exit, read, write, open, access, brk,
	  fsync, printf): Use M1 instead of .byte.
	* module/mes/as-i386.mes: Use M1.
	* module/mes/make.scm: New file.
	* make.scm: New file.
	* guile/guix/records.scm: New File.
	* guile/guix/shell-utils.scm: New file.
	* module/mes/M1.mes: Rename from hex2.mes.
	* module/mes/M1.scm: Rename from hex2.scm.
	* scripts/mescc.mes: Update callers.
	* guile/mescc.scm: Update callers.

2017-06-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Add headers for guile:eval.c.
	* mlibc/include/alloca.h: New file.
	* mlibc/include/stdint.h: New file.
	* mlibc/include/inttypes.h: Remove definitionss, include stdint.h.

	mescc: Add headers for 8cc.
	* mlibc/include/libgen.h: New file.
	* mlibc/include/locale.hh: New file.
	* mlibc/include/stdbool.h: New file.
	* mlibc/include/stdnoreturn.h: New file.
	* mlibc/include/time.h: Add time_t.

2017-06-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Add missing module.
	* guix.scm: Use (guix download).  Fixes compilation with mescc-tools included.

2017-06-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix: Add mescc-tools.
	* guix.scm (mescc-tools): New variable.  Fixes using guix.scm.  Thanks paroneayea!

2017-06-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	Release 0.8.
	* configure (VERSION): Bump.

	build: Release update.
	* configure (main): Make hex2 required.
	* guix.scm (mes): Add mescc-tools to propagated-inputs.  Update commit, hash.

2017-06-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Release update.
	* NEWS: Update.
	* INSTALL: Update.
	* HACKING: Update.
	* doc/ANNOUNCE-0.8: New file.

2017-06-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Remove ELF creation, handled by hex2 now.
	* module/language/c99/compiler.scm (make-global, global:type,
	  global:pointer, global:value): Move from elf-util.mes
	* module/mes/as.mes: New file.
	* module/mes/as-i386.mes: Use it.
	* module/mes/as-i386.scm: Use it.
	* module/mes/elf-util.mes: Remove.
	* module/mes/elf.mes (elf32-addr, elf32-half, elf32-off, elf32-word,
	  make-elf, write-any, object->elf): Remove
	  (hex2->elf): New function with dummy implementation.
	* module/mes/elf.scm: Update exports.
	* module/mes/hex2.mes (object->elf): New function.
	* module/mes/hex2.scm: Export it.

	mescc: Produce object files in hex2 format, remove hex3.
	* GNUmakefile (HEX2_FLAGS): New variable.
	* make/mescc-guile.make ($(OUT)/$(TARGET)): Use HEX2 for linking.
	* make/mescc-mes.make ($(OUT)/$(TARGET)): Likewise.
	* guile/mescc.scm (main): Remove hex3 support.
	* scripts/mescc.mes (main): Likewise.
	* stage0/elf32-0header.hex2: New file, merging of elf32.hex and elf32-header.hex2.
	* stage0/elf-0footer.hex2: New file.
	* stage0/elf32-header.hex2: Rename from elf32-header-exit-42.hex2,
	  repurpose as generic debug heder.
	* stage0/elf32-footer-single-main.hex2: Rename from elf32-footer-exit-42.hex2,
	  repurpose as generic debug footer for single-main source.
	* stage0/exit-42.c: New file.
	* stage0/stage0.make ($(OUT)/0exit-42): Test 0header, 0footer.
	  ($(OUT)/exit-42.guile): Test generic debug header, footer.
	* stage0/elf32.hex2: Remove.

2017-06-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Add stage0 hex2 test.
	* configure (HEX2): Check for hex2 from MESCC_tools.
	* INSTALL: Mention it.
	* GNUmakefile (SUBDIRS): Add stage0.
	* make/check-cc.make: New file.
	* make/check.make: Remove CC-not-empty guard.
	* scaffold/scaffold.make: Update CC check targets.

2017-06-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	stage0: Move to-be-generated part of body to footer.
	* stage0/elf32-footer-exit-42.hex2: Add ELF_str, ELF_sym from body.
	* stage0/elf32-body-exit-42.hex2: Remove ELF_str, ELF_sym.

2017-06-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	stage0: Leverage label>base in stage0 gdb header.
	* stage0/elf32-header-exit-42.hex2: Replace calculated addresses with label>base.
	* stage0/elf32-body-exit-42.hex2: Likewise.

	stage0: Move stage0's section-headers before text.
	* stage0/elf32-header-exit-42.hex2: Add section-headers.
	* stage0/elf32-body-exit-42.hex2: Update.
	* stage0/elf32-footer-exit-42.hex2: Remove section-headers.

2017-06-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	stage0: Add stage0 hex2 gdb header and footer example.
	* stage0/elf32-header-exit-42.hex2: New file.
	* stage0/elf32-footer-exit-42.hex2: New file.

2017-06-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Remove jump calculation, use labels: rename jumps.
	* module/mes/as-i386.mes (i386:jump, i386:jump-byte-z, i386:jump-g,
	  i386:jump-ge, i386:jump-nc, i386:jump-ncz, i386:jump-nz,
	  i386:jump-z): Rename from i386:jump-label*.
	* module/mes/as-i386.scm (mes): Update exports.
	* module/language/c99/compiler.mes (ast->info): Update callers.

	mescc: Remove jump calculation, use labels: remove offset-jumps.
	* module/mes/as-i386.mes (i386:XXjump, i386:Xjump, i386:Xjump-c,
	  i386:Xjump-cz, i386:Xjump-g, i386:Xjump-ge, i386:Xjump-l,
	  i386:Xjump-le, i386:Xjump-nc, i386:Xjump-ncz, i386:Xjump-ncz",
	  i386:Xjump-nz, i386:Xjump-z, i386:jump, i386:jump-byte-nz,
	  i386:jump-byte-z, i386:jump-c, i386:jump-cz, i386:jump-le,
	  i386:jump-nc, i386:jump-ncz, i386:jump-nz, i386:jump-z,
	  i386:test-jump-z): Remove.
	* module/mes/as-i386.scm: Remove export.

2017-06-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Remove jump calculation, use labels: cleanup.
	* module/language/c99/compiler.mes (test->jump->info): Remove.

2017-06-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Remove jump calculation, use labels: switch.
	* module/language/c99/compiler.mes (expr->accu): Refactor (switch ...).
	  (clause->info): Refactor.

2017-06-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Remove jump calculation, use labels: and, or.
	* module/language/c99/compiler.mes (expr->accu): Refactor (and
	  ...), (or ...).

	mescc: Remove jump calculation, use labels: if.
	* module/language/c99/compiler.mes (ast->info): Refactor (if ...)
	  using test-jump-label->info.

	mescc: Remove jump calculation, use labels: for.
	* module/language/c99/compiler.mes (ast->info): Refactor (for ...)
	  using test-jump-label->info.

	mescc: Remove jump calculation, use labels: do while.
	* module/language/c99/compiler.mes (ast->info): Refactor (do-while
	  ...)  using test-jump-label->info.

	mescc: Remove jump calculation, use labels: ?.
	* module/language/c99/compiler.mes (ast->info): Refactor (cond-expr
	  ...)  using test-jump-label->info.

	mescc: Support continue in while.
	* module/language/c99/compiler.mes (make): Add continue field.
	  (.continue): New function.
	  (clone): Support continue field.
	  (ast->info): Support continue.
	* scaffold/t.c (test): Test it.

	mescc: Remove jump calculation, use labels: while.
	* module/language/c99/compiler.mes (ast->info): Refactor (while ...)
	  using test-jump-label->info.

	mescc: Remove jump calculation, use labels: prepare.
	* module/language/c99/compiler.mes (test-jump-label->info): New
	  function.
	* module/mes/as-i386.mes (i386:jump-label-z,i386:jump-label-byte-z,
	  i386:jump-label-g, i386:jump-label-ge,i386:jump-label-nz): New
	  functions.
	* module/mes/as-i386.scm: Export them.

	mescc: Remove duplication of string globals.
	* module/language/c99/compiler.mes (expr->global): Curry-in globals.
	  Update callers.
	  (initzer->global): Likewise.

2017-06-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Unify labels.
	* module/language/c99/compiler.mes: Use (#:address label) (#local
	  label) (#:relative label) thoughout.
	* module/mes/elf-util.mes (add-s:-prefix, drop-s:-prefix): Remove.
	  (function->text): Update.
	* module/mes/hex2.mes (write-hex2): Update.

	mescc: Write object files in hex2 or hex3 format.
	* stage0/elf32.hex2: New file.
	* module/mes/hex2.mes: New file.
	* module/mes/hex2.scm: New file.
	* module/language/c99/compiler.mes: Eradicate object lamdas.
	  (current-eval, dec-xhex, function:-object->text, object->elf,
	  object->objects, merge-objects, alist-add): Remove.
	* module/mes/elf.mes (object->elf): New function, move from compiler.mes.
	* module/mes/elf.scm: Export it.
	* guile/mescc.scm (parse-opts): Add -g.
	  (main): Use it.
	* scripts/mescc.mes: Likewise.
	* scripts/mescc-guile.make (MESCC.scm, MESLD.scm): Add -g flag.
	* scripts/mescc-mes.make (MESCC.mes, MESLD.mes): Likewise.
	* scaffold/m.c: Add proper includes.
	* scaffold/argv.c: New file.
	* scaffold/hello.c: Simplify.
	* scaffold/micro-mes.c: Add proper includes.
	* scaffold/t.c: Add proper includes.

2017-06-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: %moduledir ends with /.
	* make/install.make (MODULEDIR): Append /.
	  (install): Remove /.
	* src/mes.c (load_env, bload_env): Update.

2017-06-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Put _start at top of mlibc.
	* mlibc/libc-mes.c (_start): Move to top.
	* mlibc/mini-libc-mes.c (_start): Likewise.
	* module/mes/elf-util.mes (function-prefix): Update for _start == 0.
	  (function-offset): Likewise.

	mes: Add list-index.
	* module/srfi/srfi-1.scm (list-index): New function.

2017-06-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Bugfix add prepocess dependency on snarfing mes.
	* src/src.make ($(OUT)/$(DIR)/mes.guile-E, $(OUT)/$(DIR)/mes.mes-E):
	  Depend on mes snarfing.

2017-06-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Support for non-Guix[SD]: cater for missing CC/CC32 compilers.
	* make/check.make: Skip if CC is not set.
	* make/check-mlibc.make: New file.
	* scaffold/scaffold.make: Use it for mlibc targets.
	* tinycc/tinycc.make: Skip mlibc targets if CC32 not set.

	mescc: Support for non-Guix[SD] builds.
	* module/language/c99/compiler.mes (c99-input->full-ast): Cater for
	  C_INCLUDE_PATH not set.  Fixes non-Guix[SD] builds.

	build: Support for non-Guix[SD]: make CC/CC32 optional in configure too.
	* configure (optional): New global.
	  (BUILD_TRIPLET): Use Guile value.
	  (check-version): Add keyword argument #:optional.
	  (main): Make CC optional (--with-courage).  Only check for stdio.h,
	  limits.h if CC is found.
	  Make CC32 check optional.
	* scripts/scripts.make: Skip if CC is not set.

2017-06-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Bugfix for merging objects.
	* mlibc/libc-mes.c (main): Declare.
	* mlibc/mini-libc-mes.c (g_stdin): Define.
	  (main): Declare.
	* module/language/c99/compiler.mes (alist-add): Thinko.  Fixes merging
	  objects when first declares function of next.

2017-06-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix hash: 0fvzr1ai2rmi46zdi5b2bdjb6s8ip78mkmsk02yxl46rajmp2pb1

	Release 0.7.
	* configure (VERSION): Bump.

	doc: Release update.
	* AUTHORS: Remove module/nyacc.
	* HACKING: Release uppdate.
	* NEWS: Release uppdate.
	* doc/ANNOUNCE-0.7: New file.

	guix: mes.git: Add git hash to version.
	* guix.scm (mes.git): Add git hash to version.

	mescc: move include into share/mlibc, allows installing alongside gcc.
	* mlibc: Rename from libc.
	* HACKING: Update for name change.
	* make/bin.make: Likewise.
	* make/mescc-guile.make: Likewise.
	* make/mescc-mes.make: Likewise.
	* scaffold/scaffold.make: Likewise.
	* make/install.make: Likewise.
	  (install): Install mlibc into share/mlibc.

2017-06-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Handle any const, by ignoring.
	* module/language/c99/compiler.mes (ast-strip-const): New function.
	  (c99-input->ast): Use it.
	  (type->size, type->description, ast->info): Remove const handling.

2017-05-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support array in struct.
	* module/language/c99/compiler.mes: (field:size, field-offset): New
	  functions.  Update callers, use them throughout.
	  (ast->info): Support declaration of struct and typedef'ed struct
	  variable with array fields.
	  (expr->accu, expr->accu*): Support foo.bar[baz], foo->bar[baz].
	* scaffold/t-tcc.c: Test it.

2017-05-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Skip gcc, mlibc, guile or mes builds using CC=, CC32=, GUILE= or MES=.
	* GNUmakefile (build-scripts): New target
	  (HELP_TOP): Mention it.
	* configure (main): Write GUILE_FOR_BUILD.
	* make/bin-mlibc.make: Skip if CC32 is not set.
	* make/bin.make: Skip if CC is not set.
	* make/install.make (install): Only install $(OUT)/mes.mes if
	  MES_BOOTSTRAP is set.
	* make/mescc-guile.make: Skip if GUILE is not set.
	* make/mescc-mes.make: Skip if MES is not set.
	* HACKING: write something about

	core: Always include reader.c, drop binary read-0-32.mo dependency.
	* module/language/c99/compiler.mes (c99-input->full-ast): Remove
	  obsolete __NYACC__ and MES_FULL defines.
	* src/mes.c [!MES_FULL]: Include reader-mes.h.
	  (mes_builtins) [!MES_FULL]: Include reader.mes.i, reader.me.environment.i.
	  [!MES_FULL]: Include reader.c.
	  (main) [!MES_FULL]: By default call load_env, only call bload_env
	  when --load is supplied.  WAS: Always bload read-0-32.mo.
	* src/reader.c (__end_of__mes_): Remove.
	  (dump): Remove option of dumping tiny test program.
	* make/mescc-mes.make ($(OUT)/$(TARGET), mescc.mes-ccompile,
	  mescc.mes.c-compile-E): Depend on $(OUT)/mes, scripts/mes.
	* src/src.make (mes.guile): Remove module/mes/read-32-0 dependency.
	  Do not build $(OUT)/mes.mes.
	* module/module.make (module/mes/read-0.mo, module/mes/read-0-32.mo,
	  module/mes/tiny-0-32.mo): Remove targets.
	  (CLEAN): Do not add them.  Neither install $(OUT)/mes.mes.
	* .gitignore: Remove exceptions for them.
	* make/install.make (install): Do not install them.
	* HACKING: Update info about creating module/mes/read-32-0.mo.
	* scaffold/mini-mes.c: Remove.
	* scaffold/tiny-mes.c: Remove.
	* scaffold/cons-mes.c: Remove.
	* scaffold/scaffold.make (tiny-mes.libc, tiny-mes.guile, tiny-mes.mes,
	  mini-mes.libc, mini-mes.guile, mini-mes.mes): Reemove targets.

2017-05-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Add missing builtins.
	* module/language/c99/compiler.mes (i386:type-alist): Add missing
	  builtins.  TODO: identify and handle unsigned.

2017-05-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support typedef and many TCC declaration variants.
	* module/language/c99/compiler.mes (ast->info): Register typedefs in types.
	  (enum-def-list->constants): Support addition and substraction in
	  enum field values.
	  (get-type): New function.  Use throughout.

	mescc: Handle comments anywhere.
	* module/language/c99/compiler.mes (c99-input->full-ast): Rename from c99-input->full-ast.
	  (ast-strip-comment, c99-input->ast): New functions.
	  (ast->info): Remove comment exceptions.

	mescc: Support anonymous enums.
	* module/language/c99/compiler.mes (enum-def-list->constants): New function.
	  (ast->info): Support anonymous enum.

2017-05-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: C99 header files and declaraions.
	* libc/include/assert.h (assert_fail):
	* libc/include/stdio.h:
	+int eputs (char const* s);
	+int fputs (char const* s);
	+int puts (char const* s);
	+int putchar (int c);
	+int fputc (int c, int fd);
	+int getchar ();
	* libc/include/stdlib.h:
	+char* getenv (char const* s)
	+int atoi (char const *s);
	+int *malloc (size_t);
	+int *realloc (int *p, int size);
	* libc/include/unistd.h (access):
	* src/lib.c (display_helper):
	* src/mes.c (read_input_file_env):
	* src/posix.c: Include unistd.h.

	guix: Update from Guix.
	* guix.scm (mes): Update from Guix.

2017-05-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Use separate preprocessing stage for mescc.
	* make/mescc-guile.make (mescc.scm-c-preprocess, (mescc.scm-compile-E):
	  New defines.
	  [!MESC_DIRECT]Compile .o via separate preprocessed .E stage.

	mescc: support -E.
	* guile/mescc.scm (parse-opts): Add -E.
	  (source->ast): New function.
	  (main): Use it.
	* scripts/mescc.mes (parse-opts): Add -E.
	  (source->ast): New function.
	  (main): Use it.

2017-05-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Refactor mlibc compilation.
	* libc/libc-mes.c: New file.  Contents from module/mes/libc.mes, module/mes/libc-i386.mes.
	* libc/libc-gcc.c: Rename from libc/mlibc.c, include libc/mstart.c
	* libc/mstart.c: Remove.
	* module/mes/libc-i386.mes: Remove.
	* module/mes/libc-i386.scm: Remove.
	* module/mes/libc.mes: Remove.
	* module/mes/libc.scm: Remove.
	* GNUmakefile (CFLAGS): Include libc-gcc.c (WAS: mlibc.c).
	* make/bin-mlibc.make (C_FLAGS): Remove start.c include.
	* make/mescc-guile.make: Rewrite using compile, link.
	* make/mescc-mes.make: Likewise.
	* scaffold/m.c: Update.

2017-05-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: support -c, -o.
	* module/language/c99/compiler.mes: Throughout: quote lambda's.
	  (current-eval): New function.
	  Thanks Andy!
	  (object->list): New function.  Update callers.
	  (c99-input->info): Dump a.o.
	  (initzer->non-const, function:object->list): New functions.
	  (info:object->list): New function.
	  (c99-input->elf): Call it.
	* module/mes/as-i386: Throughout: quote lambda's.
	* scripts/mescc.mes (main): Rewrite.
	* guile/mescc.scm (main): Likewise.

2017-05-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Bugifx for number->string radix > 10.
	* module/mes/scm.mes (number->string): Bugfix for `10' -> hex/radix > 10.

2017-05-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Simplify read-string.
	* module/mes/guile.mes (read-string): Simplify, probably fix even.

	mescc: Remove LALR C frontend prototype.
	* module/language/c/compiler.mes: Remove.
	* module/language/c/lexer.mes: Remove.
	* module/language/c/parser.mes: Remove.

	mes: Add negate.
	* module/mes/scm.mes (negate): New function.

2017-05-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Add current-output-port, open-output-file, set-current-output-port.
	* libc/include/fcntl.h: Declare it.  Add some fcntl defines.
	* libc/include/stdio.h: Remove fcntl defines, Declare g_stdout.
	* module/language/c99/compiler.mes (c99-input->ast): Define O_WRONLY, O_RDWR.
	* module/mes/guile.mes (with-output-to-file, with-output-to-port): New functions.
	* src/posix.c (current_output_port, open_output_file,
	  set_current_output_port): New functions.
	* libc/mlibc.c (open): Add optional mode parameter.
	* module/mes/libc-i386.mes (i386:open): Forward third parameter.
	* scaffold/mini-mes.c (main): Init g_stdout.
	* src/mes.c (main): Likewise.

	mes: Support octal numbers in reader.
	* module/mes/read-0.mes (read-octal): New function.
	  (read-word): Use it.
	* tests/read.test: Test it.

2017-05-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Add getopt-long.
	* module/mes/getopt-long.scm: New file, imported from Guile-1.8,
	* module/mes/getopt-long.mes: Include it.
	* AUTHORS: Mention it.

2017-05-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes: Add string-rindex.
	* module/srfi/srfi-13.mes (string-rindex): New function.

	mes: Support predicate with string-index.
	* module/srfi/srfi-13.mes (string-index): Support predicate.

	mes: Add string-suffix?
	* module/mes/scm.mes (string-prefix?): Refactor.
	  (string-suffix?): New function.

2017-05-27  Jeremiah Orians  <jeremiah@pdp10.guru>

	Purging binary blobs
	* mes.mes: Remove.
	* module/mes/read-0-32.mo: Remove.

2017-05-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Update.
	* AUTHORS: Remove module/nyacc.

2017-05-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: typo

	guix hash: 0qqywk3siyhf08v7xac08lqldklrqfndlp495wgy6ii9fn93197k

2016-12-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	Release 0.6.
	* configure (VERSION): Bump.

2017-05-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Release update.
	* NEWS: Update.

2017-05-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Run 33/55 tests of ../tinycc/tests/test2 if avaiable.
	* make/check-tinycc.make: New file.
	* tinycc/tinycc.make: New file.
	* GNUmakefile (SUBDIRS): Add tinycc.

2017-05-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Support i686, support development for arm.
	* configure (CC32): Accept arm-* as 32 bit compiler.
	  (check-compile-header-c, check-header-c): New functions.
	  (parse-opts): New option: --with-courage.
	  (main): Check for platform, stdio.h, limits.h.

2017-05-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Minimal support for short.
	* module/language/c99/compiler.mes (i386:type-alist): Add short.

	mescc: Add strcpy.
	* libc/include/string.h (strcpy): Declare.
	* libc/mlibc.c (strcpy): New function.
	* module/mes/libc.mes (strcpy): New function.
	  (libc): Add it.
	* scaffold/t.c (string_test): Test it.

	mescc: Enhance sizeof support.
	* module/language/c99/compiler.mes (expr->accu): Support sizeof (simple-type),
	  sizeof (var).

	mescc: Support void return.
	* module/language/c99/compiler.mes (ast-info): Support `return'.

2017-05-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	nyacc: Unbundle.
	* configure (check-version): Use keyword parameters, add #:command
	  parameter.
	  (main): Check for Nyacc.
	* INSTALL: Mention Nyacc as dependency.
	* make/guile.make (all-go): Compile in guile dir.
	* module/module.make (SCM_FILES): Remove Nyacc filters.
	* module/nyacc/BUGS: Remove.
	* module/nyacc/ChangeLog: Remove.
	* module/nyacc/README: Remove.
	* module/nyacc/README.nyacc: Remove.
	* module/nyacc/bison.scm: Remove.
	* module/nyacc/export.scm: Remove.
	* module/nyacc/import.scm: Remove.
	* module/nyacc/lalr.scm: Remove.
	* module/nyacc/lalr2.scm: Remove.
	* module/nyacc/lang/c99/README: Remove.
	* module/nyacc/lang/c99/body.scm: Remove.
	* module/nyacc/lang/c99/cpp.scm: Remove.
	* module/nyacc/lang/c99/cppmach.scm: Remove.
	* module/nyacc/lang/c99/mach.d/c99act.scm: Remove.
	* module/nyacc/lang/c99/mach.d/c99tab.scm: Remove.
	* module/nyacc/lang/c99/mach.d/c99xact.scm: Remove.
	* module/nyacc/lang/c99/mach.d/c99xtab.scm: Remove.
	* module/nyacc/lang/c99/mach.d/cppact.scm: Remove.
	* module/nyacc/lang/c99/mach.d/cpptab.scm: Remove.
	* module/nyacc/lang/c99/mach.scm: Remove.
	* module/nyacc/lang/c99/parser.scm: Remove.
	* module/nyacc/lang/c99/pprint.scm: Remove.
	* module/nyacc/lang/c99/util1.scm: Remove.
	* module/nyacc/lang/c99/util2.scm: Remove.
	* module/nyacc/lang/c99/xparser.scm: Remove.
	* module/nyacc/lang/calc/parser.scm: Remove.
	* module/nyacc/lang/util.scm: Remove.
	* module/nyacc/lex.scm: Remove.
	* module/nyacc/parse.scm: Remove.
	* module/nyacc/util.scm: Remove.

	mes: Consider GUILE_LOAD_PATH for include-from-path.
	* module/mes/guile.scm (include-from-path): New macro.

	mescc: Bugfixes for local char[].
	* module/language/c99/compiler.mes (push-ident): Cater for local arrays.
	  (expr->accu): Avoid post-inc/post-dec twice on rhs of assignment.
	  Fix size lookup for local char arrayns.

2017-05-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	nyacc: Update to 0.78.

	mes: Add srfi-16 to Nyacc Guile support.
	* module/mes/guile.mes: Include srfi-16 for Nyacc.

	mes: Basic support for string-index.
	* module/srfi/srfi-13.mes (string-index): New function.
	* tests/srfi-13.test ("string-index"): Test it.

	mes: Support #\cr short form in reader.
	* module/mes/read-0.mes (read-character): Support #\cr short form for #\return.
	* module/mes/read-0-32.mo: Regenerate.

	mes: Support case-lambda.
	* module/srfi/srfi-16.scm: New file.
	* AUTHORS: Mention it.
	* module/srfi/srfi-16.mes: New file.

	mescc: Enhance enum support.
	* module/language/c99/compiler.mes (ast->info): Support enum variable
	  declaration.  Respect field value overrides.

	mescc: Support binary constants.
	* module/language/c99/compiler.mes (cstring->number): Support binary 0bxxx values.
	* scaffold/t.c (math_test): Test it.

	mescc: Support ==, != as expression value.
	* module/mes/as-i386.scm: Export them.
	* module/language/c99/compiler.mes (expr->accu): Set accu to 0/1 for eq, ne.
	* module/mes/as-i386.mes (i386:nz->accu, i386:z->accu,
	  i386:accu<->stack): New functions.
	* scaffold/t.c (math_test): Test it.

	mescc: Support &, ^.
	* module/mes/as-i386.mes (i386:accu-and-base, i386:accu-xor-base): New functions.
	* module/mes/as-i386.scm: Export them.
	* module/language/c99/compiler.mes (expr->accu): Support bitwise-and, bitwise-xor.

	mescc: Support struct pointers.
	* module/language/c99/compiler.mes (expr->accu): Support
	  &struct.field, struct->field.
	  (ast->info): Support struct *foo = &bar;
	* scaffold/t.c (struct_test): Test it.

	mescc: Support struct definition with variable declaration.
	* module/language/c99/compiler.mes (ast->info): Support `struct foo {} bar;'.

	mescc: Support void functions.
	* module/language/c99/compiler.mes (function->info): Add return if
	  missing.  Fixes calling void functions (and functions where return
	  is missing).
	* scaffold/t.c (void_func): Test it.

	mescc: Bugfix for break in switch not in compound.
	* module/language/c99/compiler.mes (clause->jump-info): Rename from
	  case->jump-info.
	  (statements->clauses): New function.
	  (ast->info): Use it.  Fixes switch statement with break in a case
	  outside of a compound.
	* scaffold/t.c (swits): Test it.

2017-05-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Enhance [int/pointer] array support.
	* module/language/c99/compiler.mes (p-expr->type): Handle array-ref
	  with any index.
	  (ast->info): Support plain array declerations.
	  (expr->accu): For size == 4, assume value in accu.  Fixes int/pointer arrays.
	* scaffold/t.c: Test it.

2017-05-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Enhance struct support.
	* module/language/c99/compiler.mes (expr->accu): Remove struct scm
	  hardcoding.
	  (p-expr->type): New function.
	  (ast->info): Support struct variable declaration without
	  initializer.  Set struct type for all struct declarations.

2017-05-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Fix itoa for negative numbers, using workaround.
	* module/mes/libc.mes (itoa): Avoid `sign = x < 0;' FIXME, todo.
	* scaffold/t.c (test): Test it.

2017-05-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support regular C99 compile, headers + mlibc.
	* libc/include/assert.h: New file.
	* libc/include/ctype.h: New file.
	* libc/include/errno.h: New file.
	* libc/include/fcntl.h: New file.
	* libc/include/limits.h: New file.
	* libc/include/mlibc.h: New file.
	* libc/include/stdio.h: New file.
	* libc/include/stdlib: New file.
	* libc/include/string.h: New file.
	* libc/include/unistd.h: New file.
	* libc/mlibc.c: Remove declarations.
	* make/bin.make (INCLUDES): Factor out standard includes.
	* make/bin-mlibc.make: New file.
	* scaffold/scaffold.make: Use it.
	* src/src.make: Use it.
	* module/language/c99/compiler.mes (ast-info): Handle more function declarations.
	* scaffold/cons-mes.c: Remove mlibc definitionsa and mlibc.c include.
	  Instead include <mlibc.h>.
	* scaffold/hello.c: Likewise.
	* scaffold/m.c: Likewise.
	* scaffold/malloc.c: Likewise.
	* scaffold/micro-mes.c: Likewise.
	* scaffold/mini-mes.c: Likewise.
	* scaffold/t.c: Likewise.
	* scaffold/tiny-mes.c: Likewise.
	* src/gc.c: Likewise.
	* src/lib.c: Likewise.
	* src/math.c: Likewise.
	* src/mes.c: Likewise.
	* src/posix.c: Likewise.
	* src/reader.c: Likewise.

2017-05-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support list of initializers.
	* module/language/c99/compiler.mes (ast->info): Support list of initializers.

2017-05-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Basic printf support.
	* module/mes/libc-i386.mes (i386:va-arg): New function.
	* module/mes/libc-i386.scm (mes): Export it.
	* module/mes/libc.mes (printf): New function.
	  (libc): Add it.
	* libc/include/stdio.h: New file.
	* module/language/c99/compiler.mes (c99-input->ast): Add libc/include
	  to include path.
	  (ast-info): Handle (skip) ellipsis in function declaration.

	guix: Update from Guix.
	* guix.scm: Use version from Guix.
	* make/install.make (update-hash): Update version for new Guix meme.

	make: Recompile .go too when included mes is touched.
	* build-aux/compile-all.scm (scm->mes): New function.
	  (file-needs-compilation?): Use it to hackishly respect (include-[from-path] "<>.mes")

2017-05-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Resolve MODULEDIR confusion.  Fixes mes installation.
	* make/install.make (GUILEDIR): New variable.  Was MODULEDIR.
	  (MODULEDIR): Mes' module dir.
	* guile/mescc.scm: Update.
	* src/mes.c (load_env, bload_env): Update.

2017-05-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix hash: 01m8n7zk4f1ryd61dj589zarx09vbi7fc5f8m1x5zfk6r7l0zja2

	guix.scm: Remove erroneous system restriction.
	* guix.scm (mes): Remove second erroneous system restriction.

2017-04-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	Release 0.5.
	* configure (VERSION): Bump.

	bootstrap: Regenerate.
	* module/mes/read-0-32.mo: Regenerate.

	doc: Release update.
	* AUTHORS: Mention Nyacc and GuixSD.
	* NEWS: Update.
	* README: Update.
	* doc/ANNOUNCE-0.5 New file.
	* HACKING: Add pointers, update TODO/DONE.

2017-04-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	bootstrap: Regenerate.
	* mes.mes: Regenerate.

2017-04-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Parse mlibc early, show progress.
	* module/mes/libc.mes (_start, strlen, getchar, assert_fail, ungetc,
	  putchar, fputc, eputs, fputs, puts, strcmp, itoa, isdigit, atoi,
	  malloc, realloc, strncmp, c:getenv): Change to function, add
	  progress.  Update callers.
	* module/language/c99/compiler.mes (c99-input->info): Compile libc separately.
	* guile/mescc.scm: Update progress.
	* scripts/mescc.mes: Update progress.

2017-04-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	bootstrap: Regenerate.
	* mes.mes: Regenerate.

2017-04-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Set argv for mescc too.
	* src/mes.c (main)[!__MESC__]: Remove branch.

	bootstrap: Regenerate.
	* mes.mes: Regenerate.

2017-04-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Avoid duplication of globals.
	* module/language/c99/compiler.mes (globals:add-string): New function.
	  (expr->arg): Use it to avoid globals duplication.
	  (expr->accu): Do not pre-add globals.

	mescc: Fix global creation in AND/OR clause.
	* module/language/c99/compiler.mes (test->jump->info): Retain globals
	  created in AND/OR test.

2017-04-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Move some debugging to MES_DEBUG=2.
	* module/mes/base-0.mes (load): Add ;;;.
	* src/gc.c (gc_flip): Test on g_debug > 1.
	  (gc): Likewise.
	* src/mes.c (mes_builtins): Likewise.
	  (main): Likewise.
	* src/reader.c (dump): Likewise.

	mescc: Add atoi.
	* libc/mlibc.c (atoi): New function.
	* module/mes/libc.mes (atoi): New function.
	  (libc): Add it.

	mescc: Add getenv.
	* module/mes/libc-i386.mes (i386:_start): Push environment pointer.
	* module/mes/libc.mes (g_environment): New global.
	  (_env): New function.
	  (_start): Use it to set g_environment.
	  (getenv): New function.
	* lib/mlibc.c (strncmp): New function.
	  (getenv): Implement.
	* lib/mstart.c (_start): Set g_environment.
	* module/mes/libc.mes (strncmp): New function.
	  (libc): Add it.
	* scaffold/t.c: (array_ref): Test it.

	mescc: Support pointer arrays and some arithmetic.
	* module/language/c99/compiler.mes (.name): Support **; handle type size.
	  (.statements): Likewise.
	  (push-local-de-ref): Likewise.
	  (push-ident-de-ref): Likewise.
	  (expr->arg): Likewise.
	  (ident->accu):  Likewise.
	  (base->ident-address):  Likewise.
	  (ident-add): Likewise.
	  (expr->accu):  Likewise.
	  (decl->type):  Likewise.
	  (formal->text):  Likewise.
	  (int->global, ident-address->accu, ident-address->base): New functions.
	  (ast->info): Support *, *[] ** declarations.
	  (push-local-de-de-ref,  push-ident-de-de-ref): New functions.
	* module/mes/as-i386.mes (i386:push-byte-local-de-ref): Rename from
	  i386:push-local-de-ref.  Update callers.
	  (i386:push-local-de-ref, i386:push-byte-local-de-de-ref,
	  i386:accu-mem-add): New functions.
	* module/mes/as-i386.scm (mes): Export them.
	* scaffold/t.c (array_test): Test it.

2017-04-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	bootstrap: Regenerate.
	* mes.mes: Regenerate.
	* module/mes/read-0-32.mo: Regenerate.

2017-04-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add access?
	* libc/mlibc.c (access): New function.
	* module/mes/libc-i386.mes (i386:access): New function.
	  (i386:libc): Add it.
	* src/posix.c (access_p): New function.
	* module/mes/posix.mes: New file.
	* module/mes/base-0.mes (mes): Include it.
	* module/mes/read-0-32.mo: Regenerate.

2017-04-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	bootstrap: Regenerate
	* module/mes/read-0-32.mo: Regenerate.

2017-04-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Refactor.
	* GNUmakefile (OUT,QUIET,SUBDIRS): New variables.
	  include make/common.make
	* .gitignore: Remove toplevel targets.
	* build-aux/compile-all.scm: Import from GNU Guix.
	* configure (gulp-pipe): Check exit status.  Actually test for CC,
	  CC32.
	* make/bin.make: New file.
	* make/check.make: New file.
	* make/clean.make: New file.
	* make/common.make: New file.
	* make/compile.make: New file.
	* make/guile.make: New file.
	* make/mescc-guile.make: New file.
	* make/mescc-mes.make: New file.
	* make/reset.make: New file.
	* lib/mlibc.c: Rename from top.
	* lib/start.c: Rename from top.
	* module/module.make: New file.
	* scaffold/scaffold.make: New file.
	* scripts/scripts.make: New file.
	* src/mes.c: Rename from top.
	* src/src.make: New file.
	* src/mes.c: Rename from top.
	* src/gc..c: Rename from top.
	* src/lib.c: Rename from top.
	* src/posix.c: Rename from top.
	* src/reader.c: Rename from top.
	* src/vector.c: Rename from top.
	* tests/tests.make: New file.

2017-04-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	Remove gc scaffolding.
	* tests/gc-0.test: Remove.
	* tests/gc-1.test: Remove.
	* tests/gc-2.test: Remove.
	* tests/gc-2a.test: Remove.
	* tests/gc-3.test: Remove.
	* tests/gc-4.test: Remove.
	* tests/gc-5.test: Remove.
	* tests/gc-6.test: Remove.
	* tests/gc.test:Remove.

	mescc: Add fsync.
	* module/mes/libc-i386.mes (i386:fsync): New function.
	  (i386:libc): Export it.
	* mlibc.c (fsync): New function.

2017-04-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	core/mini-mes: Merge merge mes.c and mini-mes.c.
	* mes.c:
	* scaffold/mini-mes.c:
	* gc.c:
	* GNUmakefile:

	mescc: Allow usage of const by ignoring.
	* module/language/c99/compiler.mes (ast->info): Support const
	  declarations (by ignoring them).
	* lib.c (display_helper)[!__GNUC__]: Remove branch.
	* posix.c (write_byte)[!__GNUC__]: Likewise.

	HACKING: Removed __MESC__ workarounds.
	* HACKING: Update pointer.

	mescc: Support break in while.
	* module/language/c99/compiler.mes (make): Add break field.
	  (.break): New function.
	  (clone): Support break field.
	  (ast->info): Support break.
	* scaffold/t.c (test): Test it.
	* scaffold/mini-mes.c (lookup_symbol_): Use it; remove goto workaround.

2017-04-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Refactor switch.
	* module/language/c99/compiler.mes (case->jump-info): Refactor.
	  Support multiple case statements.
	* scaffold/t.c (swits): Test it.
	* lib.c (display_helper)[__NYACC__]: Remove branch.

2017-04-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	mini-mes: Merge with mes.c: lib.c, math.c, posix.c.
	* mes.c: Include math.c after posix.c.
	  (assert_defined, check_formals, check_apply, load_env,
	  bload_env): Move from lib.c
	* scaffold/mini-mes.c: Include mini-lib.h, lib.c., mini-math.h,
	  math.c, mini-posix.h, posix.c.
	  (greater_p, less_p, is_p, minus, plus, divide, modulo, multiply,
	  logior, ash): Remove.
	  (ungetchar, peekchar, peek_byte, read_byte, write_byte,
	  string_to_cstring, getenv_, open_input_file, current_input_port,
	  set_current_input_port, force_output): Remove.
	  (mes_builtins): include mini-lib.i, mini-lib.environment.i.
	  mini-math.i, mini-math.environment.i mini-posix.i,
	  mini-posix.environment.i.
	* GNUmakefile (guile-mini-mes): Add dependencies.

	mescc: Refactor assignment.
	* module/language/c99/compiler.mes (expr->accu): Refactor assignment.
	  Support multiple operators.
	* scaffold/t.c (math_test): Test it.
	* scaffold/mini-mes.c (minus, divide, modulo, multiply,
	  logior)[!__GNUC__]: Remove branch.

2017-04-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Factor-out array-ref.
	* module/language/c99/compiler.mes: Factor-out array-ref.

	mescc: Refactor expr->base.
	* module/language/c99/compiler.mes (expr->base): Rename from
	  expr->+base.  Use throughout.

	mescc: Refactor binary operators.
	* module/language/c99/compiler.mes (binop->accu): Rename from
	  compare->accu.  Update callers.
	  (expr->accu): Use it for binary operators.
	* scaffold/t.c (math_test): Test it.

	mescc: Factor-out append-text.
	* module/language/c99/compiler.mes: Use append-text throughout.

	mescc: Factor-out wrap-as.
	* module/language/c99/compiler.mes (wrap-as): Rename from wrap.  Use throughout.

	mescc: Refactor comparisons.
	* module/language/c99/compiler.mes (compare->accu, append-text, wrap):
	  New functions.
	  (expr->accu): Use them to implement construct like 1 == inc (0).
	* scaffold/t.c (math_test): Test them.

2017-04-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	HACKING: Removed gc.c, vector.c mescc workarounds.
	* HACKING: Update pointer and recipe.

	mescc: Refactor array ref.
	* module/language/c99/compiler.mes (expr->accu, expr->accu*): Remove
	  duplication, use expression as array index.
	* scaffold/t.c (struct_test): Test it.
	* vector.c (vector_length, list_to_vector)[!__GNUC__]: Remove branch.

	mescc: Refactor expressions.
	* module/language/c99/compiler.mes (expr->accu, ast->info): Remove
	  duplication, separate concerns.

2017-04-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Refactor pre/post inc/dec.
	* module/language/c99/compiler.mes: Refactor pre/post inc/dec.

	bootstrap: Regenerate.
	* mes-mini-mes: Regenerate.
	* module/mes/read-0-32.mes: Regenerate.

	mescc: function call.
	* module/language/c99/compiler.mes (expr->accu): Move function call
	  from ast->info.

	mescc: Support expression as lhs array index.
	* module/language/c99/compiler.mes (expr->accu): Treat array index as expression.
	* scaffold/t.c (struct_test): Test it.
	* gc.c (gc_copy)[!__GNUC__]: Remove branch.
	* vector.c (list_to_vector)[!__GNUC__]: Likewise.

2017-04-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Remove duplication.
	* module/language/c99/compiler.mes (expr->arg): Use expr->accu for
	  most expressions.

	scripts: Support --help, --version.
	* guile/mescc.scm: Support --help, --version.
	* scripts/mescc.mes: Likewise.
	* scripts/repl.mes: Likewise.

2017-04-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm: Do not quote list of strings.
	* module/mes/display.mes (display): Check value of write?, fixes
	  quoting display string.

	mescc: Do not return ELF text.
	* module/language/c99/compiler.mes (info->exe): Do not return ELF text.

2017-04-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Update Guix build and install.
	* guix.scm (%source-dir): New variable.
	  (git-file?): New function.
	  (mes): Use them to simplify building/installing from git.
	* make/install.make (READMES): Add INSTALL, README.
	* (install): Install mescc.scm and read-0-32.mo.

	bootstrap: Regenerate.
	* mes-mini-mes: First self-hosting binary.

	HACKING: scripts/mescc.mes scaffold/mini-mes runs.
	* HACKING: Update pointer and recipe.

	mini-mes: Fix for assq.
	* scaffold/mini-mes.c (assq): Use eq_p iso ==.  Fixes
	  tests/display.test ("write alarm").

	core: Use 0.25% safety region.
	* gc.c (gc_up_arena): Up GC_SAFETY too.
	* scripts/repl.mes: Remove MES_ARENA override.

	bootstrap: Regenerate.
	* module/mes/read-0-32.mo: Regenerate.

	core: Remove append.
	* lib.c (append): Remove.
	* scaffold/mini-mes.c (append): Remove.
	* module/mes/base-0.mes (append): New function.
	* module/mes/read-0.mo: Regenerate.
	* module/mes/read-0-32.mo: Regenerate.

	test: Add test for append-map.
	* tests/srfi-1.test ("append-map"): New test.

2017-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Check gc free harder.
	* gc.c (gc_check): New fuction.
	* mes.c (eval_apply): Use it.

	mescc: Fix by value assignment from array-of struct entry.
	* module/language/c99/compiler.mes (expr->accu): Fix by value
	  assignment from array-of struct entry.
	* scaffold/t.c (struct_test): Test it.
	* vector.c (make_vector, list_to_vector, vector_to_list): Use it;
	  remove workarounds.
	* gc.c (gc_copy): Likewise.

	core: Fix flush for _POSIX_SOURCE.
	* posix.c (write_byte, force_output)[_POSIX_SOURCE]: Use FILE*
	  functions.  Fixes repl.mes.

	core: Increase MAX_ARENA_SIZE and GC safety.
	* mes.c (MAX_ARENA_SIZE): Double to 40000000.
	 (GC_SAFETY): Set to 10000 cells (WAS: 1000).
	* scaffold/mini-mes.c (MAX_ARENA_SIZE, GC_SAFETY): Likewise.
	* gc.c (gc)[MES_DEBUG]: Also print safety area.

	HACKING: scripts/mescc.mes scaffold/t.c runs.

	core: Increase GC safety.
	* mes.c (GC_SAFETY): Set to 1000 cells (WAS: 100).
	* scaffold/mini-mes.c (GC_SAFETY): Likewise.

	HACKING: scripts/mescc.mes scaffold/tiny-mes.c runs.

	HACKING: scripts/mescc.mes scaffold/cons-mes.c runs.

	test: Add nyacc cpp match tests; two fail.
	* tests/match.test ("match nyacc 0", "match nyacc 1"): New tests.
	 ("match nyacc simple", "match nyacc tkl0"): New tests; FAIL with Mes.
	 (report): Set failure expectation to 2 for Mes.
	* HACKING: Add to bugs.

	scm: Support test failure expectation.
	* module/mes/test.mes (result): Take second argument to mean expected
	  failure count.

2017-04-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm: Evaluate arguments of OR only once.
	* module/mes/base.mes (or): Evaluate arguments only once.
	* module/mes/read-0.mes (or): Likewise.
	* tests/base.test ("or only once"): Test it.
	* module/mes/read-0-32.mo: Regenerate.

2017-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm: Have char-set-contains? strictly return boolean.
	* module/srfi/srfi-14.mes (char-set-contains?): Return #t rather than
	  memq result.

	scm: Fix bug in assq-set!
	* module/mes/scm.mes (assq-set!): Bugfix.

2017-04-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm: Add c????r.
	* module/mes/base-0.mes (caar, cadr, cdar, cddr, map): Remove.  Update callers.
	* module/mes/base.mes (): Remove.
	* module/mes/base.mes (cadadr, cddadr, cdddar): New function.

2017-03-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm: Add access?
	* module/mes/guile.mes (access?): New dummy function.  Fixes Nyacc's #include.

2017-03-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Add Roamdmap.
	* HACKING: Add roadmap.

2017-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm: Add open-input-string, read-string.
	* module/mes/guile.mes (open-input-string, read-string): New functions.
	* tests/guile.test: New file.
	* GNUmakefile (TESTS): Add it.

2017-04-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	build: Cleanup, use gcc-specific snarfing.
	* .gitignore: Ignore *.o-32, mes-mini-mes.
	* scripts/nyacc-calc.mes: Remove.
	* scripts/nyacc.mes: Remove.
	* scripts/paren.mes: Remove.
	* make/install.make (install): Remove them.
	p* module/mes/mes-0.mes: Remove.
	* module/mes/loop-0.mes: Remove.
	* build-aux/mes-snarf.scm (main): Add --mini option.
	* GNUmakefile (mini-mes): Use it.

2017-03-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Fix error message when macro is missing.
	* mes.c (scm_vm_eval_check_func): New symbol.
	  (eval_apply): In eval, evaluate car before evlis.  Fixes error
	  message when macro match is missing in (match ... (car x)).
	  (mes_symbols): Add cell_call_with_values, cell_current_module to environment.
	* scaffold/mini-mes.c (eval_apply): Likewise.

2017-03-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Add pmatch tests.
	* tests/pmatch.test: New file.
	* GNUmakefile (TESTS): Add it.

2017-03-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	nyacc: prefix globals.

2017-03-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm: Bugfix display of named characters: add port.
	* module/mes/display.mes (display): Typo, add port.

	nyacc: Add missing (mes pmatch) include.
	* module/nyacc/lang/c99/cpp.mes (mes): Include (mes pmatch).

2017-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	nyacc: Use pmatch rather than match for cpp.
	* module/nyacc/lang/c99/cpp.scm (nyacc lang c99 cpp): Import (system
	  base pmatch) rather than (ice-9 match).
	  (rtokl->string): Rewrite using pmatch.

2017-03-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm: Bugfix drain-input.
	* module/mes/guile.mes (drain-input): Bugfix: return string.

	scm: Add assoc-set!
	* module/mes/scm.mes (assoc-set!): New function.
	* tests/scm.test ("assoc-set!", "assoc-set! new"): New tests.

	scm: Add compose.
	* module/mes/scm.mes (compose): New function.
	* tests/scm.test ("compose"): New test.

	scm: Support reading negative hex numbers.
	* module/mes/read-0.mes (read-hex): Support negative hex numbers.
	* tests/math.test ("#x-10"): New test.
	* tests/read.test: Add test.

2017-03-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm: Support map4.
	* module/mes/base-0.mes (map): Remove.  Update callers.
	* module/mes/base.mes (map): Support map4.

	nyacc: Add simple split-cppdef for Mes.
	* module/nyacc/lang/c99/body.scm: Add non-regexp split-cppdef for Mes.

	scm: Add with-throw-handler hack.
	* module/mes/catch.mes (with-throw-handler): Add hack for Nyacc 0.75

	scm: Add list->char-set.
	* module/srfi/srfi-14.mes (list->char-set): New function.
	* tests/srfi-14.test ("list->char-set!"): Test it.

2017-03-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	mini-mes: Debugging to stderr.
	* scaffold/mini-mes.c (error, bload_env, main): Send debug info to
	  stderr.

	throw/catch dinges: URG

2017-03-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	scripts: Allow running with any mes.
	* scripts/mescc.mes: Run $MES if set, default to ../scripts/mes.
	* scripts/repl.mes: Likewise.

	mini-mes: Include and enable gc.
	* scaffold/mini-mes.c: Set MES_GC=1.
	 (ARENA_SIZE)[MES_GC]: Reduce to 10,000 cells (WAS: 1,000,000,000
	 chars).
	 (g_news): New global.
	 (NTYPE, NCAR, NVALUE, NLENGTH, NCDR, NVECTOR): New macros.
	 (mes_symbols)[MES_GC]: Call gc_init_news.
	 (mes_builtins): Include gc.i, gc.environment.i.

2017-04-01  Jan Nieuwenhuizen  <janneke@gnu.org>

	mini-mes: Workarounds for gc.c.
	* gc.c (gc_copy)[!__GNUC__]: Avoid by value assignment from array-of
	  struct entry.
	* scaffold/mini-mes.c (gc_init_cells): Workarounds.

2017-03-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Prepare gc.c for mescc, non-POSIX_SOURCE.
	* mes.c (NLENGTH, NVALUE, NVECTOR): New macros.
	  (mes_builtins): Add comment on .i include order.
	* module/language/c99/compiler.mes (mescc): Add define _POSIX_SOURCE=0.
	* gc.c (gc_up_arena, gc_flip, gc_loop, gc)[!_POSIX_SOURCE]: Use eputs
	  rather than fprintf.
	  (gc_loop): Use CAR, TYPE, NVECTOR rather than .car, .type, .vector.
	* gc.c (gc_up_arena)[!_POSIX_SOURCE]: Add non-POSIX mlib.c
	  implementation.

	mescc: Bugfix for realloc.
	* module/mes/libc.mes (realloc): Thinko.

2017-03-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Bugfix for neg.
	* module/language/c99/compiler.mes (expr->accu): Fix neg.
	* scaffold/t.c (math_test): Test it.
	* scaffold/mini-mes.c (ash): Remove workaround.

	mescc: Support rshift, have guile-mini-mes pass math test.
	* module/mes/as-i386.mes (i386:accu>>base): New function.
	* module/mes/as-i386.scm (mes): Export it.
	* module/language/c99/compiler.mes (expr->accu): Support rshift.
	* scaffold/t.c (math_test): Test it.
	* scaffold/mini-mes.c (ash): Use it.

2017-03-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	test: Enable vector read test.
	* tests/read.test: Enable vector read test.

2017-03-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	mini-mes: Support vectors.
	* scaffold/mini-mes.c (REF, MAKE_REF): New macro.
	  Include vector.h, vector.c.
	  (mes_builtins): Include vector.i, vector.environment.i.

	mini-mes: Workarounds for vector.c.
	* vector.c (make_vector, vector_set_x, list_to_vector)[!__GNUC__]: Avoid
	  by value assignment from array-of struct entry.

	core: prepare vector.c for mescc.
	* vector.c (make_vector, vector_set_x, vector_to_list): Use REF, VALUE
	  rather than .ref, .value.

	mini-mes: Fully remove reader from core.
	* scaffold/mini-mes.c (lookup_): Remove.
	* mes.c: Likewise.
	* reader.c (lookup_): Enable.
	* mlib.c (putc): New function.
	* module/mes/libc.mes (putc): New function.

2017-03-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support bitwise or.
	* module/mes/as-i386.mes (i386:accu-or-base): New function.
	* module/mes/as-i386.scm: Export it.
	* module/language/c99/compiler.mes (expr->accu): Use it; support bitwise or.
	* scaffold/t.c (math_test): Test it.
	* scaffold/mini-mes.c (logior): Use it.

	mescc: Lshift support non-fixed shift value.
	* module/mes/as-i386.mes (i386:accu<<base): New function.
	* module/mes/as-i386.scm: Export it.
	* module/language/c99/compiler.mes (expr->accu): Use it.
	* scaffold/t.c (math_test): Test it.

	mescc: Use signed integer comparison.
	* module/language/c99/compiler.mes (test->jump->info):
	* module/mes/as-i386.mes (i386:Xjump-le, i386:Xjump-g, i386:Xjump-l,
	  i386:Xjump-ge): New functions.
	* module/mes/as-i386.scm: Export them.
	* scaffold/t.c (math_test): Test them.
	* tests/scm.test ("iota -1"): Enable for mesc.

2017-03-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Run module/base-0.mes.
	* gc.c: New file.
	* vector.c: New file.
	* mes.c: Remove vector and gc functions, include vector.c, gc.c.
	* GNUmakefile (mes.o): Add gc, vector dependencies.
	* scaffold/mini-mes.c (eval_apply): Support primitive-load through
	  read_input_file.
	  (getenv_, open_input_file, current_input_port,
	  set_current_input_port force_output, exit_, values, arity_, xassq,
	  is_p, minus, plus, divide, modulo multiply, logior, ash): New function.
	  (mes_symbols): Add symbols %gnuc, %mesc.
	* scaffold/mini-mes.c (): New functions.
	* scaffold/b-0.mes: New file.
	* scaffold/t-0.mes: New file.

	test: Allow running with any mes.
	* test/base.test: Run $MES if set, default to ../scripts/mes.
	* tests/base.test: Likewise.
	* tests/catch.test: Likewise.
	* tests/closure.test: Likewise.
	* tests/cwv.test: Likewise.
	* tests/display.test: Likewise.
	* tests/fluids.test: Likewise.
	* tests/gc-0.test: Likewise.
	* tests/gc-1.test: Likewise.
	* tests/gc-2.test: Likewise.
	* tests/gc-2a.test: Likewise.
	* tests/gc-3.test: Likewise.
	* tests/gc-4.test: Likewise.
	* tests/gc-5.test: Likewise.
	* tests/gc-6.test: Likewise.
	* tests/gc.test: Likewise.
	* tests/let-syntax.test: Likewise.
	* tests/let.test: Likewise.
	* tests/match.test: Likewise.
	* tests/math.test: Likewise.
	* tests/module.test: Likewise.
	* tests/optargs.test: Likewise.
	* tests/peg.test: Likewise.
	* tests/psyntax.test: Likewise.
	* tests/quasiquote.test: Likewise.
	* tests/read.test: Likewise.
	* tests/record.test: Likewise.
	* tests/scm.test: Likewise.
	* tests/srfi-1.test: Likewise.
	* tests/srfi-13.test: Likewise.
	* tests/srfi-14.test: Likewise.
	* tests/vector.test: Likewise.

2017-04-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm+test: Factor-out math and vector.
	* module/mes/base-0.mes (quotient): Remove.
	* module/mes/scm.mes (quotient): Add.
	* tests/scm.test: Remove arithmetic/math tests.
	* tests/math.test: New file.
	* GNUmakefile (TESTS): Add it

2017-03-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Have ungetc remember 2 positions.
	* doc/examples/t.c (read_test): Test it.
	* doc/examples/mini-mes.c:
	* mlibc.c (getchar, ungetc): Support 2 ungetc positions.
	* module/mes/libc.mes (getchar, ungetc): Likewise.

2017-04-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Add brk, naive malloc.
	* scaffold/mini-mes.c (gc_init_cells): Use malloc to init g_cells.
	* scaffold/malloc.c: New file.
	* GNUmakefile (malloc, guile-malloc): New targets.
	* module/mes/libc-i386.mes (i386:brk): New function.
	  (i386:libc): Add it.
	* mlibc.c (brk): New function.
	  (malloc): Use it.
	  (realloc): New function.
	* module/mes/libc.mes (malloc, realloc): New functions.

2017-03-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Struct fixes.
	* module/language/c99/compiler.mes (expr->arg, expr->accu, ast->info):
	  Fixes for struct assignment.

2017-03-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Add missing defines.
	* module/language/c99/compiler.mes (mescc): Set STDIN, STDOUT, STDERR,
	  INT_MIN, INT_MAX.

	mini-mes: Update display_.
	* doc/examples/mini-mes.c (display_): Add separator, nicer recursion.
	* mes.c (display_): Update.

	mescc: Struct by value assignment fixes.
	* module/language/c99/compiler.mes (ast->info): Remove g_function
	  hardcoding, fix struct assignment.
	* doc/examples/t.c (struct_test): Test it.

	mescc: Fix struct field comparison.
	* module/language/c99/compiler.mes (expr->accu, ast->info): Some
	  push/pop fixes, fixes struct field comparisons.
	* doc/examples/t.c (struct_test): Test it.

	mescc: Run full scheme reader read-0.mes.
	* lib.c (load_env)[MINI_MES]: Load full reader, module/mes/read-0.mes.
	* GNUmakefile (module/mes/read-0-32.mo): Update dependency.
	* module/mes/mini-0.mes: Remove.
	* doc/examples/t.c (struct_test):
	* module/mes/read-0-32.mo: New file: bootstrap binary reader.

	mescc: Mini-mes (gcc-compiled) runs read-0.mes.
	* module/language/c99/compiler.mes (expr->accu): Add mul.
	  (test->jump->info): Add le, ge.
	  (ast->info): Support int and char* initialization at top level.
	* module/mes/as-i386.mes (i386:accu*base, i386:Xjump-cz,
	  i386:Xjump-ncz): New function.
	* module/mes/as-i386.scm: Export them.
	* doc/examples/t.c (test): Test them.
	* module/mes/libc.mes (ungetc): New function.
	  (getchar): Support it.
	  (assert_fail, isdigit): New functions.
	  (libc): Export them.
	* module/mes/mini-0.mes: Load full reader.
	* mlibc.c (ungetc): New function.
	  (getchar): Support it.
	  (assert_fail, isdigit): New functions.
	* mes.c (list length error lookup_ getchar ungetchar peekchar
	  peek_byte read_byte unread_byte greater_p less_p): Move functions
	  needed to run read-0.mes into core.
	* doc/examples/mini-mes.c: Likewise.
	* lib.c (length, error): Comment-out.
	* math.c (greater_p, less_p): Comment-out.
	* posix.c: (getchar, ungetchar, peekchar, peek_byte, read_byte,
	  unread_byte): Comment-out.
	* reader.c (lookup_): Comment-out.

2017-03-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Cleanup mini-mes build and test.
	* GNUmakefile (guile-cons-mes guile-m guile-main guile-micro-mes
	  guile-mini-mes guile-t guile-tiny-mes): New targets.
	  (clean): Clean them.
	* .gitignore: Ignore them.
	* HACKING: Update.
	* scaffold/tiny-mes.c (bload_env): Read module/mes/tiny-0-32.mo.
	* scaffold/cons-mes.c (simple_bload_env): Likewise.
	* lib.c (dump)[MES_TINY]: Write crafted dump: module/mes/tiny-0-32.mo.
	  (load_env): Read module/mes/mini-0.mes.
	  (bload_env): Read module/mes/read-0-32.mo.
	* module/mes/mini-0.mes: New file.
	* module/mes/tiny-0.mes : New file.

2017-04-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Refactor libc.
	* GNUmakefile (mini-mes): Add include.
	* mlibc.c: New file: libc bits for GNUC -nostdlib.
	* mstart.c: New file: _start for GNUC -nostdlib.
	* scaffold/cons-mes.c: Remove GNUC libc bits.
	* scaffold/m.c: Likewise.
	* scaffold/mini-mes.c: Likewise.
	* scaffold/t.c: Likewise.
	* scaffold/tiny-mes.c: Litkewise.
	* module/language/c99/compiler.mes (libc, i386:libc): Remove.
	* module/language/c99/compiler.scm
	* module/mes/libc-i386.mes: Remove assembly bits.
	  (_start): New function.
	* module/mes/libc-i386.scm: Export it, remove assembly exports.
	* module/mes/as-i386.mes: New file: assembly bits from libc-i386.mes.
	* module/mes/as-i386.scm: New file: export them.
	* module/mes/libc.mes (libc,_start): New functions from compiler.mes.
	* module/mes/libc.scm: Export them.

2017-03-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Refactor ret.
	* module/mes/libc-i386.mes (i386:ret): Refactor.
	* module/language/c99/compiler.mes (ast->info): Use it.

2017-03-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Cache text generation.
	* module/mes/elf-util.mes (functions->text): Add cache.

	mescc: Refactor function-offset.
	* module/mes/elf-util.mes (function-offset): Recurse down.  Factor 5
	  speedup on mini-mes.c.

	mescc: Cache data-offset too.
	* module/mes/elf-util.mes (data-offset): Add cache.

	mescc: Support assignment with comparison.
	* module/language/c99/compiler.mes (expr->accu): Handle assignment -> accu.
	* doc/examples/t.c (test): Test it.
	* doc/examples/mini-mes.c (eval_apply): Use it.

	mescc: Support assignment test.
	* module/language/c99/compiler.mes (test->jump->info): Handle assignment.
	* doc/examples/t.c (test): Test it.

2017-03-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Fix simple value tests.
	* module/language/c99/compiler.mes (test->jump->info): Test accu
	  before jumping.  Fixes simple value tests.

	mescc: Struct by value.
	* build-aux/mes-snarf.scm (symbol->names, function->header,
	  function->environment): Remove struct by value assignment
	  workarounds.
	* module/language/c99/compiler.mes (ast->info): Remove struct by value
	  assignment debug printing.

	mescc: Support generic initializer.
	* module/language/c99/compiler.mes (ast->info): Support generic
	  declaration using initializer.  Supports struct field initializer.
	* doc/examples/t.c (struct_test): Test it.
	* doc/examples/mini-mes.c (call_lambda, eval_apply, write_byte,
	  display_): Use it.  (call_lambda): (eval_apply,
	  list_of_char_equal_p): Use it.

	mescc: Remove last hardcodings for identifiers.
	* module/language/c99/compiler.mes (ident->accu, ident->base):
	  Use local:ptr, type->size to remove hard coding of functionx, c1.
	  (expr->accu): Use type->size to remove hard coding of size byte.
	  (decl->type): Also handle typename, bail out if type not found.
	  (type->size): Print identifier and and bail out if type not found.
	  (formal:ptr): New function.
	  (formals->locals): Use it to set pointer value of parameter.  WAS: 0.
	  (ast->info): Remove functionx hardcoding.
	  (getchar): Rename c1 to c.
	* doc/examples/t.c: Test it.

	mescc: Support function call with enum value.
	* doc/examples/mini-mes.c: Remove debug printing.
	* module/language/c99/compiler.mes (push-global, push-local,
	  push-global-address, push-local-address, push-local-de-ref): Return
	  list of lambda.
	  (push-ident): Support push constant.  Fixes mini-mes,
	  cstring_to_list.
	* doc/examples/t.c (test): Test it.

2017-03-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Fix d-sel comparisons.
	* module/language/c99/compiler.mes (ast->info): Save base while
	computing accu. Fix comparison using d-sel in second argument.
	* doc/examples/t.c: Test it.
	* doc/examples/mini-mes.c (assq): Use it.

2017-03-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Fix for character array s[0].
	* module/language/c99/compiler.mes (expr->arg, expr->accu, ast->info):
	  Use type size to calculate index.
	* doc/examples/t.c: Test it.
	* doc/examples/mini-mes.c (cstring_to_list): Simplify.

2017-03-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support mini-mes running scheme program with builtins.
	Mini-mes, compiled with either gcc or mescc, now runs a memory dump of
	this mini-0.mes program

		(begin
		  (write-byte (make-cell 0 0 65))
		  (write-byte (make-cell 0 0 66))
	          (write-byte (make-cell 0 0 67))
	 	  (write-byte (make-cell 0 0 10))
		  #f)

	when read and dumped by (gcc-compiled) mes-32.

	* build-aux/mes-snarf.scm: FIXES ..collapse?
	* module/language/c99/compiler.mes (ast->info): Bail out on unhandled
	  declarations.  Was: verbosely skip.

2017-03-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support [for] itoa.
	* module/mes/libc-i386.mes (i386:accu%base): New function.
	* module/mes/libc-i386.scm: Export it.
	* module/language/c99/compiler.mes (expr->accu): Use it to support mod.
	* doc/examples/t.c (itoa): New function.
	  (test): Test it.
	* doc/examples/mini-mes.c (itoa)[!__GNUC__]: New function.

	mescc: Support do .. while.
	* module/language/c99/compiler.mes (ast->info): Support do-while.
	* doc/examples/t.c (test): Test it.

2017-03-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	core+mini-mes: Replace manual snippets by snarfed includes.
	* build-aux/mes-snarf.scm (symbol->source, function->header,
	  function->source, function->environment): Add workarounds to
	  avoid struct-copy initializers.
	* GNUmakefile (mini-mes): Snarf symbols and functions.
	* scaffold/mini-mes.c: Include mini-mes.h, mini-mes.symbols.h,
	  mini-mes.symbols.i, mini-mes.i, mini-mes.environment.i.
	  Add snarfable symbol/special definitions.
	  (type_t): Prefix all types with `T', update users.
	  (assert_defined, gc_push_frame, gc_peek_frame, gc_init_cells): Mark
	  as internal.
	* mes.c (type_t): Prefix all types with `T', update users.
	* scaffold/mini-mes.c (eq_p, type_, car_, cdr_,
	  list_of_char_equal_p, lookup_macro, write_byte): New functions (from
	  mes.c).
	  (assq): Add debugging, workaround.

2017-03-05  Matt Wette  <matt.wette@gmail.com>

	nyacc: removed start from lalr-spec -- not needed

2017-03-04  Matt Wette  <matt.wette@gmail.com>

	nyacc: working javascript interpreter in guile

2017-03-03  Matt Wette  <matt.wette@gmail.com>

	nyacc: lex fixes for char-lit

2017-03-02  Matt Wette  <matt.wette@gmail.com>

	nyacc: cleaned up documentation

2017-03-01  Matt Wette  <matt.wette@gmail.com>

	nyacc: working on C99 UG as a memo

2017-02-28  Matt Wette  <matt.wette@gmail.com>

	nyacc: new release 0.76.5

	nyacc: fixed bug in pretty-print-c99 wrt i-sel

2017-02-25  Matt Wette  <matt.wette@gmail.com>

	nyacc: merge from 0.76.4

2017-02-24  Matt Wette  <matt.wette@gmail.com>

	nyacc: new release 0.76.4

2017-02-23  Matt Wette  <matt.wette@gmail.com>

	nyacc: new release 0.76.3

	nyacc: more bugs in cpp tokl->string

	nyacc: new release 0.76.2

	nyacc: fixed more CPP issues

2017-02-22  Matt Wette  <matt.wette@gmail.com>

	nyacc: new release 0.76.1

	nyacc: fixed C99 CPP to deal with numbers correctly

2017-02-20  Matt Wette  <matt.wette@gmail.com>

	nyacc: merge master 0.76.0

2017-02-19  Matt Wette  <matt.wette@gmail.com>

	nyacc: new release 0.76.0

	nyacc: worked c99/util2.scm udecl->mspec

	nyacc: new release 0.75.6

	nyacc: fixed some c99/util2 items

2017-02-17  Matt Wette  <matt.wette@gmail.com>

	nyacc: merged in 0.75.5 from master and inc version

	nyacc: new release 0.75.5

	nyacc: new release 0.74.4

	nyacc: minor cpp fixes

2017-02-16  Matt Wette  <matt.wette@gmail.com>

	nyacc: merge from 0.75.3

	nyacc: new release 0.75.3

	nyacc: new release 0.75.2

	nyacc: new release 0.75.1

	nyacc: new release 0.74.0

	nyacc: I think cpp is working now

2017-02-15  Matt Wette  <matt.wette@gmail.com>

	nyacc: working cpp now, I hope

2017-02-12  Matt Wette  <matt.wette@gmail.com>

	nyacc: CPP not yet working for file mode

2017-02-11  Matt Wette  <matt.wette@gmail.com>

	nyacc: working on cpp issues

2017-02-05  Matt Wette  <matt.wette@gmail.com>

	nyacc: C99 CPP for code is better

2017-01-20  Matt Wette  <matt.wette@gmail.com>

	nyacc: starting to work on reframing

2017-01-19  Matt Wette  <matt.wette@gmail.com>

	nyacc: more CPP fixes

2017-01-17  Matt Wette  <matt.wette@gmail.com>

	nyacc: redesign lang/c99/cppbocy.scm:scan-cpp-input

2017-03-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support goto in while body.
	* module/language/c99/compiler.mes (ast->info): Support goto in while
	  body.
	* doc/examples/t.c (test): Test it.

2017-03-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	core+mini-mes: Move function name to struct function.
	* module/language/c99/compiler.mes (expr->arg): Handle char arguments.
	* doc/examples/cons-mes.c (struct function): Add name field.
	* doc/examples/mini-mes.c: Likewise.
	  (mes_builtins): Update.
	* mes.c: Likewise.
	* build-aux/mes-snarf.scm: Update.

2017-03-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support strings in struct initialization.
	* module/mes/elf-util.mes (add-s:-prefix, drop-s:-prefix): New functions.
	* module/mes/elf-util.scm: Export them.
	* module/language/c99/compiler.mes (string->global): Add `s:' prefix
	  to global strings.  Update users.
	  (expr->arg): Update.
	  (expr->accu): Handle string expressions.
	  (initzer->global): New function.
	  (struct-field): Handle string field.
	* doc/examples/t.c: Test it.
	* doc/examples/mini-mes.c: Use it.

	dun!

2017-03-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Display sexps better.
	* module/mes/elf.mes (make-elf): Only display data sections smaller
	  than 200 bytes.
	* doc/examples/mini-mes.c (simple_bload_env): Read mini-0-32.mes.
	* doc/examples/cons-mes.c (display_): Support symbols and specials.
	* doc/examples/tiny-mes.c: Likewise.
	* lib.c:
	* mes.c:

2017-03-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Compile all of mini-mes.
	* module/language/c99/compiler.mes (case->jump-info): Support single statement.
	* module/mes/elf-util.mes (function-prefix): Workaround for reversed
	  functions.  FIXME!
	* module/mes/elf.mes:
	* scaffold/mini-mes.c (type_t): Rename FUNCTION to TFUNCTION for Nyacc.
	  Add missing symbols.
	  (eval_apply): Uncomment most.
	* scaffold/tiny-mes.c:
	* scaffold/cons-mes.c: Remove cruft.

2017-03-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support struct assignment.
	* module/mes/libc-i386.mes (i386:base-address->accu-address,
	  i386:accu+n, i386:base+n): New functions.
	* module/mes/libc-i386.scm: Export them.
	* module/language/c99/compiler.mes (ast->info): Use them.
	* doc/examples/t.c: Test them.
	* doc/examples/cons-mes.c: Drop workarounds.
	* doc/examples/mini-mes.c: Likewise.
	* mes.c:

	mescc: Fix add, sub, lshift.
	* module/language/c99/compiler.mes (expr->accu): Fix add, sub, lshift.
	* doc/examples/t.c: Test them.
	* doc/examples/cons-mes.c:
	* doc/examples/mini-mes.c:

2017-02-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support any expression as arg.
	* module/language/c99/compiler.mes (expr->arg): Also push parameter,
	  always return info.
	  (ast->info): Loop over args.  Fixes using function calls in arguments.
	* module/mes/libc-i386.mes (i386:push-arg): Remove.
	  (i386:call, i386:call-accu): Remove arguments parameter.
	* doc/examples/t.c: Test it.

2017-03-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Rename expr->accu*.
	* module/language/c99/compiler.mes (expr->accu*): Rename from expr->accuX.

2017-04-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Fixes for goto.
	* module/mes/libc-i386.mes (XXjump): New function.
	* module/mes/libc-i386.scm: Export it.
	* module/language/c99/compiler.mes (case->jump-info, ast->info): Use it.
	* scaffold/t.c: Test it.
	* GNUmakefile (cons-mes): New target.
	* scaffold/cons-mes.c: New file.
	* scaffold/mini-mes.c:

2017-02-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Mini-mes runs (cons 0 1) dump.
	* module/mes/libc-i386.mes (i386:Xjump-z, i386:Xjump-c,
	  i386:Xjump-nc): New functions.
	* module/mes/libc-i386.scm: Export them.
	* module/language/c99/compiler.mes (case->jump-info, test-jump->info,
	  ast->info): Use them.
	* doc/examples/t.c: Test it.
	* doc/examples/mini-mes.c: Run it.

2017-01-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Run mini-mes.
	* .gitignore: Ignore tiny-mes and tiny .mo's.
	* doc/examples/tiny-mes.c: Simplify.
	* doc/examples/mini-mes.c: Use simplifications from tiny-mes.
	* doc/examples/t.c (read_test, struct_test): New functions.
	  (test): Add tests for arena, g_cells globals.
	* module/mes/elf-util.mes (dec->hex): New function.
	  (lambda/label->list): Add text-address parameter.  Update callers.
	* module/language/c99/compiler.mes (make, info, clone): Add init field.
	  (.init): New function.
	  (ident->accu): Add exceptions for globals.
	* module/mes/elf-util.scm: Export it.
	* module/mes/libc-i386.mes (i386:accu->base-ref,
	  i386:byte-accu->base-ref, i386:accu->base-ref+n,
	  i386:accu->global-ref, i386:global-ref->accu, i386:global-ref->base,
	  i386:global-add, i386:global->accu):, i386:local-ref->accu,
	  i386:local-ptr->accu, i386:local-ptr->base): New functions.
	* module/mes/libc-i386.scm: Export them.

2017-01-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Add gdb assembly debugging info.
	* HACKING: Add gdb assembly debugging info.

2017-01-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	doc: Add fosdem talk.
	* .gitignore: Ignore beamer/tex stuff.
	* doc/fosdem/fosdem.org: New file.
	* doc/fosdem/GuixSD.png: New file.
	* doc/fosdem/LISP-1-5-page-13-bottom.png: New file.
	* doc/fosdem/LISP-1.5-page-13-bottom.png: New file.
	* doc/fosdem/LISP-1.5-page-13.pdf: New file.
	* doc/fosdem/LISP-1.5-page-13.png: New file.
	* doc/fosdem/beamercolorthemeX.sty: New file.
	* doc/fosdem/beamerthemeX.sty: New file.
	* doc/fosdem/bootstrap-graph.png: New file.
	* doc/fosdem/egg.jpeg: New file.
	* doc/fosdem/egg.png: New file.
	* doc/fosdem/egg.xcf: New file.
	* doc/fosdem/fosdem.pdf: New file.
	* doc/fosdem/fsb-logo-guile-guix-gnu.png: New file.
	* doc/fosdem/fsb-logo-guile-guix-gnu.xcf: New file.
	* doc/fosdem/fsb-logo-guile-guix-mes.png: New file.
	* doc/fosdem/fsb-logo-guile-guix-mes.xcf: New file.
	* doc/fosdem/fsb-logo.png: New file.
	* doc/fosdem/guix-build-bootstrap-tarballs.log: New file.
	* doc/fosdem/html.sty: New file.
	* doc/fosdem/mes.png: New file.
	* doc/fosdem/mes.xcf: New file.

	mescc: bugfix: arg as function call.
	* module/language/c99/compiler.mes (expr->arg):

2017-01-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	mini-mes: gcc: run (cons 0 1).

2017-01-15  Matt Wette  <matt.wette@gmail.com>

	nyacc: new release 0.74.3

	nyacc: CPP working better now

	nyacc: something working

2017-01-14  Matt Wette  <matt.wette@gmail.com>

	nyacc: still debugginug

2017-01-12  Matt Wette  <matt.wette@gmail.com>

	nyacc: working # and ## I think, but lots of debug output too

2017-01-11  Matt Wette  <matt.wette@gmail.com>

	nyacc: exceptions worked on.. still need to fix #

	nyacc: new release 0.74.2

	nyacc: fixed C99 use of 'defined XYZ' (no parens)

	nyacc: merged master

	nyacc: working on fixes

2017-01-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Read and display sexp dumped by mes.
	* lib.c (dump)[MES_HACK]: Dump small hello-world sexp, to be handled by
	* doc/examples/tiny-mes.c (display_): New function.
	* module/mes/libc-i386.mes (i386:accu->base, i386:mem->accu,
	  i386:mem+n->accu): New functions.
	* module/mes/libc-i386.scm: Export them.
	* GNUmakefile (mes-32): New target.

2017-01-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support global pointer assignments.
	* module/mes/libc-i386.mes (base->accu-ref, local-ref->base): New functions.
	* module/mes/libc-i386.scm: Export them.
	* module/language/c99/compiler.mes (base->ident-ref, ident-ref->base):
	  New functions.

	mescc: Add data as loadable ELF section.
	* module/mes/elf.mes (make-elf): Add data as loadable section too.

	mescc: Support switch.
	* module/language/c99/compiler.mes (case->jump-info): New function.
	  (ast->info): Use it.
	* doc/examples/t.c (swits): Test it.

2017-01-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Handle enums.
	* module/language/c99/compiler.mes (<types>, <constants>): New slots for info.
	 (make, clone): Add them.
	 (.types, .constants): New accessors.

	mescc: Update for.
	* module/language/c99/compiler.mes (ast->info): Rewrite for to use
	  test->jump->info.

2017-01-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm: Add string-delete.
	* module/srfi/srfi-13.mes (string-delete): New function.

2017-04-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Add open/read C-tests.
	* scaffold/m.c: New file.
	* scaffold/tiny-mes.c: New file.
	* GNUmakefile (m, tiny-mes): New targets.
	* scaffold/micro-mes.c: Update gcc-libc bits.
	* scaffold/mini-mes.c: Likewise.

2017-01-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Support ?.
	* module/language/c99/compiler.mes (ast->info): Support cond-expr.
	* scaffold/t.c (test): Test it.

	mescc: Support open, read.
	* module/mes/libc-i386.mes (i386:write): Fix comment.
	  (i386:open, i386:read): New functions.
	* module/mes/libc-i386.scm: Export them.
	* module/language/c99/compiler.mes (i386:libc): Add them.
	  (getchar, putchar): New libc functions.
	  (libc): Add them.

	mescc: Support globals.
	* module/language/c99/compiler.mes (write-any): Catch writing of
	  procedure and give more debug information.
	  (ref-local, ref-global): Remove.
	  (push-global-ref, push-global, push-ident-ref): New functions.
	  (push-ident): New function.
	  (expr->arg): Use them.
	  (ident->accu, ident->accu, accu->ident, value->ident, ident->base):
	  Take info parameter, also handle globals.
	  (ident-address->accu, ident->global, cstring->number): New functions.
	  (ast->info): Update.
	* module/mes/libc-i386.mes (i386:ret-local): Remove.
	  (i386:push-global-ref): Rename from i386:ref-global.
	  (i386:push-local): Rename from i386:ref-local.
	  (i386:value->local): Rename from i386:local-assign.
	  (i386:push-global, i386:push-local-ref, i386:value->global,
	  i386:local-address->accu): New functions.
	* module/mes/libc-i386.scm: Export them.

2017-01-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Small ELF tweaks allowing debugging with gdb.
	* module/mes/elf.mes (make-elf): Change note section to comment.  Fixes
	  readelf.  Add SHF-ALLOC to .text and .data.

2017-01-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Handle && in if and while.
	* scaffold/t.c (test): Add strcmp tests.
	* module/language/c99/compiler.mes (expr->arg):
	  (test->jump->info): New function.
	  (ast->info): Use it.
	* module/mes/libc-i386.mes (i386:global->accu):
	  (i386:base-mem->accu): Rename from i386:mem->accu.
	  (i386:byte-base-mem->accu): Rename from i386:base-mem->accu.
	  (i386:accu-not, i386:global->accu, i386:xor-accu): New functions.
	* module/mes/libc-i386.scm: Export them.

2017-01-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Proper support for i++,++i,i--,--i.
	* module/language/c99/compiler.mes (ast->info): Bugfix: locals.
	  Add i--, --i.  Properly support i++, ++i.
	* module/mes/libc-i386.mes (i386:function-locals): Support 8 local vars.
	* scaffold/t.c (test): Test it.

2017-04-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Beginning of expression and test template.
	* scaffold/t.c: New file.
	* GNUmakefile (mescc-check, t-check): New targets.
	* module/language/c99/compiler.mes (write-any): Catch weirdness.
	  (make): Add <function> slot.
	  (.function): New accessor.
	  (clone): Handle it.
	  (function->info): Set it.
	  (ast->info): Make tests generic in if, for, while.  Add goto, label,
	  !, ==, !=, -, &&.
	* module/mes/elf-util.mes (lambda/label->list): New function.
	  (text->list): Use it.
	  (functions->text, function-prefix): New function.
	  (function-offset): Use it.
	  (label-offset): New function.
	* module/mes/elf-util.scm (mes): Export them.
	* module/mes/elf.mes (make-elf): Use text->list.
	* module/mes/libc-i386.mes (eputs, puts): Remove.
	  (i386:byte-base-sub): Rename from sub-byte-base.
	  (i386:byte-jump-z): Rename from i386:Xjump-byte-z.
	  (i386:byte-mem->accu): Rename from i386:Xmem-byte->accu.
	  (i386:byte-mem->base): Rename from i386:Xmem-byte->base.
	  (i386:accu->local, i386:accu-non-zero?, i386:accu-zero?,
	  i386:base-sub, i386:byte-sub-base, i386:jump-c, i386:jump-cz,
	  i386:jump-nc, i386:jump-ncz, i386:byte-mem->base, i386:sub-base,
	  i386:test-accu, i386:test-base, i386:test-jump-z, i386:value->base,
	  i386:xor-zf): New functions.

2017-01-06  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Have micro-mes use strcmp to print help.
	* doc/examples/micro-mes.c (main): Add --help.
	* module/language/c99/compiler.mes (info?): New function.
	  (expr->accu): Handle function call and sub.
	  (ast->info): Handle if not, and, de-ref, eq, sub, return f ().
	* module/mes/libc-i386.mes (i386:accu-zero?, i386:Xmem-byte->accu,
	  i386:Xmem-byte->base, i386:jump-byte-nz, i386:jump-byte-z,
	  i386:test-byte-base, i386:Xjump-byte-z, i386:sub-byte-base): New
	  functions.
	* module/mes/libc-i386.scm: Export them.

2017-01-05  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Compile specific for loop.
	* module/language/c99/compiler.mes (ast->info): Handle for, pre-inc.
	* GNUmakefile (main): New target.
	* doc/examples/main.c:
	  (exit, write, strlen,puts)[__GNUC__]: New functions; import from micro-mes.c
	  (_start): New function.

	mescc: Refactor compiler.
	* module/language/c99/compiler.mes (make, clone): Lightweight functional
	  GOOPS-like list-based info structure.
	  (make-text+globals+locals): Remove.
	  (ast->info): Rename from statement->text+globals+locals, refactor.
	  Update callers.
	  (function->info): Rename from function->globals, refactor.  Update
	  callers.
	  (ast-list->info): New function.

2017-01-07  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm: Fix psyntax/keyword/optargs interaction bug.
	* module/mes/psyntax-0.mes (self-evaluating?): Add keyword?.
	* module/mes/pmatch.mes (mes): Add missing psyntax dependency.
	* module/mes/optargs.scm (rest-arg->keyword-binding-list): Make error
	  messages non-constant.
	* tests/optargs.test ("clone <info>"): New test.

2017-01-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Compile file supplied on command line.
	* scripts/mecc.mes: Pass (command-line) to main.

	nyacc: Add cpp to c99 mes module.
	* module/nyacc/lang/c99/parser.mes: Include (nyacc lang c99 cpp).

	mescc: Rename symbols to globals.
	* module/language/c99/compiler.mes:

	mescc: Have micro-mes use if not to segfault.
	* module/language/c99/compiler.mes (write-any): Check explicitly on
	  number?, report error otherwise.
	  (statement->text+symbols+locals): Remove statement-offset.
	  Handle compounds.  Handle very specific if.
	  (function->symbols): Remove unused text-offset.
	* doc/examples/micro-mes.c (main): If argc > 1 print argv1.  Fixes
	  segfault :-)
	* module/mes/elf-util.mes (symbols->text): Loop rather than map,
	  feed text-offset.
	* module/mes/libc-i386.mes (i386:local-test, i386:jump-le): New
	  functions.
	* module/mes/libc-i386.scm: Export them.

	mescc: Have micro-mes print argv.
	* module/language/c99/compiler.mes (expr->arg): Bugfix argv: Use
	  size=4 (int).
	  (statement->text+symbols+locals): Bugfixes: array-ref, initialize with
	  immediate, initialize with local.
	  (formals->locals): Bugfix: formals counted down from -1 [WAS: down to
	  -1].
	* module/mes/libc-i386.mes (i386:call): Reverse args pushes to match
	  formals index changes.
	  (i386:write): Update for changed formals push order.
	  (i386:mem->accu, i386:value->accu): New functions.
	* module/mes/libc-i386.scm (mes): Export them.
	* doc/examples/micro-mes.c (eputs, puts, fputs): Make identical with
	  mescc's implementations.
	  (main): Print argv[0] and (unconditionally; crash if not given) argv[1].

	mescc: Have micro-mes print argc.
	* module/language/c99/compiler.mes (accu->ident): New function.
	  (statement->text+symbols+locals): Use it to implement initialization
	  with immediate, local.
	  (_start): Call main with argc,argv [WAS: 0,0].
	* module/mes/libc-i386.mes (i386:push-accu, i386:accu->local): New
	  functions.
	* module/mes/libc-i386.scm: Export them.
	* doc/examples/micro-mes.c (main): Return argc as exit status.

	mescc: Support literal .byte in asm ().
	* module/language/c99/compiler.mes (expr->arg): Handle array-ref (int
	  only).
	  (byte->hex, asm->hex): New functions.
	  (statement->text+symbols+locals): Use it to implement asm ().

	mescc: Remove data section from disassembly.
	* module/mes/elf.mes (make-elf): Remove executable bit from data.

2017-01-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Formals, local variables.
	* module/language/c99/compiler.mes (statement->text+symbols+locals):
	  Rename from statement->text+symbols.  Handle locals.
	  (formals->text): Add proper function preamble.
	  (formals->locals): Add formals as locals.
	  (expr->accu, ident->accu, ident->base, ident-ref, global-ref): New
	  functions.
	  (strlen, eputs, fputs, puts): New functions.
	  (libc): New variable.
	  (i386:libc): Rename from libc.  Remove eputs and puts.
	* module/mes/libc-i386.mes (i386:eputs, i386:puts: Remove.
	  (i386:call, i386:ret): Handle locals as argument.
	  (i386:function-locals, i386:function-preamble, i386:jump,
	  i386:local->accu, i386:local-add, i386:local-assign,
	  i386:local->base, i386:ref-global, i386:ref-local, i386:ret-local,
	  i386:mem-byte->accu, i386:test-jump, i386:write): New functions.
	* module/mes/libc-i386.scm: Export them.

	mescc: Nicer functions/parameters.
	* module/mes/libc-i386.mes (eputs, exit, puts): Save stack pointer,
	  fill parameter registers from stack.
	* module/language/c99/compiler.mes (formal->text): Fill parameter
	  registers from stack memory.
	  (formals->text): Save stack pointer.

	mini-mes: Parse with Nyacc.
	* doc/examples/mini-mes.c: Parse with Nyacc.

2017-04-02  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Scaffolding of Nyacc compile experiments.
	* scaffold/micro-mes.c: New file.
	* scaffold/mini-mes.c: New file.
	* GNUmakefile (mini-mes, micro-mes): New targets.
	* .gitignore: Ignore them.

	mescc: Nyacc updates, factor-out elf-util.
	* module/mes/bytevectors.mes
	* module/mes/elf-util.mes: New file.
	* module/mes/elf.mes: Use it.
	  (make-elf): Generate symbol-table string-table.
	* module/mes/elf-util.scm: New file.
	* module/mes/elf.scm: Use it.
	* module/language/c99/compiler.mes: Include it.
	* module/language/c99/compiler.scm: Include it.
	* module/mes/libc-i386.mes (call, eputs, exit, puts): New functions.
	* module/mes/libc-i386.scm: Export them.

2016-12-31  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: Use Nyacc frontend.
	* module/language/c99/compiler.mes: New file.
	* module/language/c99/compiler.scm: Include it.
	* module/mes/elf.mes: Move (mes-use-module) into cond-expand.
	* module/mes/elf.scm: New file.
	* module/mes/libc-i386.scm: New file.
	* module/nyacc/lang/c99/parser.mes: Add missing module includes.
	* module/nyacc/lang/util.mes: Add missing module include.
	* scripts/mescc.mes: Use Nyacc.
	* guile/mescc.scm: New file.
	* GNUmakefile (guile-mescc): Run it.

2017-01-03  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm: Avoid xpath's shadowing of filter.
	* module/sxml/xpath.scm (xpath:filter): Rename from filter.  Fixes
	  shadowing of core filter.

2017-01-09  Matt Wette  <matt.wette@gmail.com>

	nyacc: fixes didn't get in in 0.74.0

	nyacc: ugh. fixes did not take, why?

2017-01-08  Matt Wette  <matt.wette@gmail.com>

	nyacc: new release 0.74.0

	nyacc: minor fixes

	nyacc: lots of C99/CPP fixes. now more robust for code mode

	nyacc: lots of fixes to make CPP more robust; now need to test

2017-01-06  Matt Wette  <matt.wette@gmail.com>

	nyacc: updates for cpp-ok/not-ok

2017-01-02  Matt Wette  <matt.wette@gmail.com>

	nyacc: fixed c99/CPP bug: need to skip space before lparen

	nyacc: have something working for in-place include

2017-01-01  Matt Wette  <matt.wette@gmail.com>

	nyacc: working on cpp-include fix

2016-12-31  Matt Wette  <matt.wette@gmail.com>

	nyacc: creating fixes for 0.73.0

2016-12-26  Matt Wette  <matt.wette@gmail.com>

	nyacc: new release 0.73.0

	nyacc: misc updates; see ChangeLog

2016-12-03  Matt Wette  <mwette@nautilus.championbroadband.com>

	nyacc: multiple fixes

2016-08-09  Matt Wette  <matthew.wette@verizon.net>

	nyacc: starting devel on 0.72.0

2016-12-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	nyacc: Move README.nyacc.
	* module/nyacc/README.nyacc: Moved from README.nyacc.

	nyacc: Add README.nyacc.
	* README.nyacc: New file.

2016-12-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	tests: Move (ice-9 syncase) into cond-expand.
	* tests/psyntax.mes: Move (ice-9 syncase) into cond-expand.  Fixes
	  guile-2 deprecation messages.

2017-03-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	nyacc: Move (ice-9 syncase) into cond-expand.
	* module/nyacc/lalr.scm: Move (ice-9 syncase) into cond-expand.  Fixes
	  guile-2 deprecation messages.
	* module/nyacc/lang/c99/cpp.scm: Likewise.
	* module/nyacc/lang/c99/parser.scm: Likewise.
	* module/nyacc/lex.scm: Likewise.

2017-01-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Move GNUisms inside #if.
	* mes.c: Move GNUisms inside #if, add Nyacc #ifs.
	 (tmp_num2, tmp_num3): Remove.
	 (make_tmps): Update.
	 (g_free): Make simple int.  Update users.
	* lib.c: Update users.
	* build-aux/mes-snarf.scm (GCC?): New switch to enable GNU extensions.

2017-01-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	repl: Fix expand in repl.
	* module/mes/repl.mes (repl): Fix expand.  Remove sc-expand.

2017-01-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	scm: Error throws rather than hard exit.
	* module/mes/read-0.mes (read-character, read-string): Call error.
	* module/mes/scm.mes (error): Call core:error instead of exit.
	  (syntax-error): Likewise.
	* module/mes/repl.mes (repl): Move read into catch.

2016-12-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	repl: Use exception handling.
	* module/mes/repl.mes (repl): Use catch to prevent exit upon error.

	core: Throw exceptions rather than asserts.
	* lib.c (error): Throw instead of assert.
	  (check_formals, check_apply): Update.
	* mes.c (scm_symbol_unbound_variable, scm_symbol_not_a_pair,
	  scm_symbol_system_error, scm_symbol_wrong_number_of_args,
	  scm_symbol_wrong_type_arg, scm_symbol_unbound_variable): New symbols.
	  (car, cdr, set_cdr_x, set_env_x, eval_apply, gc_up_arena): Update.

	core+scm: Implement exception handling.
	* mes.c (scm_symbol_throw): New symbol.
	* module/mes/catch.scm (catch, throw): Implement [WAS: syntactic sugar].
	  (make-exception, exception?, exception-key, exception-args): Remove.
	* tests/catch.test ("catch", "catch 22"): Add tests.
	* module/mes/base-0.scm: Include it.

	Revert "core: Display me debuggor CPS+CC."
	This reverts commit 6c327b5bdceae6fc59ac8cce4aed99ea0a491846.

2016-12-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Display me debuggor CPS+CC.
	Having display in the core is handy for debugging.
	This is a courtesy commit intended to prevent bitrot.

	* GNUmakefile (mes.o): Depend on display.
	* mes.c: Include display.
	* display.c: New file.

2016-12-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Add continuations, call/cc.
	* mes.c (type_t): Add CONTINUATION.
	  (scm_t): Add continuation;
	  (scm_call_with_current_continuation): New symbol.
	  (scm_symbol_call_with_current_continuation): New special.
	  (g_continuations): New global
	  (CONTINUATION): New field accessor.
	  (MAKE_CONTINUATION): New make_cell helper.
	  (car_): Update.
	  (eval_apply): Implement call/cc.
	* module/mes/display.mes (display): Handle continuations.
	* module/mes/type-0.mes (<cell:continuation>): New type.
	  (cell-type-alist): Add it.
	  (continuation?): New function.
	* tests/base.test ("call/cc"): New test.

	core: Rewrite eval_apply in continuation passing style.
	* mes.c (scm_vm_evlis, scm_vm_evlis2, scm_vm_evlis3, scm_vm_apply,
	  scm_vm_apply2, scm_vm_eval, scm_vm_eval_set_x, scm_vm_eval_macro,
	  scm_vm_eval2, scm_vm_macro_expand, scm_vm_begin,
	  scm_vm_begin_read_input_file, scm_vm_begin2, scm_vm_if,
	  scm_vm_if_expr, scm_vm_call_with_values, scm_vm_call_with_values2,
	  scm_vm_return): New specials.
	  (scm_vm_eval_car, scm_vm_eval_cdr, scm_vm_eval_cons,
	  scm_vm_eval_null_p)[PRIMITIVE-EVAL]: New specials.
	  (eval_apply_t, g_target): Remove.
	  (push_cc): New function.
	  (eval_apply): Rewrite.
	  (vm_call, eval_env, apply_env, eval_env, macro_expand_env, begin_env,
	  call_with_values_env): Remove.
	* posix.c (stderr_): Update.
	* reader.c (read_input_file_env): Update.
	* module/mes/base-0.mes: Update.

2017-01-04  Jan Nieuwenhuizen  <janneke@gnu.org>

	Support radix for string->number, number->string.
	* module/mes/scm.mes (string->number, number->string): Support radix.

	Add string-take, string-drop.
	* module/srfi/srfi-13.mes (string-take, string-drop): New functions.

	core: Stderr_ also print numbers.
	* posix.c (stderr_): Handle numbers.

	Bugfixes bytevectors.
	* math.c (modulo): Modulo of negative value correctly.
	* module/mes/bytevectors.mes (bytevector-u32-native-set!):
	  (bytevector-u16-native-set!): Use ash instead of quotient.

	Append-map: handle multiple list.
	* module/srfi/srfi-1.mes (append-map): Add optional rest argument.

	core: Move GNUisms inside #if.
	* mes.c: Move GNUisms inside #if, add Nyacc #ifs.
	 (tmp_num2, tmp_num3): Remove.
	 (make_tmps): Update.
	 (g_free): Make simple int.  Update users.
	* lib.c: Update users.
	* build-aux/mes-snarf.scm (GCC?): New switch to enable GNU extensions.

	Add drain-input.
	* module/mes/guile.mes (drain-input): New function.

	Bugfix for reading #\*eof* character.
	* module/mes/read-0.mes (read-character): Bugfix for #\*eof*.

	core: Expose command line.
	* mes.c (scm_symbol_argv): New symbol
	  (main): Use it to add argv to environment.
	* module/mes/base.mes (command-line): New function.

	Include srfi-13 in base.
	* module/mes/base-0.mes: Include srfi-13.

	Add filter-map.
	* module/srfi/srfi-1.mes (filter-map): New function.

	Add srfi-1:iota.
	* module/srfi/srfi-1.mes (iota,srf-1:iota): New function.

	Add pretty-print from Guile.
	* module/mes/pretty-print.scm: Import.
	* module/mes/pretty-print.mes: Include it.
	* AUTHORS: Mention it.

	Add make-string, object->string.
	* module/mes/guile.mes (make-string, object->string): New functions.

	Add list-set!, string-set!
	* module/mes/scm.mes (list-set!, string-set!): New functions.

	Fix core:car, core:cdr for specials.
	* mes.c (car_, cdr_): Return special.  Fixes string->list, returning nil.
	* tests/scm.test ("string-length", "string->list"): New tests.

	core: Add continuation on stack.
	* mes.c (r3): New stack variable.
	  (mes_g_stack): Initialize it.
	  (gc_push_frame): Add it.
	  (gc_peek_frame): Set it.

	core: Uniformize calling of apply.
	* mes.c (eval_apply): Have apply take one argument, like all other vm
	  functions: r1; cons of function f and argument list x.  Sorry John.
	  (r2): Repurpose as save/load register.  Update users.
	  (r3): Remove.
	  (vm_call): Remove p2.  Update callers.

	core: Refactor stack handling.
	* mes.c (gc_pop_frame, gc_push_frame): New Functions.
	  (gc_frame, gc_stack): Remove.
	  (vm_call): Update callers.
	* lib.c (dump, bload_env): Update callers.

	Add simple-format.
	* module/mes/display.mes (simple-format, format): New functions.

	Display: If possible, show name of closure.
	* module/mes/display.mes (display): Lookup closure's name and display it.

2016-12-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	Update documentation.
	* doc/ANNOUNCE-0.4: New file.
	* NEWS: Typo.

	guix hash: 1jpm8m8y2dqsl3sc6flf8da4rpdrqh6zgr2mghzjw0lg34v1r21j

	Release 0.4.
	* configure (VERSION): Bump.

	Remove hardcoded duplication of version.
	* GNUmakefile (CPPFLAGS): Include VERSION.
	* mes.c (main): Use it.  Add --dump and --load to --help.
	  (scm_symbol_mes_prefix, scm_symbol_mes_version): New sybols.
	  (mes_symbols): Use them to set prefix and version.
	* module/mes/base-0.mes (effective-version): Use %version.
	* module/mes/repl.mes (welcome): Likewise.

2016-12-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	Update documentation.
	* HACKING: Update status, some ideas where to go next.
	* NEWS: Update status.
	* README: Update.
	* doc/ANNOUNCE: Move from top.
	* doc/ANNOUNCE-2: Likewise.
	* doc/ANNOUNCE-0.3: New file.

2016-12-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	make: Install nyacc scripts too.
	* make/install.make (install): Add scripts/nyacc.mes, scripts/nyacc-calc.mes.

	Revert "core: Display me debuggor."
	This reverts commit 53ec23a0edcfdcb7dd4e32277e5a24e0a8fab5dd.

2016-12-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Display me debuggor.
	Having display in the core is handy for debugging.
	This is a courtesy commit intended to prevent bitrot.

	* GNUmakefile (mes.o): Depend on display.
	* mes.c: Include display.
	* display.c: New file.

2016-12-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "core: FAT_C_READER: Show your speed."
	This reverts commit 5a9b9ac36bd33e497272b287ab1f0db715e01d38.

2016-12-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: FAT_C_READER: Show your speed.
	scripts/nyacc.mes runs in 4s rather than 18s with fat C reader.
	This is a courtesy commit intended to prevent bitrot.

	* mes.c (quasiquote, unquote, unquote_splicing, syntax, quasisyntax,
	  unsyntax, unsyntax_splicing): Add symbols.
	* reader.c (char_eof, char_nul, char_alarm, char_backspace, char_tab,
	  char_newline, char_vtab, char_page, char_return,
	  char_space)[FAT_C_READER]: New global variables.
	  (make_keyword, read_block_comment, read_character, read_hex,
	  append_char, read_string, fat_c_lookup_, fat_c_eat_whitespace,
	  fat_c_read_word): New functions.
	  (eat_whitespace_, read_word_, lookup_)[FAT_C_READER]: Add hook.

2016-12-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	Refactor reader.
	* module/mes/read-0.mes (read-hash): New function.
	  (read-word): Use it.
	  (eat-whitespace): Rewrite.
	  (display): Minimal implementation through core.
	* lib.c (stderr_): Support printing of strings while booting.

	core: Remove c3+r abbreviatons.
	* lib.c (caaar, caadr, caddr, cdadr, cadar, cddar, cdddr, cadddr):
	  Remove.
	* mes.c: Rewrite callers
	* module/mes/read-0.mes: Rewrite callers.
	* module/mes/base.mes (caaar, caadr, caddr, cdadr, cadar, cddar, cdddr,
	  cadddr): New function.

	core: Move dump, load, bload to lib.c.
	* lib.c (dump, load, bload): Move from mes.c
	* mes.c (dump, load, bload): Remove.

	core: Add getenv, verbose module loading on MES_DEBUG.
	* mes.c (MAKE_REF, MAKE_STRING): Oops, remove stray semicolon.
	* posix.c (getenv_): New function.
	* module/mes/base-0.mes (load): Use it to switch on MES_DEBUG=1.
	  (mes-use-module): Remove commented-out code.

	core: Add some error checking.
	* lib.c (length): Return -1 for non-proper lists.
	  (error): New function.
	  (assert_defined): Use it.
	  (check_formals, check_apply): New functions.
	* mes.c (car, cdr, set_cdr_x, set_env_x, eval_apply): Add error check.
	* srfi/srfi-1.mes (member): New function.
	* tests/srfi-1.tests ("member"): New test.

	core: Move reader and posix functions from mes.c
	* mes.c (getchar, ungetchar, peekchar, peek_byte, read_byte,
	  unread_byte, write_byte, read_input_file_env_, read_input_file_env):
	  Remove.
	* posix.c (getchar, ungetchar, peekchar, peek_byte, read_byte,
	  unread_byte, write_byte): Move from mes.c.
	* reader (read_input_file_env_, read_input_file_env): Move from mes.c.

	core: Remove unused symbols.
	* mes.c (scm_symbol_noexpand, scm_symbol_syntax,
	 scm_symbol_quasisyntax, scm_symbol_unsyntax,
	 scm_symbol_unsyntax_splicing, scm_symbol_quasiquote,
	 scm_symbol_unquote, scm_symbol_unquote_splicing, scm_symbol_define,
	 scm_symbol_define_macro): Remove.

	Add write, add display test, some fixes.
	* mes.c (write_byte): Rename from write_char.
	* module/mes/display.mes (display): Fixes for write: char, closure, procedure.
	  (write-char, write, with-output-to-string): New functions.
	* tests/read.test: Include base-0 to see some output.
	* tests/display.test: New file.
	* GNUmakefile (TESTS): Add it.

	core: Remove display.
	* posix.c (stderr_): New function.
	* display.c: Remove.
	* mes.c: Remove includes.  Use stderr_ instead of display_.
	 (gc_loop): Preserve function's name.
	 (arity_): New function.
	* GNUmakefile (mes.o): Remove dependency on display.
	* module/mes/read-0.mes: Use core:stderr instead of display, newline.
	  (newline): New function.
	* module/mes/base-0.mes: Use core:stderr instead of display.
	  Include (mes display).
	* module/mes/display.mes: New file.
	* lib.c (assert_defined): Move from mes.c.
	  (string_to_cstring): Move from posix.c
	* build-aux/mes-snarf.scm (function-environment): Initialize function
	  name with scheme string.

	Import srfi-26 from Guile.
	* module/srfi/srfi-26.scm: Import.
	* module/srfi/srfi-26.mes: Include it.
	* AUTHORS: Mention it.

2016-12-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Remove symbol_to_list, char_to_integer, integer_to_char.
	* mes.c (symbol_to_list, char_to_integer, integer_to_char): Remove
	* module/mes/read-0.mes (symbol->list, integer->char,
	  symbol->keyword): New function.
	  (read-word): Use symbol->keyword.
	* module/mes/type-0.mes (char->integer): New function.
	* module/mes/scm.mes (keyword->symbol): New function.

	core: Remove string.c.
	* string.c: Remove.
	* mes.c (eval_apply): Remove caller.
	* GNUmakefile (mes.o): Remove dependency on string.
	* module/mes/psyntax-0.mes (eval): Handle "noexpand".
	* module/mes/type-0.mes (string->symbol, symbol->list, symbol->string):
	  New function.

	core: Remove number_to_string.
	* string.c (number_to_string): Remove.
	* module/mes/scm.mes (number->string): New function.

	core: Remove substring.
	* string.c (substring): Remove.
	* module/mes/scm.mes (substring): New function.

	core: Remove string_length.
	* module/mes/scm.mes (string-length): New function.

	core: Remove list_to_string.
	* string.c (list_to_string): Remove.
	* module/mes/read-0.mes (list->string): New function.
	* module/mes/scm.mes (list->string): Remove.

	core: Remove string-append.
	* string.c (string_append): Remove.
	* module/mes/type-0.mes (string-append): New function.
	* module/mes/base-0.mes: Include type-0 without using string-append.

	core: Remove string.
	* string.c (string): Remove.
	* module/mes/type-0.mes (string): New function.

	Add exit.
	* lib.c (exit_): Rename from builtin_exit.
	* module/mes/scm.mes (list): Remove.

	core: Remove last_pair, list_ref, string_ref.
	* lib.c (last_pair, list_ref): Remove.
	* string.c (string_ref): Remove.
	* module/mes/type-0.mes (string->list): New function.
	* module/mes/scm.mes (string-ref): New function.

	core: Make closure real type.
	* display.c (display_helper):
	* mes.c (type_t): Add CLOSURE.
	  (scm_t): Add closure.
	  (CLOSURE): New macro.
	  (eval_apply:apply): Update.
	  (eval_apply:eval): Remove closure special-casing.
	  (gc_loop): Handle CLOSURE.
	* module/mes/read-0.mes: Update types.
	* module/mes/type-0.mes: Update types.
	* display.c (display): Update.
	* module/mes/fluids.mes (env:escape-closure): Check for '*closure.

	core: Remove quote, quasiquote, quasisyntax.
	* mes.c (quote, quasiquote, quasisyntax): Remove.

	core: Remove make_lambda.
	* mes.c (make_lambda): Remove.

	core: Remove type.c.
	* module/mes/type-0.mes: Resurrect.
	* module/mes/base-0.mes: Include it.
	* module/mes/read-0.mes (not, pair?, atom?): New functions.
	* type.c: Remove.
	* mes.c: Remove callers.
	* GNUmakefile (mes.o): Remove dependency on type.

	core: Remove gc_show.
	* mes.c (gc_show): Remove.

	core: Remove add_environment.
	* mes.c (add_environment): Remove.  Update callers.
	  (scm_symbol_dot): New global.

	core: Remove make_string.
	* mes.c (MAKE_STRING): New macro.
	  (make_string): Remove.  Update callers.
	* string.c: Update callers.

	core: Remove make_ref.
	* mes.c (MAKE_REF): New macro.
	  (make_ref): Remove.  Update callers.

	core: Remove make_char.
	* mes.c (MAKE_CHAR): New macro.
	  (make_char): Remove.  Update callers.
	* reader.c (peek_char, read_char, unread_char): Remove.
	* module/mes/scm.mes (peek-char, read-char, unread-char): New function.

	core: Remove make_number.
	* mes.c (MAKE_NUMBER): New macro.
	  (tmp_num_, tmp_num_2): New function.
	  (make_number): Remove.  Update callers.

	Remove make_function.
	* mes.c (make_function): Remove.

	core: Remove make_keyword.
	* mes.c (make_keyword): Remove.
	* module/mes/read-0.mes (<cell:keyword>): New global.
	  (read-word): Use it with make_cell instead fo make-keyword.
	* strting.c (symbol_to_keyword): Use make_cell instead of make_keyword.

	core: Remove make_macro.
	* module/mes/read-0.mes (<macro>): New global.
	  (env:macro): Use it with make_cell instead of make_macro.
	* mes.c (make_macro): Remove.
	* type.c (car_): Rename from mes_car.
	  (cdr_): Rename from mes_cdr.

	core: Simplify lookup.
	* reader.c (lookup_): Rename from lookup.  Remove all lookups except
	  for numbers and symbols.  Update callers.
	* mes.c (make_symbol_): Rename from internal_make_symbol.  Update
	  callers.
	* module/mes/read-0.mes (lookup): New function.
	  (read-word): Remove all lookup calls, except for numbers and symbols.

	Remove lookup-char.
	* reader.c (lookup_char): Remove.
	* module/mes/read-0.mes (lookup-char): Remove.
	  (read-word): Rewrite using quote.

	core: Cleanup symbol initialization and lookup.
	* build-aux/mes-snarf.scm (symbol->names): New function
	  (function->environment): Initialize symbol.
	  (generate-includes): Also write .symbol-names.i.
	* mes.c (mes_symbols): Include it.  Remove internal_lookup_symbol.
	* display.c (display): Handle display of nil in symbol list.
	* reader.c (internal_lookup_symbol): Remove name-fu.

2016-12-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Remove most of reader.
	* reader.c (append_char, read_block_comment, read_character, read_hex,
	  read_string): Remove.
	  (eat_whitespace, read_word)[READER]: Remove.
	* mes.c (list_to_symbol): New function.
	* module/mes/read-0.mes (list->symbol, read-character, read-hex,
	  read-string): New functions.

2016-12-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	Refactor reader.
	* module/mes/read-0.mes (eat-whitespace): More efficient ordering/peeking.
	* module/mes/read-0.mes (read-word): Handle tab.

2016-12-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Disable reader.
	* mes.c (READER): Switch off.
	* module/mes/read-0.mes (eat-whitespace): Handle #;.

	core: Do some tail call elimination.
	* mes.c (eval_apply): Use goto instead of return.

	core: One big eval_apply.
	* mes.c (eval_apply): New function.
	  (eval_apply_t): New type.
	  (g_target): New global.
	  (vm_evlis, vm_apply_env, vm_eval_env, vm_expand_macro_env,
	  vm_begin_env, vm_if_env, vm_call_with_values_env): Remove.  Update callers.
	  (macro_expand_env): Rename from expand_macro_env.
	* guile/mes.mes: Update callers.
	* module/mes/base-0.mes: Likewise.
	* module/mes/mes-0.mes: Likewise.
	* module/mes/psyntax-1.mes: Likewise.
	* module/mes/repl.mes: Likewise.

	core: Remove vm_call_lambda.
	* mes.c (vm_call_lambda): Remove.
	 (call_lambda): Use begin_env.

	Support PEG from Guile.
	* module/mes/peg.mes: New file.
	* module/mes/peg/cache.scm: New file.
	* module/mes/peg/codegen.scm: New file.
	* module/mes/peg/simplify-tree.scm: New file.
	* module/mes/peg/string-peg.scm: New file.
	* module/mes/peg/using-parsers.scm: New file.
	* tests/peg.test: New file.
	* GNUmakefile (TESTS): Add it.

	Support pmatch from Guile.
	* module/mes/pmatch.scm: New file.
	* module/mes/pmatch.mes: New file.
	* AUTHORS: Mention it.

	Use include-from-path for psyntax.pp.
	* module/mes/psyntax.pp: Rename from module/mes/psyntax-pp.mes.
	* module/mes/psyntax.mes: Update.
	* AUTHORS: Update.

	Use include-from-path for upstream.
	* module/mes/lalr.scm: Rename from module/mes/lalr.upstream.mes.
	* module/mes/lalr.mes: Update.
	* module/mes/match.scm: Rename from module/mes/match.upstream.mes.
	* module/mes/match.mes: Update.
	* module/mes/optargs.scm: Rename from module/mes/optargs.upstream.mes.
	* module/mes/optargs.mes: Update.
	* module/mes/quasisyntax.scm: Rename from module/mes/quasisyntax.upstream.mes.
	* module/mes/quasisyntax.mes: Update.
	* module/srfi/srfi-1.scm: Rename from module/srfi/srfi-1.upstream.mes.
	* module/srfi/srfi-1.mes: Update.
	* module/srfi/srfi-9.scm: Rename from module/srfi/srfi-9.upstream.mes.
	* module/srfi/srfi-9.mes: Update.
	* AUTHORS: Update.

2016-12-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add string-copy, string=, string=?, char<?, char>?, char<=?, char>=?.
	* module/srfi/srfi-13.mes: New file.
	* module/mes/scm.mes (char<?, char>?, char<=?, char>=?): New function.
	* module/srfi/srfi-13.mes: New file.
	* tests/srfi-13.test: New file.
	* string.c (string_to_symbol): Handle "".

2016-12-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Remove quasiquote, quasisyntax.
	* quasiquote.c: Remove.
	* mes.c: Remove callers.
	* GNUmakefile (mes.o): Remove dependency on quasiquote.

	core: Disable quasiquote.
	* mes.c (QUASIQUOTE): Switch off.
	* tests/read.test: Remove quasiquote tests.

	Refactor quasiquote.
	* module/mes/quasiquote.mes (quasiquote): Refactor.
	* tests/quasiquote.test: Add tests.

	core: Bugfix append with one argument.
	* mes.c (append): Handle one argument.
	* tests/base.test ("append", "append 0" ... "append 5"): New tests.

	core: Do macro expansion only once.
	* mes.c (vm_eval_env): I will expand this macro only once.

2016-12-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add psyntax-based quasisyntax.
	* module/mes/quasisyntax.upstream.mes: Import from Guile.
	* AUTHORS: Mention it.
	* module/mes/quasisyntax.mes: New file.
	* module/mes/psyntax.mes: Include it.

	core: Remove define.
	* base-0.mes (cons*): Refactor.
	* module/mes/read-0.mes: Implement define, define-macro using macros.
	* define.c: Remove.
	* mes.c: Remove callers.
	* GNUmakefile (mes.o): Remove dependency on define.

2016-12-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	nyacc: Support enhanced Guile-1.8.
	* module/nyacc/lalr.scm: Export process-spec, reserved?.  Use optargs, syncase.
	* module/nyacc/lex.scm: Use optargs, syncase.
	* module/nyacc/parse.scm: Use optargs.
	* module/nyacc/util.scm: Use optargs.
	* module/nyacc/lang/util.scm: Use optargs.
	* module/nyacc/lang/c99/cpp.scm: Use syncase.
	* module/nyacc/lang/c99/parser.scm: Use optargs, syncase.

2016-12-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	Nyacc example scripts: support Guile-1.8.

2016-12-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add Nyacc example scripts.
	* guile/nyacc-calc.scm: New file.
	* guile/nyacc.scm: New file.
	* scripts/nyacc-calc.mes: New file.
	* scripts/nyacc.mes: New file.
	* GNUmakefile (mes-check, guile-check): Run them.

	nyacc: Add mes modules.
	* module/nyacc/lang/c99/cpp.mes
	* module/nyacc/lang/c99/parser.mes
	* module/nyacc/lang/calc/parser.mes
	* module/nyacc/lang/util.mes
	* module/nyacc/lex.mes
	* module/nyacc/parse.mes
	* module/nyacc/util.mes

	nyacc: Use standard \return rather than \cr.

2016-12-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	Import Nyacc 0.72.0.
	* module/nyacc: Import module/nyacc.

2016-12-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	Import psyntax from Guile-1.8: R7RS with-ellipsis.
	* GNUmakefile (psyntax-import): New target.
	* module/mes/psyntax.ss: Import.
	* module/mes/psyntax-pp.mes: Import.
	* NEWS: Mention it.

2016-12-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	Prepare for psyntax-6.3..7.3 support.
	* module/mes/psyntax-0.mes (ormap): New function.
	  (eval): New function.
	  (remprop): New function.
	  ($sc-put-cte, $make-environment, environment?, syntax->list,
	  syntax->vector, literal-identifier=?, $syntax-dispatch, eval-when):
	  New variable.

2016-12-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add abs.
	* module/mes/scm.mes (abs): New function.

	core: Bugfix unread_byte.
	* mes.c (unread_byte): Return SCM value instead of stray int.

	Add ash.
	* math.c (ash): New function.
	* tests/scm.test (ash, ash -1): New tests.

	Support (sxml xpath) for Nyacc c99.
	* module/sxml/xpath.mes: New file.
	* module/sxml/xpath.upstream.mes: Import from Guile.
	* AUTHORS: Mention it.

	Partial (rnrs arithmetic bitwise) support for Nyacc c99.
	* module/rnrs/arithmetic/bitwise.mes: New file.

	Nicer closure and builtin procedure display.
	* display.c (display): Show closure as procedure with formal
	  parameters.  Display ariry as fake parameters with builtin.

	Add string->number.
	* module/mes/scm.mes (string->number): New function.

	Add unless.
	* module/mes/scm.mes (unless): New syntax.

	Add iota.
	* module/mes/scm.mes: (iota): New function.
	* tests/scm.test (iota, iota 0, iota -1): New tests.

	Partial srfi-43 support for Nyacc.
	* module/srfi/srfi-43.mes: New file.

	Partial srfi-14 support for Nyacc.
	* module/srfi/srfi-14.mes: New file.
	* tests/srfi-14.test: New file.
	* GNUmakefile (TESTS): Add it.

	Add delete, delq, vector-copy.
	* module/mes/scm.mes (filter, delete, delq, vector-copy): New functions.

	Add negative?, positive?, zero?, 1+ 1-.
	* module/mes/scm.mes (negative?, positive?, zero?, 1+, 1-): New functions.

	Add missing srfi-1 functions for Nyacc.
	* module/srfi/srfi-1.scm (fold, fold-right, remove, append-reverse,
	  remove!): New functions.
	* tests/srfi-1.test: New file.
	* GNUmakefile (TESTS): Add it.
	* module/srfi/srfi-1.upstream.mes: Import bits from Guile-1.8.
	* AUTHORS: Mention it.

	Add even?, odd?.
	* module/mes/scm.mes (even?, odd?): New function.

	Bugfix: for-each with two lists.
	* module/mes/scm.mes (for-each): Fix for two lists.  Always return *unspecified*.

	Add and=>.
	* module/mes/base.scm (and=>): New function.

	Add eqv?.
	* module/mes/base.scm (eqv?): New function.

2016-12-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	Closure is not a pair.
	* module/mes/base.mes (closure_p, mes_car, mes_cdr): New function.
	  (pair_p): Closure is not a pair.
	* NEWS: Mention it.
	* psyntax-0.mes (self-evaluating?): Add closure?.

	Bugfix: support map^3.
	* module/mes/base-0.scm (map): Support third list, add more visible
	  error when used with 4 or more list.

2016-12-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Resurrect quasisyntax support.
	* mes.c (the_unsyntaxers): New symbol.
	  (mes_builtins)[QUASISYNTAX]: Initialize it, add to environment.
	* quasiquote.c (add_unsyntaxers): Use it.
	  (vm_eval_quasisyntax): New function.
	  (eval_quasisyntax): Use it.

2016-12-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add psyntax-based srfi-9.
	* module/srfi/srfi-9-psyntax.mes: New file.

	Add support for including Guile files.
	* module/mes/guile.mes: New file.
	* module/mes/pretty-print.mes: New file.

	Support include and include-from-path.
	* module/mes/base-0.mes (include, include-from-path): New function.

	Support backslash in string.
	* reader.c (read_string): Handle '\\'.
	* tests/read.test: Add it.

	Support #\alarm, #\vtab.
	* mes.c (char_alarm): New variable.
	  (char_vtab): Rename from char_vt.
	* reader.c (read_character): Add alarm, update vtab.
	* display.c (display): Likewise.
	* module/language/c/lexer.mes (read-string): Use vtab.

	Support non-nested #| |# comment.
	* module/mes/read-0.mes (read-word, read-block-comment): Implement #|.
	* reader.c (read_word, read_block_comment)[READER]: Likewise.
	* tests/read.test: Test it.
	* NEWS: Mention it.

	Support #; comment.
	* module/mes/read-0.mes (read-word): Implement #;.
	* reader.c (read_word)[READER]: Likewise.
	* tests/read.test: Test it.
	* NEWS: Mention it.

2016-12-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	Minimal syntactic exception support.
	* module/mes/catch.mes: New file.
	* tests/catch.test: New file.
	* GNUmakefile (TEST): Add it.

	Minimal syntactic fluids support.
	* module/mes/fluids.mes: New file.
	* tests/fluids.test: New file.
	* GNUmakefile (TESTS): Add it.

	Add string-prefix?, symbol-prefix, symbol-append.
	* module/mes/scm.mes (string-prefix?, symbol-prefix, symbol-append):
	  New function,

	Add list-head, list-tail.
	* module/mes/scm (list-head, list-tail): New function.

	core: Bugfix number-based-cells: allow displaying (current-module).
	* display.c (display): Handle cell_symbol_quote as symbol.

2016-12-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	Make guile switchable in GNUmakefile.
	* GNUmakefile (GUILE): New variable.  Update users.
	* guile/mes-0.scm (mes?, guile-1.8?, guile-2?): New variables.
	* module/mes/base.mes (guile?): Remove.
	* module/mes/base-0.mes (effective-version, mes?, guile?, guile-1.8?,
	  guile-2?): New variables.
	* tests/cwv.test: Support Guile 1.8.

2016-12-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	Resurrect guile-mescc with guile-2.1.5.
	* scripts/include.mes: Grep all files.
	* GNUmakefile (mescc.cat): Update for mes-use-module; list all toplevel inputs.
	* module/language/c/lexer.mes: Use (system base lalr).
	* module/language/c/parser.mes: Likewise.
	* module/language/c/compiler.mes: Likewise.  Remove encoding on output port.
	* scripts/mescc.mes: Remove BROKEN comment.

2016-12-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	optargs guile

2016-12-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Support Guile optargs.
	* module/mes/optargs.upstream.mes: Import latest non-syntax-case
	  version from Guile.
	* AUTHORS: Add it.
	* module/mes/optargs.scm: New file.
	* tests/optargs.test: New file.
	* GNUmakefile (TESTS): Add it.
	* NEWS: Update.

	Support => in cond.
	* module/mes/base-0.mes (cond): Support =>.
	* module/mes/rea-0.mes (cond): Update.
	* NEWS: Update.

	core: Support keywords.
	* display.c (display): Handle keyword.
	* mes.c (type_t): Add KEYWORD.
	  (eq_p): Handle it.
	  (make_keyword): New function.
	* reader.c (lookup): Use it.
	* type.c (keyword_p): New function.
	* NEWS: Update.

	Handle form-feed.
	* module/mes/read-0.mes (eat-whitespace, read-word): Handle form-feed.
	* reader.c (eat_whitespace, read_word): Likewise.

2016-12-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	core: Make symbols constants.
	* mes.c (apply_env,eval_env): Rewrite using switch.
	* build-aux/mes-snarf.scm (symbol->header): Define constants.
	  (symbol->source): Only update g_free and init cells.

2016-12-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	Extend Scheme reader, reduce C reader dependency.
	* mes.c (bload_env): Mark as internal.
	  (load_env): Likewise.  Load Scheme reader from source.  Remove dumping.
	  (dump): New function.
	* (vm_begin_env): Allow for gc while read_input_file_env.
	  (mes_builtins): Add *dot*.
	  (read_input_file_env)[!READER]: Invoke read-input-file.
	* module/mes/read-0.mes (read-env): New function.
	  (read-word): Support quasisyntax.
	  Remove usage of ' thoughout.
	* module/mes/repl.mes (repl): Use read instead of read-env.
	* guile/mes.scm (environment): Add *dot*.
	* guile/reader.mes: Update.
	* NEWS: Update.

	Silence garbage collector.
	* GNUmakefile: unexport MES_DEBUG.

	Update README.
	* README: Add a paragraph with current status.

2016-12-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	guix hash: 0nbdjvmsyarp4vfg3r9hhhnabv11z1b7isw4g09x3kjd0r1lx0mh

	Release 0.3.
	* configure (VERSION): Bump to 0.3.
	* mes.c (main): Likewise.
	* module/mes/repl.mes: Likewise.

	Update Mes in Guile.
	* guile/mes.scm: Update for guile-2.2.
	* guile/mes.mes: Update from module/mes/mes-0.mes.
	* guile/reader.mes: Update from module/mes/read-0.mes.

	Resurrect Mes in Guile.
	* guile/mes.mes: New file, from the archives.
	* guile/mes.scm: Updates.

	Avoid garbage returns.
	* posix.c (set-current-input-port): Return current-input-port.
	  (force_output): Return scm_unspecified.

	Update documentation.
	* README: Add make targets.
	* INSTALL: Add guix.
	* HACKING: Add info on sc.

	core: Resurrect QUASIQUOTE=0.
	* mes.c (mes_builtins) [!QUASIQUOTE]: Do not add unquoters.
	* module/mes/base-0.mes (push!, pop!, load, mes-use-module): Rewrite
	  without quasiquote.
	* module/mes/quasiquote.mes (quasiquote): Rewrite using if, and.
	* module/srfi/srfi-0 (cond-expand): Rewrite without quasiquote.

	Add loadable modules.
	* module/mes/base-0.mes (mes-use-module): Implement.
	* module/mes: Update users.
	* HACKING: Update.
	* NEWS: Update.
	* configure (main): Use shell expansion for prefix.
	* make/install.make (install): Substitute prefix.

	Use syntax rather than psyntax.
	* module/language/c/parser.mes: Switch to syntax.
	* module/language/paren.mes: Likewise
	* scripts/mescc.mes: Likewise
	* scripts/paren.mes: Likewise
	* scripts/repl.mes: Likewise
	* tests/let-syntax.test: Likewise
	* tests/match.test: Likewise
	* tests/record.test: Likewise

	Resurrect syntax.mes.
	* module/mes/syntax.mes: New file.
	* AUTHORS: List it.

	core: use FIXED_PRIMITIVES rather than environment cache.
	* cache.c: Remove.
	* define.c: Remove callers.
	* mes.c: Likewise.
	  (vm_eval_env) [FIXED_PRIMITIVES]: Hardcode car, cdr, cons, null_p.
	* GNUmakefile: Update.

	core: Set max arena size.
	* mes.c (MAX_ARENA_SIZE): New global.
	 (gc): Use it.

	core: Make arena size configurable.
	* mes.c (main): Read MES_ARENA.
	* scripts/repl.mes: Set MES_ARENA to 5000000 if not already set.
	  Fixes repl startup.

	core: Grow gc arena gradually.
	* mes.c: (gc_up_arena): New function.
	 (gc): Use it when possible.
	 (gc_init_cells, gc_init_news): New function.
	 (mes_symbols): Use them.

	core: gc bugfixes.
	* mes.c (make_tmps): New function.
	  (make_symbols, gc): Use it.
	  (vm_call_with_values_env): New vm function.
	  (call-with-values): Call it.
	  (eval_env): Do not call eval_env inline.
	* define.c (vm_define_env): Use r2 rather than local name.
	  (g_symbols): Rename from symbols.

	core: Split-off cache, display, reader.
	* mes.c: Remove cache, display, reader functions.
	* cache.c: New file.
	* display.c: New file.
	* reader.c: New file.

	Add reader in Scheme.
	* module/mes/read-0.mes: New file.
	* mes.c (char_to_integer, integer_to_char, null_p): Move to core.
	 (peek_byte, read_byte, unread_byte): New function.
	 (main): --dump, --load: New option.
	* lib.c (char_to_integer, integer_to_char): Remove.
	* NEWS: Update.

	core: Cleanup cells.
	* mes.c: Use accessors rather than g_cell[] access throughout.

	core: Add function indirection.
	* mes.c (functions): New array.
	  (scm_t): Change function pointer to index.
	  (make_cell): Handle function.
	  (call): Update for function change.
	  (display_): Likewise.
	  (make_function): New function.
	* build-aux/mes-snarf.scm (function->source): Update declarations.
	  (function->environment): New function.

	core: Number based cells.
	* mes.c (scm_t): Change car, string, ref, cdr, macro, vector into g_cell index
	  [WAS]: scm_t pointer.
	* define.c: Update.
	* lib.c: Update.
	* math.c: Update.
	* posix.c: Update.
	* quasiquote.c: Update.
	* string.c: Update.
	* type.c: Update.
	* build-aux/mes-snarf.mes Update.
	* tests/gc-4.test: New test.
	* tests/gc-5.test: New test.
	* tests/gc-6.test: New test.

	core: Integrate garbage collector/jam scraper.
	* mes.c (r0, r1, r2, r3, stack):  New globals.
	  (gc_loop): Handle MACRO and SCM.
	  (gc_copy): Handle FUNCTION, allow for pre-allocated SCM and SYMBOL.
	  (assq): Flag any BROKEN_HEARTs.
	  (vm_call): New function.  Enables moving C stack to GC stack.
	  (evlis_env, apply_env, eval_env, expand_macro_env, begin_env,
	  if_env): Use vm_call-indirection.
	  (call_lambda): New function.
	  (vm_apply_env): Rename from apply_env.  Remove parameters, instead
	  use r1, r2 and r0.
	  (vm_evlis_env, vm_eval_env, vm_expand_macro_env, vm_begin_env,
	  vm_if_env): Likewise.
	  (acons): New function.
	  (mes_environment) [!MES_FULL, MES_MINI]: Add cpp switches to create minimally
	  filled environment, for debugging.
	  (main): Print free value at exit.
	* define.c (define_env): Use vm_call-indirection.
	  (vm_define_env): Rename from define_env.
	* quasiquote.c (eval_quasiquote): Use vm_call-indirection.
	  (vm_eval_quasiquote): Rename from eval_quasiquote.
	* tests/gc-2.test: New test.
	  tests/gc-2a.test: New test.
	  tests/gc-3.test: New test.

	Add sicp garbage example: tests/gc-1.test.

	core: Make using GC in switchable, set to off; on dumps core.

	core: Add garbage collector/jam collector experiment.
	* mes.c (gc, gc_loop, gc_copy, gc_move, gc_relocate_car,
	  gc_relocate_cdr, gc_flip): New function.
	* tests/gc-0.test: New file.

	Add mes gc test setup.
	* tests/gc.test: New file.

	guix hash: 09axqivywpw0l9lm7pk1ncp6690vfv658z731z674ih73yqs5qma

	Release 0.2.
	* configure (VERSION): Bump to 0.2.
	* mes.c (main): Likewise.
	* module/mes/repl.mes: Likewise.

	Update NEWS.

	test: Run psyntax before record.
	* GNUmakefile (TESTS): Run psyntax before record.

	test: Add psyntax closure tests.
	* tests/closure.test (closure 7, closure 8, closure 9): New test.

	core: Show more info on apply error.
	* mes.c (apply_env): Be more specific about what cannot be applied.

	test: Add toplevel begin define test.
	* tests/base.test (top begin define): New test.

	core: Bugfix: report name of undefined variable.
	* mes.c (assert_defined): Add variable as parmeter, print it.  Update
	  callers.

	core: Use switch in display_helper.
	*mes (display_helper): Use switch.

	core: Refactor eval.
	* mes.c (eval_env): Rename from builtin_eval, Update callers.  Use switch.

	core: One SCM type for function.
	* mes.c (function_t): New struct.
	  (type): One type for function.
	  (call): Refactor.
	* build-aux/mes-snarf.mes: Use arity annotation.  WAS: args.  Update
	  annotations.

	core: Cleanup macro expansion.
	* mes.c (builtin_eval): Call expand_macro_env after handling primitives.
	  (expand_macro_env): Include syntax-case expansion, remove skipping
	  of primitives.
	  (sc_expand_env): Remove.

	core: Factor-out assert_defined.
	* mes.c (assert_defined): New function.
	  (set_env_x): Use it.
	  (builtin_eval): Use it.

	Implement load.
	* mes.c (symbol_primitive_load): New symbol.
	  (builtin_eval): Use it to implement primitive-load.
	* module/mes/base-0.mes (push!, pop!): New macro.
	  (load): New macro.
	* tests/data/load.scm: New file.
	* tests/base.test (load): New test.

	posix: Implement open-input-file.
	* posix.c: New file.
	* mes.c: Include posix.environment.h, posix.environment.i, posix.environment.c.
	  (read_input_file_env): Rename from read_file_env.  Update
	  callers.
	  (load_env): Rename from load_file_env.  Update callers.
	* GNUmakefile (mes.o): Add posix.c, posix.environment.h,
	  posix.environment.i dependencies.

	core: Support switching of input stream.
	* mes.c (g_stdin): New global.
	  (getchar): New function, use g_stdin.
	  (ungetchar): Use g_stdin.
	  (main): Initialize g_stdin to stdin.

	Update documentation wrt syntax-case.
	* HACKING: Update wrt syntax-case.
	* NEWS: Likewise.
	* README: Likewise.
	* guix.scm: Likewise.

	Update AUTHORS.
	* AUTHORS: Include information on lalr, match and psyntax.

	Finalize psyntax integration.
	* mes.c (sc_expand_env): Exclude primitives, expand native macros.
	  (symbol_expand_macro): New symbol.
	* module/mes/psyntax-0.mes (properties-alist): New function.
	* module/mes/psyntax-1.mes: Set expand-macro.
	  (define-syntax, syntax-rules, let-syntax): Remove macro.
	* module/language/c/parser.mes: Use psyntax modules, remove syntax module.
	* module/language/paren.mes: Likewise.
	* scripts/repl.mes: Likewise.
	* tests/match.test: Likewise.
	* tests/record.test: Likewise.
	* tests/psyntax.test (define-syntax swap!): Add test.
	* module/mes/let-syntax.mes: Remove.
	* module/mes/syntax.mes: Remove.

	core: Quoted internals are symbols.
	* mes.c (begin_env): Rename from begin.  Update callers.
	  (scm_begin, scm_if, scm_define, scm_set_x): Rename from symbol_*.
	  (symbol_begin, symbol_define, symbol_if, scm_lambda, scm_set_x): New symbols.
	  (mes_environment): Add them to environment, SYMBOL->SCM.
	* define.c (define_env): Rename from define.  Update callers.
	* build-aux/mes-snarf.scm: Shadow internals (SCM) by their symbol.

	test: More values, call-with-values tests.
	* tests/cwv.test: New file.
	* GNUmakefile (TESTS): Add it.
	* tests/scm.test: Remove value and call-with-values tests.

	psyntax: More tests.
	* tests/psyntax.test: Add tests.

	core: Fix quasisyntax reading.
	* mes.c (readword): Avoid unspecified behaviour in comma list.

	test: Add new macros.
	* module/mes/test.mes (pass-if-equal, expect-fail): New macros.

	repl: Add sc-expand meta command, include syntax-case.
	* module/mes/repl.mes (,sc-expand): New meta command.
	* scripts/repl.mes: Include psyntax-0, psyntax-1, psyntax.  Not used as
	  basis for match yet.

	Add syntax-case based syntax-rules.
	* module/mes/psyntax-1.mes (syntax-rules): New syntax transformer,
	  based on syntax-case.
	  (define-syntax-rule): New macro.
	  (let-syntax): New macro, for syntax-case.
	* tests/let-syntax.test: Switch to syntax-case.
	* tests/psyntax.test: Add syntax-rules and syntax-rule test.

	Bugfix include.mes: skip commented modules.
	* scripts/include.mes: Make regexp more strict.

	Initial psyntax integration.
	* mes.c (sc_expand_env): New function.
	  (builtin_eval): Use it.
	* module/mes/psyntax-0.mes: New file.
	* module/mes/psyntax-1.mes: New file.
	* tests/psyntax.test: New file.
	* GNUmakefile (TESTS): Add it.

	psyntax: Add missing (interaction-environment) to eval.
	* module/mes/psyntax.mes: Add (interaction-environment) to eval.

2016-12-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Import psyntax from Guile-1.3a.
	* module/mes/psyntax.mes: New file.
	* module/mes/psyntax.ss: New file.

	commit 230c435383087a1e6ad60d9c98d3ec75dd2c3e49
	Author: Mikael Djurfeldt <djurfeldt@nada.kth.se>
	Date:   Tue Aug 19 01:28:50 1997 +0000

	    * syncase.scm: New file: Guile-adaption for syntax-case macros.
	    psyntax.pp, psyntax.ss: Syntax-case macros, portable version 2 by
	    R. Kent Dybvig, Oscar Waddell, Bob Hieb and Carl Bruggeman

2016-12-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Exit upon error.
	* module/mes/scm.mes (error): Add exit 1.

	Mescc: avoid `if'.
	* module/language/c/lexer.mes (keywords): Produce `If'.
	* module/language/c/parser.mes (c-parser): Use `If.'

	core: Add compile time switch for quasisyntax.
	* mes.c [QUASISYNTAX]: New switch.  Default off.
	 (builtin_eval) [QUASISYNTAX]: Handle syntax, unsyntax, quasisyntax.
	* quasiquote.c (syntax, unsyntax, unsyntax_splicing, eval_quasisyntax,
	  add_unsyntaxers) [QUASISYNTAX]: Available only.

	More error handling on apply_env.
	* mes.c (apply_env): Assert if applying *unspecified*.

	Bugfix assq_ref_cache for running without environment cache.
	* mes.c (assq_ref_cache) [!ENV_CACHE]: Return *undefined* if nothing
	  found.

	Error handling on failing set!.
	* mes.c (set_env_x): Produce error message [WAS: dump core].

	Simplify toplevel read.
	* mes.c (read_file_env): Rename from read_file.
	 (load_file_env): New function.
	 (main): Use it.

	boot: fix ignored.
	* module/mes/loop-0.mes: Wrap read-file in begin.
	* module/mes/mes-0.mes: Remove ignored.

	Implement apply with multiple arguments.
	* module/mes/base-0.mes (apply): Handle multiple arguments.
	* tests/base.test: (apply, apply 1, apply 2): New test.

	Fix values.
	* mes.c (call): Respect any other non-value arguments.
	* tests/scm.test (values, values 2, values 3, call-with-values): New test.

	Define garbage collector/jam collector primitives.
	* mes.c (make_cell): New primitive alongside make_vector for allocation.
	  (cons, make_char, make_macro, make_number, make_ref,
	  internal_make_symbol, make_vector): Use it.

	Implement strings and symbols as list of characters [WAS: c-string].
	* mes.c (scm_t): Add string field.
	  (make_string, internal_lookup_symbol, internal_make_symbol,
	  make_symbol, lookup, readword): Take scm*.  Update callers.
	  (display_helper): Support string field.
	  (append_char): New function.
	  (readstring): Use it.  Produce scm*.
	  (cstring_to_list): New function.
	  (add_environment, internal_make_symbol): Use it.
	  (list_of_char_equal_p): New function.
	  (internal_lookup_symbol): Use it.
	* lib.c (list_ref): New function.
	* string.c (string_ref): Use it.
	  (string, string_append, string_length, substring, number_to_string,
	  string_to_symbol, symbol_to_string): Update to list-of-characters
	  implementation.

	Environment cache bugfix for define.
	* define.c (define): Invalidate cache.  Fixes vector test.
	* GNUmakefile (mes-check, guile-check): Use set -e.  Fixes skipping over errors.

2016-12-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Introduce reference type, use vectors of SCM.
	* mes.c (type): Add REF.
	  (scm_t): Add ref, change vector to *scm_t.  Update users.
	  (alloc): New function.
	  (cons, make_char, make_macro, make_number, make_string,
	  internal_make_symbol, make_vector): Use it.
	  (make_ref): New function.
	  (vector_entry): New function.
	  (make_vector, list_to_vector, vector_set_x): Use it.
	  (vector_ref): Dereference REF entry.
	  (display_helper): Handle REF.
	* lib.c (vector_to_list): Handle REF.
	* type.c (ref_p): New function.
	* tests/vector.test (vector list): New test.

	Bugfix vector-ref.

	* mes.c (vector-ref): Make copies of simple values.  Fixes lalr.
	* tests/vector.test (vector-set! 3): New test.

2016-12-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Guile gc experiment: remove global scan variable.

	Guile gc experiment: add garbage collection.

	Guile gc experiment: add lists and display.
	* guile/gc.scm (gc-nil, gc-null?, gc-list, gc-display, make-symbol):
	  New function.

	Guile gc experiment: add pairs.
	* guile/gc.scm (cell-type, cell-index, gc-cons, gc-car, gc-cdr): New
	  function.

	Guile gc experiment.
	guile/gc.scm: New file.

	Revert "Speedup boot eval/apply."
	This reverts commit 6326b3103156fd79cd7bebbb351194626cc8a64b.

	Speedup boot eval/apply.
	* module/mes/mes-0.scm (apply-env, evlis, eval-expand,
	  eval-quasiquote): use IF iso COND: factor 3.
	  (apply-env): Use lambda iso let: another 30%.

	guix hash: 115jycdz8i1r5sj2fsjqcrh456mayxzaykb8cxxxc3wxfkj8nagf

2016-11-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	Release 0.1.
	* configure (VERSION): Bump to 0.1.
	* mes.c (main): Likewise.
	* module/mes/repl.mes: Likewise.

	Documentation update.
	* HACKING: Target is R6RS-like, at least having syntax-case.
	* README: Likewise.
	* guix.scm: Likewise.

2016-10-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	Avoid gratuitous consing with begin and quasiquote.
	* mes.c (apply_env, main): Call begin rather than eval with cons'ed
	  symbol begin.
	* module/mes/mes-0.mes (apply-env): Likewise.
	* quasiquote.c (add_unquoters): cons global unquoters rather than
	  creating it fresh.
	* module/mes/mes-0.mes (add-unquoters): Likewise.

2016-10-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	Remove dead code.
	* mes.c (mes_environment): Remove dead code.

	Move other post-boot and derived functions to lib.c.
	* mes.c (c*r, length, last_pair, builtin_list, vector_to_list,
	  integer_to_char, char_to_integer, builtin_exit): Move to lib.c.
	* lib.c: New file.
	* GNUmakefile (mes.o): Depend on lib snarf output.

	Move strings to string.c.
	* mes.c (string, string_append, list_to_string, string_length,
	  string_ref, substring, number_to_string, string_to_symbol,
	  symbol_to_string): Move to string.c
	* string.c: New file.
	* GNUmakefile (mes.o): Depend on string snarf output.

	Move arithmetic functions to math.c.
	* mes.c (greater_p, less_p, is_p, minus, divide, modulo, multiply,
	  logior): Move to math.c.
	* math.c: New file.
	* GNUmakefile (mes.o): Depend on math snarf output.

	Move define, define-macro to define.c.
	* mes.c (define, define-macro): Move to define.c
	* define.c: New file.
	* GNUmakefile (mes.o): Depend on define snarf output.

	Move quasiquote to quasiquote.c.
	* mes.c (unquote, unquote_splicing, syntax, unsyntax,
	  unsyntax_splicing, eval_quasiquote, eval_quasisyntax, add_unquoters,
	  add_unsyntaxers): Move to quasiquote.c
	* quasiquote.c: New file.
	* GNUmakefile (mes.o): Depend on quasiquote snarf output.

	Move optional type predicates to type.c.
	* mes.c (char_p, macro_p, number_p, pair_p, string_p, symbol_p,
	  vector_p, builtin_p, boolean_p): Move to type.c
	* type.c: New file.
	* GNUmakefile (mes.o): Depend on type snarf output.
	* module/mes/loop-0.mes (cond, map, let, or, and not, evlis-env,
	  apply-env, eval-expand, uquote, add-unquoters, eval,
	  expand-macro-env, eval-begin-env, eval-if-env, sexp:define,
	  env:define, env:macro): Move to mes-0.mes.
	* module/mes/mes-0.mes: New file.
	* module/mes/type-0.mes: New file.
	* scripts/include.mes: If BOOT, also include mes-0.mes.  If TYPE0,
	  also include type-0.mes.

2016-12-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Update NEWS.
	* NEWS: Note specials fix and booting with smaller core.

2016-10-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	Generate C header and includes using snarfing.
	* mes.c: Move specific renames and n-args to alist annotation.
	* build-aux/mes-snarf.scm: New file.
	* GNUmakefile (mes.environment.h): Use it.
	  (mes.h): Remove.
	  (clean): Update.
	  (mes.o): New dependency rule.
	* .gitignore: Update.

2016-10-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "Flip sign of cached symbols: only search cache if symbol is cached."
	This reverts commit cef058be0d6ef5322f74e644bbcd96f1725c6327.

2016-10-21  Jan Nieuwenhuizen  <janneke@gnu.org>

	Flip sign of cached symbols: only search cache if symbol is cached.
	* mes.c (cache_save): Flip sign when caching and invalidating.
	  (cache_invalidate): Flip sign when invalidating.

	named let-fu FIXME

	boot: fix builtin? tests.
	* tests/scm.test: Test primitives, not eval.

	Environment cache heuristicts.
	* mes.c (ENV_HEAD): New define.
	  (assq_ref_cache): Use it.

	boot: support apply.
	* module/mes/loop-0.mes (eval-env): Add clause for apply-env.

	boot: Remove label support from Scheme.
	* module/mes/loop-0.scm (apply-env): Remove label clause.

	boot: vector support.
	* mes.c (make_vector): Change to scm interface.
	  (temp_number): New global.
	  (list_to_vector): Use it.
	* module/mes/scm.mes (c:make-vector): New function.
	* tests/scm.test: Remove vector tests.
	* tests/vector.test: New file.
	* GNUmakefile (TESTS): Add it.

	Avoid let* in scm.mes.
	* module/mes/scm.mes (case, max, min): Avoid let*.

	loop-0: define and, let and cache-invalidate-range.

2016-10-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	boot: support quasiquote in eval.
	* module/mes/loop-0.mes (eval-env): Add quasiquote support.

2016-10-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Remove evcon from loop-0.
	* module/mes/loop-0.mes (loop-0): Handle define-macro.
	 (cond): New macro.
	 (eval-env-expand): Remove 'cond clause.
	 (evcon): Remove.

2016-10-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	Switch fat-c/boot using environment variable BOOT.
	* GNUmakefile: check for BOOT, set CFLAGS.
	* mes.c: Remove hardcoded BOOT define.
	* scripts/include.mes: include loop-0 when BOOT is set.

2016-10-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Implement eval/apply in Scheme.
	* module/mes/loop-0.mes: New file.
	* module/mes/mes.mes: Remove

2016-10-20  Jan Nieuwenhuizen  <janneke@gnu.org>

	Reduce eval/apply in core, extend in Scheme.
	* mes.c (eval_env_)[BOOT]: Rename from eval_env.  Remove define, defin-macro.
	  (eval_env): New function.
	  (make_macro): Swap parameter ordering.
	  (apply_env)[BOOT]: Support label.

	Avoid adding top of environment to cache.
	* mes.c (assq_ref_cache): Only consider caching symbols deeper than
	  4*CACHE_SIZE depth.  50% speedup.

	Implement environment cache.
	* mes.c (cache_save, cache_lookup, cache_invalidate,
	  cache_invalidate_range): Implement cache for environment.
	  (assq_ref_cache): New function, perform cached lookups.
	  (builtin_eval,lookup_macro): Use it.
	  (set_cdr_x): Invalidate cache.
	  (set_x): Likewise.
	  (apply_env): Likewise.

	Introduce SCM type for special symbols.
	* GNUmakefile (mes.h): Also export SCM to symbols.i
	* mes.c: Introduce SCM type for special symbols.
	  (builtin_eval): Rename from eval_env.  Update callers.
	* module/mes/base-0.mes (eval): Remove.
	* module/mes/repl.mes (repl): Use eval.

	Remove static primitives hack.
	* mes.c (internal_primitive_p, internal_p, lookup_primitive,
	  mes_primitives): Remove.

2016-10-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	Refactor primitives lookup.
	* mes.c (lookup_primitive_): Rename from internal_lookup_primitive,
	  use scm-compatible signature.
	  (lookup): Update caller.
	  (eval_env): Check for builtins first.

2016-10-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Remove unused symbol.
	* mes.c (symbol_cond): Remove.

	Add report to closure test.
	* tests/closure.test: Add report.

	Remove dead code from let.mes.
	* module/mes/let.mes (simple-let, named-let, let): Remove dead code.

	Avoid cons* in base.
	* module/mes/base-0.mes (cond, simple-let, let): Rewrite without cons*.
	* module/mes/base.mes (or): Likewise.

	Differentiate apply asserts.
	* mes.c (apply_env): Split bool assert into bool, number and string.

	Add display tag for builtin procedures.
	* mes.c (display_helper): Show builtin functions as #<procedure ...>.

2016-10-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	Remove macro expansion from apply.
	mes.c (apply_env): Remove macro expansion.

2016-10-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add paredit workaround in scripts.
	* scripts/elf.mes: Add paredit parsing comment.
	* scripts/repl.mes: Likewise.

	make tests standalone executable.
	* tests/closure.test: Add shebang and boot-0 include.
	* tests/let-syntax.test: Likewise.
	* tests/let.test: Likewise.
	* tests/match.test: Likewise.
	* tests/quasiquote.test: Likewise.
	* tests/record.test: Likewise.
	* tests/scm.test: Likewise.
	* GNUmakefile (mes-check): Run tests by exec'ing.

	make clean: remove symbols.i.
	* GNUmakefile (clean): remove symbols.i.

	Update documentation.
	* HACKING: Describe (mes-use-modules).
	* NEWS: Update.

	Add --help, --version.
	* mes.c (main): Handle --help, --version.
	* scripts/include.mes: Handle --help.
	* scripts/elf.mes: Pass any arguments on to mes.
	* scripts/mescc.mes: Likewise.
	* scripts/paren.mes: Likewise.
	* scripts/repl.mes: Likewise.

	guix hash: 0g6lcms2hv1i8hdkfh2xz0g7jmsayisr7bcwkp47blkbapqpzpsf

2016-10-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	Update guix hash.
	* make/install.make (update-hash): New target.
	* guix.scm: Prepare for update.

2016-10-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add installation instructions.
	* INSTALL: New file.

	Add guix.scm package recipe.
	* guix.scm: New file.

2016-10-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	Prepare for 0.1 release: update READMEs.
	* NEWS: New file.
	* AUTHORS: Add info about files taken from Scheme48.
	* HACKING: Update with info from TODO.
	* TODO: Remove.

2016-10-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Prepare for 0.1 release: make install.
	* make/install.make (install): Install documentation.

	Prepare for 0.1 release: installable scripts.
	* scripts/mes: New symlink.
	* scripts/elf.mes: Use it.
	* scripts/mescc.mes: Likewise, read all mes modules with include.mes.
	* scripts/paren.mes: Likewise.
	* scripts/repl.mes: Likewise.

	Prepare for 0.1 release: gnu-build-system.
	* configure: New file.
	* make/install.make: New file.
	* .gitignore: Ignore generated files.
	* build-aux/gitlog-to-changelog: New file.

2016-10-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Prepare for 0.1 release: new directory structure.
	* scripts/elf.mes: New file.
	* scripts/include.mes: New file.
	* scripts/mescc.mes: New file.
	* scripts/paren.mes: New file.
	* scripts/repl.mes: New file.
	* doc/examples/main.c: Move from ./main.c.
	* module/mes/base-0.mes: Move from ./base0.mes.
	* module/mes/base.mes: Move from top.
	* module/mes/elf.mes: Likewise.
	* module/mes/let-syntax.mes: Likewise.
	* module/mes/let.mes: Likewise.
	* module/mes/mes.mes: Likewise.
	* module/mes/quasiquote.mes: Likewise.
	* module/mes/repl.mes: Likewise.
	* module/mes/scm.mes: Likewise.
	* module/mes/syntax.mes: Likewise.
	* module/mes/lalr-0.mes: Move from lib/lalr.mes.
	* module/mes/lalr.mes: Move from lib/lalr.scm.
	* module/mes/match.mes: Move from lib/match.scm.
	* module/mes/record-0.mes: Move from lib/record.mes.
	* module/mes/record.mes: Move from lib/record.scm.
	* module/mes/test.mes: Move flom lib/.
	* module/rnrs/bytevectors.mes: Move from lib/rnrs.
	* module/srfi/srfi-0.mes: Move from lib/srfi.
	* module/srfi/srfi-1.mes: Likewise.
	* module/srfi/srfi-9.mes: Likewise.
	* module/language/c/lexer.mes: Move from ./c-lexer.scm.
	* module/language/c/parser.mes: Move from ./mescc.scm.
	* module/language/c/compiler.mes: New file, split from parser.mes.
	* module/language/paren.mes: Move from ./paren.scm.
	* module/mes/libc-i386.mes: New file, split from elf.mes.
	* tests/base.test: Move from test/.
	* tests/closure.test: Likewise.
	* tests/let-syntax.test: Likewise.
	* tests/let.test: Likewise.
	* tests/match.test: Likewise.
	* tests/quasiquote.test: Likewise.
	* tests/record.test: Likewise.
	* tests/scm.test: Likewise.
	* hello.S: Remove.
	* hello.c: Remove.
	* loop2.mes: Remove.
	* test/foo.test: Remove.

2016-10-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	Remove evcon (Sorry John).
	* mes.c (evcon): Remove, remove callers.
	* base0-if.mes (cond): Rename from disabled-cond.

2016-10-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Support quasisyntax.
	* mes.c (eval_quasisyntax, add_unsyntaxers): New functions.
	  (eval_env): Use them.

	Add REPL.
	* mes.c (expand_macro_env, force_output): New function.  Use STRING_MAX
	  for string buffers throughout.  (eval_env, eval_begin_env): Rename
	  from eval, eval_begin.  Update callers.
	* repl.mes: New file.
	* base.mes (list?): Move from scm.mes.
	* scm.mes (eval, apply, primitive-eval, expand-macro): New function.
	* GNUmakefile: New repl target.

2016-10-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Avoid 90% of cdr'ing environment, assuming static primitives.
	* mes.c (internal_primitive_p)[STATIC_PRIMITIVES: New function.
	 (lookup_macro)[STATIC_PRIMITIVES]: Use it.
	 (internal_lookup_primitive)[STATIC_PRIMITIVES]: New function.
	 (lookup)[STATIC_PRIMITIVES]: Use it.
	 (mes_primitives)[STATIC_PRIMITIVES]: New function.
	 (main): Use it.
	* base0-if.mes (disabled-cond): Rename from xcond.
	* GNUmakefile: Add commented profiling CFLAGS.

2016-10-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	Do not use quasiquote in base0.
	* base0.scm (defined?): Rewrite without quasiquote.

2016-10-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add procedure? to base.
	* base.mes (procedure?): Move from scm.mes.

2016-10-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	speedup: use ->car etc.

2016-10-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	Avoid out-of-spec strncat usage.
	mes.c (readword): Use character assignment instead of strncat.  Fixes
	Valgrind nit.

	Discern between primitive atoms and symbols.
	* mes.c (internal_symbol_p): New function.
	 (eval): Use it.

2016-10-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	resurrect mescc.

	cleanup and doc update.

	syntax.mes: silence syntax error.

	test/scm.test: update.

2016-10-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	test/match.test: pass.

2016-10-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	lib/match: ugly hygiene hack. FIXME.

	let-syntax.mes: implement.

2016-10-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	speedup: use ->car etc.

	use IF as primitive, drop using cond/evcon only option.

	c++ type-safety.

	assq: use while instead of recursion.

	mes.c: uniquify symbols.

	mes-check: separate target.

2016-09-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	Updates to README, TODO.

2016-08-14  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc.scm: compile simple, well-behaved for-loop.

	elf.mes: for loop.

	mescc.scm: print two strings.

	mescc.scm: first a.out produced from main.c.

	lib/match.scm: import.

	lib/srfi/srfi-1.scm: add append-map, filter, find.

2016-08-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	elf.mes: make-elf.

	elf.mes: use elf32-* remove set!.

	elf.mes: remove text-free, softcode data-offset.

	elf.mes: put marker in note section.

	Revert "elf.mes: drop .note section."
	This reverts commit b2b5b73b91308407ec82a5ba658aca025512c542.

	elf.mes: drop .note section.

	elf.mes: softcode more.

	mes.c: implement string->list.

	elf.mes: compute text-free, text-offset.

	lib/rnrs/bytevectors.scm: minimal rnrs bytevectors.

	elf.mes: separate-out text, text-free and data sections.

	resurrect guile-mescc, use write-int and (current-error-port) iso `2'.

2016-09-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	Revert "mes.c: use single malloc with arena."
	This reverts commit 38c364faeff430a5ee28f402d24b073f6bf9a548.

2016-08-13  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes.c: use single malloc with arena.

2016-08-12  Jan Nieuwenhuizen  <janneke@gnu.org>

	elf.mes: a.out runs.

	elf.mes: error-free header, no program yet.

	elf.mes: readelf -h a.out shows some info.

	mescc/elf.mes: write minimal ELF header.

	mes.c: display, newline: take optional port; add write-char, read hex #xXX.

	remove debug output to stdout.

2016-07-27  Jan Nieuwenhuizen  <janneke@gnu.org>

	syntax-if.mes: TODO.

	Use IF iso COND as primitive; keep COND primitive as option.

	let.scm: cleanups.

	macro hax0rz

	Revert "lib/lalr-debug.scm"
	This reverts commit 084d1bea33d45f0653cdc6bef44dc295faef6b72.

2016-07-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	lib/lalr-debug.scm

	quasiquote.mes: disable, too slow.

2016-07-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	split-up test suite, implement quasiquote in scheme.

2016-07-26  Jan Nieuwenhuizen  <janneke@gnu.org>

	hello.c, hello.S: hello world target for C compiler.

2016-07-25  Jan Nieuwenhuizen  <janneke@gnu.org>

	mescc: mes parses simplest main with lalr.

	scm.mes: add port-location dummies.

	mes.c: add set-cdr, substring, string-ref.

2016-07-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes.c: support whitespace characters.

	mescc.scm: parse simple main.c.

	TODO/HACKING: update: lalr/paren.scm runs.

	mes.c: when reading `EOF', defer read control to program.

	mes.c, scm.c: add read-char, peek-char, char=?, char-alphabetic?.

	scm.mes: add list-ref.

	mes.c: add logior.

	scm.mes: add expt.

	scm.mes: remainder.

	scm.mes: implement do.

	scm.mes: add max, min.

	<=, >=: take multiple arguments.

	mes.c: add quotient and modulo.

	mes.c: less_p, greater_p, is_p: take multiple arguments.

	mes.c: display_helper fix for vector.

	scm.mes: make-vector: fix fill.

	paren.scm revert

	mes.c: fix apply.

	fix for-each.

	lalr paren test

2016-10-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	ADD .gitignore.

	lib/lalr.scm

2016-07-24  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes.c: grok #\tab.

	mes.c: add syntax, quasisyntax to reader....

	srfi-9 records!

	mes.c: refactor begin and closures. Fixes bugs/top.mes.

2016-07-23  Jan Nieuwenhuizen  <janneke@gnu.org>

	bugs/top.mes: document toplevel begin bug; probable reason for record/syntax-case failure.

	check: resurrect guile-check.

	mes.c: remove hacks

	trying to get records up....WIP

	srfi-9

	lib/record.scm: import.

	lib/srfi/srfi-0.scm: add.

	mes.c: barf on unknown symbols.

	syntax.mes: update from scheme48-1.1.

	Add header to syntax.mes MERGE

	scm.mes: add last-pair.

	test.mes: enable vector tests for mes.

	scm.mes: add assq-set!, assq-ref.

2016-07-22  Jan Nieuwenhuizen  <janneke@gnu.org>

	Update documentation, remove old bug files, move bugs into bugs/.

	mes.c: add new macro type, junk *macro* hack.

	mes.c: store actual environment with closures.

	fix closure 5

2016-07-19  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes.c: store enviroment depth in closures. Fixes c1, c3 and more.

	mes.c: move begin_env into eval, decruft.

2016-07-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	fix some tests.

	test: hack: show expected/actual

	remove booting into mes (would need VM), boot.mes; rewrite test.mes.

	c0.mes, c1.mes: update.

2016-07-17  Jan Nieuwenhuizen  <janneke@gnu.org>

	unquoting fix.

	no closuring in macro body...

	add equal?, member, for-each.

	closures: mostly supported...

	syntax.mes: more debugging.

	mes.c: single-statement body lambda closures.

	c0.mes: simpler bug.

	TODO: update

	closure.mes: document mes closure bug.

	mes.c: add boolean_p.

	mes.c: fix symbol? for nil.

	test.mes: disable call-with-values test, prints too much debugging.

	mes.c: evcon: support clause without cdr. Fixes or.

	add simple <=, >= and list?.

	scm.mes: and: bugfix, return #f for (and #f 1 2 3).

	syntax.mes: use cond iso if. rode harink

	hax0rz..ugh + next name? test in macro.mes.

	mes.c: another macro clue-bat in apply. now macro.mes equals guile -s macro.mes.

	mes.c: begin_env: bugfix, keep going in body after set!

	mes.c: bugfix for eval_quasiquote: stay in quasiquote mode after next quote.

	guile runs macro-based mes:define-syntax, mes runs but yields *undefined*.

2016-07-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	support define-macro inside eval (i.e., inside define-macro)

	mes.c: move define, define-macro into begin_env, remove loop. fixes inner defines.

	define-syntax...

2016-10-18  Jan Nieuwenhuizen  <janneke@gnu.org>

	syntax...

2016-07-16  Jan Nieuwenhuizen  <janneke@gnu.org>

	implement variable-argument and, or.

	implement let loop.

	cleanup let, let*, letrec

	implement unquote-splicing, cleanup some macros

	update macro, fix andmap.

	add scheme apply, rename apply-> apply_env.

	syntax.mes: experiments...

	support cond without match, define-macro x (lambda)).

2016-07-11  Jan Nieuwenhuizen  <janneke@gnu.org>

	*unspecified* harder.

	add number->string, string->symbol, symbol->string.

	add procedure?

	add variable argument append.

	+,-,*,/: take n arguments.

	add call-with-values, values.

	add memq/memv.

	rename assoc to assq.

	add vectors.

	add length.

	remove disabled code.

	add chars.

2016-07-10  Jan Nieuwenhuizen  <janneke@gnu.org>

	add strings.

	TODO: new file.

	add begin.

	add letrec.

	fix for set! inside lambda.

	add not, if.

	add +,/,*,=.

	loop2.mes: separate from scm.mes.

	ignore

	add set!.

2016-07-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	snarf scm functions and environment.

	eval: disarm lambda.

	map: support two lists.

	add simple map.

	fix evlis argumuent execution order.

	add let*.

	reader: handle whitespace and comments inside lists.

	move mes language additions to scm.mes.

	hack to print (current-module).

	mes.c, mes.mes: support quasiquote, unquote.

	boot.mes: generate from mes.mes, scm.mes, test.mes.

2016-07-08  Jan Nieuwenhuizen  <janneke@gnu.org>

	mes.c: support `.' and add let.

	boot.mes: support macros, add and, or.

2016-05-29  Jan Nieuwenhuizen  <janneke@gnu.org>

	boot.mes: boostrap into mes.

2016-07-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	Leave pure LISP.
	* GNUmakefile: New file.
	* mes.c: Lots of work.
	* mes.mes: New file, split-off from mes.scm.
	(builtin, number): New function.
	(apply): Use them.
	* mes.test: New file.
	* scm.mes: New file, split-off from mes.scm.

	Add LISP interpreter in C.
	mes.c: New file.

2016-05-28  Jan Nieuwenhuizen  <janneke@gnu.org>

	Add Guile version of John McCarthy's Maxwell Equations of Software.
	* .gitignore: New file.
	* AUTHORS: Idem.
	* COPYING: Idem.
	* README: Idem.
	* mes.scm: Idem.

2016-05-15  Jan Nieuwenhuizen  <janneke@gnu.org>

	Initial.
                                                              -*- org -*-

#+TITLE: ChangeLog

Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>

  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
  notice and this notice are preserved.

Normally a ChangeLog is generated at "make dist" time and available in
source tarballs.
