diff --git a/.gitmodules b/.gitmodules index 3ea8291d..546897d4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,9 @@ [submodule "blynn-compiler-oriansj"] path = sysa/blynn-compiler-oriansj url = https://github.com/oriansj/blynn-compiler +[submodule "sysa/mes"] + path = sysa/mes + url = https://gitlab.com/janneke/mes.git +[submodule "sysa/nyacc"] + path = sysa/nyacc + url = https://git.savannah.gnu.org/git/nyacc.git diff --git a/rootfs.sh b/rootfs.sh index de9641b2..73c6c314 100755 --- a/rootfs.sh +++ b/rootfs.sh @@ -45,11 +45,13 @@ mkdir blynn-compiler/{bin,generated} popd # mes -cp -r mes-0.22 tmp/after/ -ln -s . tmp/after/mes-0.22/x86-mes -#cp -r nyacc-0.99.3 tmp/after/ -cp -r mes-bins tmp/after/ +cp -r mes tmp/after/ +ln -s lib/x86-mes tmp/after/mes/x86-mes +cp -r nyacc tmp/after/ cp mes.kaem tmp/after/ +cp mes-files/mescc.scm tmp/after/bin/ +cp mes-files/config.h tmp/after/mes/include/mes/ +mkdir tmp/after/mes/{bin,m2} # General cleanup find tmp -name .git -exec rm -rf \; diff --git a/sysa/mes b/sysa/mes new file mode 160000 index 00000000..2ab4c5c6 --- /dev/null +++ b/sysa/mes @@ -0,0 +1 @@ +Subproject commit 2ab4c5c676cb66088b0fb8de03b40b01f07bd4e0 diff --git a/sysa/mes-0.22/.dir-locals.el b/sysa/mes-0.22/.dir-locals.el deleted file mode 100644 index 3196ef88..00000000 --- a/sysa/mes-0.22/.dir-locals.el +++ /dev/null @@ -1,112 +0,0 @@ -;;; GNU Mes --- Maxwell Equations of Software -;;; Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen -;;; -;;; This file is part of GNU Mes. -;;; -;;; GNU Mes is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Mes is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Mes. If not, see . - -;; The GNU project defaults. These are also the GNU Emacs defaults. -;; Re-asserting theme here, however, as a courtesy for setups that use -;; a global override. -( - ;; For writing GNU C code, see - ;; https://www.gnu.org/prep/standards/html_node/Writing-C.html - (c-mode . ((c-file-style . "gnu") - (indent-tabs-mode . nil))) - - (makefile-mode . ((indent-tabs-mode . t))) - (asm-mode . ((indent-tabs-mode . t))) - - (nil . ((indent-tabs-mode . nil) - (fill-column . 72))) - - (scheme-mode - . - ((geiser-active-implementations . (guile)) - (eval - . - (progn - (defun prefix-dir-locals-dir (elt) - (concat (locate-dominating-file buffer-file-name ".dir-locals.el") elt)) - (mapcar - (lambda (dir) (add-to-list 'geiser-guile-load-path dir)) - (mapcar - #'prefix-dir-locals-dir - '("scripts" "module"))))))) - - (texinfo-mode . ((indent-tabs-mode . nil) - (fill-column . 72))) - (nil . - ((eval - . - (progn - (let ((top (locate-dominating-file default-directory ".dir-locals.el")))) - - (defun guile--manual-look-up (id mod) - (message "guile--manual-look-up id=%s => %s mod=%s" id (symbol-name id) mod) - (let ((info-lookup-other-window-flag - geiser-guile-manual-lookup-other-window-p)) - (info-lookup-symbol (symbol-name id) 'scheme-mode)) - (when geiser-guile-manual-lookup-other-window-p - (switch-to-buffer-other-window "*info*")) - (search-forward (format "%s" id) nil t)) - - (add-hook 'before-save-hook 'delete-trailing-whitespace nil t) - - (defun guix-switch-profile (&optional profile) - "reset Emacs' environment by snarfing PROFILE/etc/profile" - - (defun matches-in-string (regexp string) - "return a list of matches of REGEXP in STRING." - (let ((matches)) - (save-match-data - (string-match "^" "") - (while (string-match regexp string (match-end 0)) - (push (or (match-string 1 string) (match-string 0 string)) matches))) - matches)) - - (interactive "fprofile: ") - (let* ((output (shell-command-to-string (concat "GUIX_PROFILE= /bin/sh -x " profile "/etc/profile"))) - (exports (matches-in-string "^[+] export \\(.*\\)" output))) - (mapcar (lambda (line) (apply #'setenv (split-string line "="))) exports ))) - - (defun shell-args-to-string (&rest args) - (shell-command-to-string (mapconcat 'identity args " "))) - - (defun as (string &optional arch) - (let* ((arch (or arch "--64")) - (asm (subst-char-in-string ?_ ?\s string)) - (foo (message "asm:%S" asm)) - (result (shell-args-to-string "as" arch (concat "<(echo '" asm "')"))) - (disassembly (shell-args-to-string "objdump" "-d" "a.out")) - (foo (message "disassembly: %S" disassembly)) - (match (string-match "^ 0:[\t]\\([^\t]*\\)" disassembly)) - (code (match-string 1 disassembly)) - (code (apply 'concat (split-string code " " t)))) - (insert " ") - (insert code))) - - (defun as-32 (point mark) - (interactive "r") - (let* ((string (buffer-substring point mark)) - (code (as string "--32"))) - (insert " ") - (insert code))) - - (defun as-64 (point mark) - (interactive "r") - (let* ((string (buffer-substring point mark)) - (code (as string "--64"))) - (insert " ") - (insert code)))))))) diff --git a/sysa/mes-0.22/.gitignore b/sysa/mes-0.22/.gitignore deleted file mode 100644 index 7c534a14..00000000 --- a/sysa/mes-0.22/.gitignore +++ /dev/null @@ -1,117 +0,0 @@ -*- -*~ -.#* -*.E -*.s -*.blood-elf -*.blood-elf-M1 -*.blood-elf-hex2 -*.gcc -*.gcc-o -*.gcc-out -*.gcc-stdout -*.go -*.guile -*.guile-log -*.log -*.trs -*.mes-gcc -*.mes-gcc-o -*.mes-gcc-out -*.mes-gcc-out -*.mes-gcc-stdout -*.mes-o -*.mes-out -*.mes-stdout -*.mes-tcc -*.mes-tcc-o -*.mes-tcc-out -*.mes-tcc-out -*.mes-tcc-stdout -*.mini-M1 -*.mini-guile -*.mini-hex2 -*.a -*.o -*.seed-out - -/lib/tests/*/[0-9a][0-9a-z]-* -!/lib/tests/*/*.c -!/lib/tests/*/*.exit -!/lib/tests/*/*.stdout - -/scaffold/argv -/scaffold/hello -/scaffold/main -/scaffold/micro-mes -/scaffold/tiny-mes - -/scaffold/tests/[0-9a][0-9a-z]-* -/scaffold/tests/t.* -!/scaffold/tests/*.c -!/scaffold/tests/*.exit -!/scaffold/tests/*.stdout - -/.config.make -/.store -/.tarball-version - -/out -? -?.mes -\#*# -/doc/fosdem/fosdem.aux -/doc/fosdem/fosdem.log -/doc/fosdem/fosdem.nav -/doc/fosdem/fosdem.out -/doc/fosdem/fosdem.snm -/doc/fosdem/fosdem.tex -/doc/fosdem/fosdem.toc -/doc/fosdem/fosdem.*vrb -/doc/mes.1 -/doc/mes.info -/doc/mes.pdf -/doc/mesar.1 -/doc/mescc.1 -/doc/version.texi -/mes.aux -/mes.cp -/mes.cps -/mes.fn -/mes.info -/mes.tmp -/mes.toc -/mes.vr -/mes.vrs - -/config.status -/pre-inst-env -/bootstrap.sh -/build.sh -/check.sh -/install.sh -/uninstall.sh -/mes/module/mes/boot-0.scm -/scripts/mesar -/scripts/mescc.scm -/scripts/mescc -/doc/images/gcc-mesboot-graph.png -/GNUmakefile -/pre-inst-env -/doc/images/gcc-mesboot-graph.eps -/doc/images/gcc-mesboot-graph.pdf -/doc/web/ -/config.sh -/include/mes/config.h -/gcc-lib -/mescc-lib -/bin -/0exit-42 -/0hello-mes -/body-exit-42 -/body-hello-mes -/exit-42 -/hello-mes -core -/.config -a.out diff --git a/sysa/mes-0.22/AUTHORS b/sysa/mes-0.22/AUTHORS deleted file mode 100644 index 858c53ad..00000000 --- a/sysa/mes-0.22/AUTHORS +++ /dev/null @@ -1,88 +0,0 @@ - -*- org -*- -#+TITLE: GNU Mes Authors - -Jan (janneke) Nieuwenhuizen -Main author -All files except the imported files listed below - -Danny Milosavljevic -ARM port -lib/mes/div.c -Additions and fixes throughout - -Jeremiah Orians -lib/stdio/fopen.c (first simple version of fopen) -scaffold/tests/98-fopen.c - -Han-Wen Nienhuys -lib/string/memmem.c (_memmem, memmem) - -Peter de Wachter -Small fixes and additions to -lib/x86-mes/x86.M1 -lib/x86_64-mes/x86_64.M1 -include/stdint.h -module/mescc/compile.mes - -rain1 -scaffold/tests/90-goto-var.c -scaffold/tests/91-goto-array.c - -List of imported files - -D A Gwyn -lib/alloca.c - -Included verbatim from gnulib -build-aux/gitlog-to-changelog - -Portable hygienic pattern matcher -mes/module/mes/match.scm - -Portable LALR(1) parser generator -mes/module/mes/lalr.scm - -Portable syntax-case from Chez Scheme; patches from Guile -mes/module/mes/psyntax.ss -mes/module/mes/psyntax.pp [generated] - -Getopt-long from Guile -module/mes/getopt-long.scm - -Optargs from Guile -mes/module/mes/optargs.scm - -PEG from Guile -mes/module/mes/peg/ - -Pmatch from Guile -mes/module/mes/pmatch.scm - -Pretty-print from Guile -mes/module/mes/pretty-print.scm - -Srfi-1 bits from Guile -mes/module/srfi/srfi-1.scm - -Srfi-16 from Guile -mes/module/srfi/srfi-16.scm - -Srfi-26 from Guile -mes/module/srfi/srfi-26.scm - -GNU FDL in texinfo from GNU -doc/fdl-1.3.texi - -Hurd and Mach support from GNU C Library -include/gnu/hurd-types.h -include/mach/mach-init.h -lib/mach/msg.c -lib/mach/mach-init.c -lib/mach/*.S - -* legalese -Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen - - Copying and distribution of this file, with or without modification, - are permitted in any medium without royalty provided the copyright - notice and this notice are preserved. diff --git a/sysa/mes-0.22/BLURB b/sysa/mes-0.22/BLURB deleted file mode 100644 index 7c394f20..00000000 --- a/sysa/mes-0.22/BLURB +++ /dev/null @@ -1,23 +0,0 @@ - -GNU Mes is a Scheme interpreter and C compiler for bootstrapping the GNU -system. - -GNU Mes was created to address the security concerns that arise from -bootstrapping an operating system using binary blobs, which is common -practice for all software distributions. Mes is a Scheme interpreter -written in a simple subset of C and a C compiler written in Scheme and -comes with a small, bootstrappable C library. The Mes bootstrap has -halved the size of opaque, uninspectable binaries that were needed to -bootstrap GNU Guix, a functional GNU/Linux distribution that focusses on -user freedom, reproducibility and security. That reduction was achieved -by replacing GNU Binutils, GNU GCC and the GNU C Library with Mes. The -final goal is to help create a full source bootstrap for UNIX-like -operating systems. After three years of volunteer work funding will -enable us to make another big step forward and reach an important new -milestone. - -GNU Mes - https://gnu.org/software/mes -GNU Guix - https://gnu.org/software/guix -Bootstrappable Builds - https://bootstrappable.org -Reproducible Builds - https://reproducible-builds.org -Reduced Binary Seed bootstrap - https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/ diff --git a/sysa/mes-0.22/BOOTSTRAP b/sysa/mes-0.22/BOOTSTRAP deleted file mode 100644 index c2d97dc3..00000000 --- a/sysa/mes-0.22/BOOTSTRAP +++ /dev/null @@ -1,164 +0,0 @@ - -*- org -*- -#+TITLE: bootstrappable.org project - -Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen - - Copying and distribution of this file, with or without modification, - are permitted in any medium without royalty provided the copyright - notice and this notice are preserved. - -* What? -** Full source bootstrapping for the GNU System - -A package in GNU Guix is uniquely identified by the hash of its source -code, its dependencies, and its build recipe. - -Every package can be built from source, except for the bootstrap -binaries. - -*** From the GNU Guix manual - -The distribution is fully “bootstrapped” and “self-contained”: each -package is built based solely on other packages in the distribution. - -The root of this dependency graph is a small set of “bootstrap -binaries”, provided by the ‘(gnu packages bootstrap)’ module. For more -information on bootstrapping, *note Bootstrapping::. - -**** Guix v1.0 bootstrap binary seed - -$ du -schx $(readlink $(guix build bootstrap-tarballs)/*) -2.1M /gnu/store/9623n4bq6iq5c8cwwdq99qb7d0xj93ym-binutils-static-stripped-tarball-2.28.1/binutils-static-stripped-2.28.1-x86_64-linux.tar.xz -18M /gnu/store/437xwygmmwwpkddcyy1qvjcv4hak89pb-gcc-stripped-tarball-5.5.0/gcc-stripped-5.5.0-x86_64-linux.tar.xz -1.8M /gnu/store/55ccx18a0d1x5y6a575jf1yr0ywizvdg-glibc-stripped-tarball-2.26.105-g0890d5379c/glibc-stripped-2.26.105-g0890d5379c-x86_64-linux.tar.xz -5.7M /gnu/store/bqf0ajclbvnbm0a46819f30804y3ilx0-guile-static-stripped-tarball-2.2.3/guile-static-stripped-2.2.3-x86_64-linux.tar.xz -5.8M /gnu/store/j8yzjmh9sy4gbdfwjrhw46zca43aah6x-static-binaries-tarball-0/static-binaries-0-x86_64-linux.tar.xz -33M total -$ for i in $(readlink $(guix build bootstrap-tarballs)/*);\ - do sudo tar xf $i; done -$ du -schx * -130M bin -13M include -54M lib -51M libexec -5.2M share -252M total - -**** Guix Reduced Binary Seed bootstrap binary seed - -$ du -schx $(readlink $(guix build bootstrap-tarballs)/*) -5.7M /gnu/store/9f8gi8raqfx9j3l9d00qrrc0jg3r1kyj-guile-static-stripped-tarball-2.2.6/guile-static-stripped-2.2.6-x86_64-linux.tar.xz -80K /gnu/store/b6rjl52hibhmvyw4dg8678pwryhla0h2-linux-libre-headers-stripped-tarball-4.19.56/linux-libre-headers-stripped-4.19.56-x86_64-linux.tar.xz -12K /gnu/store/d7zlxsjcnqilmvqwx7scija9x9bjw8cw-mescc-tools-static-stripped-tarball-0.5.2-0.bb062b0/mescc-tools-static-stripped-0.5.2-0.bb062b0-x86_64-linux.tar.xz -428K /gnu/store/n7zc4kpi8ny6jlfaikkzxlwhc5fvr1vr-mes-minimal-stripped-tarball-0.19/mes-minimal-stripped-0.19-x86_64-linux.tar.xz -6.0M /gnu/store/nv4djwlrljfqmynqr2cqvfwz0ydx7kxb-static-binaries-tarball-0/static-binaries-0-x86_64-linux.tar.xz -13M total -$ for i in $(readlink $(guix build bootstrap-tarballs)/*);\ - do sudo tar xf $i; done -Password: -$ du -schx * -93M bin -700K include -38M lib -14M share -145M total - -**** Guix Scheme-only bootstrap binary seed - -$ du -schx $(readlink $(~/src/guix/wip-bootstrap/pre-inst-env guix build bootstrap-tarballs)/*) -5.7M /gnu/store/1mq2pcd2h7g54xpi2jrgj6ibbi4lgi3c-guile-static-stripped-tarball-2.2.6/guile-static-stripped-2.2.6-x86_64-linux.tar.xz -80K /gnu/store/bl1r2bpk6fam8r2gjvr5mvr48i3dm2hn-linux-libre-headers-stripped-tarball-4.19.56/linux-libre-headers-stripped-4.19.56-x86_64-linux.tar.xz -12K /gnu/store/w0dlz486dhb8aiq8pxm5akllz628fqin-mescc-tools-static-stripped-tarball-0.5.2-0.bb062b0/mescc-tools-static-stripped-0.5.2-0.bb062b0-x86_64-linux.tar.xz -428K /gnu/store/15j6l18q44ymlrh1cfp4s4hc9835xic5-mes-minimal-stripped-tarball-0.19/mes-minimal-stripped-0.19-x86_64-linux.tar.xz -6.2M total -$ for i in $(readlink $(~/src/guix/wip-bootstrap/pre-inst-env guix build bootstrap-tarballs)/*);\ - do sudo tar xf $i; done -$ du -schx * -4.9M bin -700K include -38M lib -14M share -57M total - -* Why? -** Reproducibility is essential to Software Freedom - -Reproducible builds are a set of software development practices that -create a verifiable path from human readable source code to the binary -code used by computers. - -*** What about the bootstrap binaries and the compilers? - -We have the sources: they always lead to bitwise-same binary, but what -about the bootstrap binaries and compilers? - -*** The current way out: Ignore the problem - - ``recipe for yogurt: add yogurt to milk'' - -*** New solution: Full source bootstrapping path - -* How? -** Software: MesCC-tools, M2-Planet, GNU Mes and MesCC -** MesCC-tools - - https://savannah.gnu.org/projects/mescc-tools - -*** hex.0: ~500 byte well-documented, self-hosting hex assembler - -This 500 byte program is written in ASCII hex. When converted -byte-for-byte from ASCCI to binary we have the only binary seed that -our full source bootstrap path needs. - -We bless this simple and easily verifyable binary and consider it to -be source. - -*** hex1: next level hex assembler written in hex.0 -*** M0: a macro assembler written in hex.1 -*** M1: a macro assembler written in M0 -*** hex2: a hex2 linker written in M0 -*** M2-Planet: a self-hosting M2 (C-with-structs) transpiler written in M1 -*** GNU Mes: A Scheme interpreter written in C, with cpp transformed into M2 -*** MesCC: A C compiler written in Scheme -*** tcc-boot: a patched version of TinyCC - -** GNU Mes and MesCC - - https://www.gnu.org/software/mes - -*** mes.c: a Scheme interpreter in ~5,000LOC of simple C -*** mescc: a C compiler written in Scheme (uses Nyacc C99 parser in Scheme) -*** mes.M2: this Scheme interpreter in bootstrappable M2 - -** TinyCC - - https://gitlab.com/janneke/tinycc - -* TODO -** merge scheme-only bootstrap into Guix. -** reduced binary seed bootstrap into NixOS, Debian. -** remove or upstream patches from tcc-boot -** prepare src/mes.c for M2-Planet transpiler. -** ARM, the Hurd -** fix bootstrap-loops: (Nyacc?, mes.M2, psyntax.pp?) -** make GNU gcc (8.0?) bootstrappable again, remove [need for] tcc stage -* DONE -** reduced binary seed bootstrap into Guix. -** replace Guix bootstrap for x86_64. -** replace Guix bootstrap for x86. -** add full source gcc-4.7 package build. -** bootstrap gcc+glibc-built binutils-20.1, gcc-4.1.0. -** have tcc-boot compile gnutools triplet: binutils-2.14, gcc-2.95.3, glibc-2.2.5. -** have tcc-boot's mes-tcc compile a fully functional tcc -** hex.0, hex.1, M0 -** M1, hex2_linker in simple C -** M2-Planet is now self-hosting, written in M2 -** mes+mescc are mutual self-hosting -** patched tcc compiled with mes+mescc -** during development we run mescc on Guile (mes is ~30 times slower) -** tcc compiled with gcc is known to compile gcc - -* Contact -** bug-mes@gnu.org -** #bootstrappable, #guix on freenode -** bootstrappable.org diff --git a/sysa/mes-0.22/COPYING b/sysa/mes-0.22/COPYING deleted file mode 100644 index 94a9ed02..00000000 --- a/sysa/mes-0.22/COPYING +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/sysa/mes-0.22/ChangeLog b/sysa/mes-0.22/ChangeLog deleted file mode 100644 index c9125298..00000000 --- a/sysa/mes-0.22/ChangeLog +++ /dev/null @@ -1,12616 +0,0 @@ -2020-01-20 Jan Nieuwenhuizen - - Release 0.22. - * configure (VERSION): Update to 0.22. - (main): Likewise. - * build-aux/GNUmakefile.in: Likewise. - * configure.sh (VERSION): Likewise. - * guix/git/mes.scm (mes, mes.git): Likewise. - - build: Update release process. - * build-aux/GNUmakefile.in: Update documentation. - (sign-dist): Rename from `sign'. - * configure: Remove version check for Guix; support GUIX=guix ./configure. - - doc: Release update. - * BOOTSTRAP: Release update. - * HACKING: Likewise. - * INSTALL: Likewise. - * NEWS: Likewise. - * PORTING: Likewise. - * README: Likewise. - * ROADMAP: Likewise. - * doc/mes.texi: Likewise. - * doc/announce/ANNOUNCE-0.22: New file. - -2020-01-20 Jan Nieuwenhuizen - - mescc: Mes C Library: Fix execlp, execvp for file names with slash. - Reported by mid-kid. - - * lib/posix/execlp.c (execlp): Do not use search_path when file name - contains a slash (WAS: when file name starts with slash). - * lib/posix/execvp.c (execvp): Likewise. - -2020-01-20 Jan Nieuwenhuizen - - build: Support bootstrapping using build.sh. - * build-aux/build.sh.in: Oops, use $compiler = bootstrap concept does - not exist yet. Gash cp does not support -p; drop it. - * configure.sh: Oops, set bootstrap to `true' instead of yes. - - mescc: Mes C Library: lseek: Be careful clearing read buffer. - * lib/linux/lseek.c (_lseek): New function. - * lib/linux/lseek.c (lseek): Use it to check if we should reset read - buffer. - * lib/mes/__buffered_read.c (__read_buffer_max): New variable. - (__buffered_read_init): Add environment override: MES_READ_BUFFER. - (__buffered_read): Use it. - - build: Have configure respect GUILE_LOAD_PATH for mes to find Nyacc. - * configure: Substitute GUILE_LOAD_PATH from %load-path. - * configure.sh: Likewise. - * build-aux/config.make.in: Add GUILE_LOAD_PATH as subtitution variable. - * build-aux/config.sh.in: Likewise. - * mes/module/mes/guile.mes (%load-path): New variable. - -2020-01-20 Jan Nieuwenhuizen - - build: Have configure prefer $CC over gcc; tcc over gcc, gcc over cc. - Reported by Vagrant Cascadian. - - * configure (string->version): Prefer for most-dotted string. Fixes - makeinfo version. - (check-program-version): Prefer displaying of command, if single word. - (main): Check for $CC --version, $CC -v. Prefer $CC over gcc; tcc over - gcc, gcc over cc. - -2020-01-20 Jan Nieuwenhuizen - - mescc: Opt for reproducible builds with Guile and Mes. - * module/mescc/compile.scm (mes-or-reproducible?): New variable. - (ast->comment): Use it. - * module/mescc/preprocess.scm (mes-or-reproducible?): New variable. - (c99-input->full-ast): Use it. - -2020-01-20 Jan Nieuwenhuizen - - build: Resurrect compiling with TinyCC. - ./configure CC=tcc --host=i686-unknown-linux-gnu --with-courage - - * configure: Cater for tcc. - -2019-12-17 Jan Nieuwenhuizen - - build: Cater for FreeBSD. - * build-aux/bootstrap.sh.in: Add test ! -e -o to satisfy FreeBSD test. - Fixes skipping over all compilations. - * build-aux/cc.sh (compile): Likewise. - - freebsd: Initial x86 scaffold. - * lib/freebsd/x86-mes-gcc/crt1.c: New file. - * lib/freebsd/x86-mes-gcc/exit-42.S: New file. - * lib/freebsd/x86-mes-gcc/hello-mes.S: New file. - * lib/freebsd/x86-mes-gcc/mini.c: New file. - * lib/freebsd/x86-mes-mescc/crt1.c: New file. - * lib/freebsd/x86-mes-mescc/mini.c: New file. - * lib/freebsd/x86-mes/elf32-0exit-42.hex2: New file. - * lib/freebsd/x86-mes/elf32-0header.hex2: New file. - * lib/freebsd/x86-mes/elf32-0hello-mes.hex2: New file. - * lib/freebsd/x86-mes/elf32-body-exit-42.hex2: New file. - * lib/freebsd/x86-mes/elf32-body-hello-mes.hex2: New file. - * lib/freebsd/x86-mes/elf32-footer-single-main.hex2: New file. - * lib/freebsd/x86-mes/elf32-header.hex2: New file. - - freebsd: Initial configure support. - * configure: Initial FreeBSD configure support. - * configure.sh: Likewise. Run without bash. - - build: Prepare for kernel variants. - * configure: Fix detection of Arch, FreeBSD. - * lib/linux/x86-mes-gcc/exit-42.S: Move from ... - * lib/x86-mes-gcc/exit-42.S: ... here. - * lib/linux/x86-mes-gcc/hello-mes.S: Move from ... - * lib/x86-mes-gcc/hello-mes.S: ... here. - * lib/linux/x86-mes-mescc/exit-42.S: Move from ... - * lib/x86-mes-mescc/exit-42.S: ... here. - * lib/linux/x86-mes-mescc/hello-mes.S: Move from ... - * lib/x86-mes-mescc/hello-mes.S: ... here. - * lib/linux/x86-mes/elf32-0exit-42.hex2: Move from ... - * lib/x86-mes/elf32-0exit-42.hex2: ... here. - * lib/linux/x86-mes/elf32-0header.hex2: Move from ... - * lib/x86-mes/elf32-0header.hex2: ... here. - * lib/linux/x86-mes/elf32-0hello-mes.hex2: Move from ... - * lib/x86-mes/elf32-0hello-mes.hex2: ... here. - * lib/linux/x86-mes/elf32-body-exit-42.hex2: Move from ... - * lib/x86-mes/elf32-body-exit-42.hex2: ... here. - * lib/linux/x86-mes/elf32-body-hello-mes.hex2: Move from ... - * lib/x86-mes/elf32-body-hello-mes.hex2: ... here. - * lib/linux/x86-mes/elf32-footer-single-main.hex2: Move from ... - * lib/x86-mes/elf32-footer-single-main.hex2: ... here. - * lib/linux/x86-mes/elf32-header.hex2: Move from ... - * lib/x86-mes/elf32-header.hex2: ... here. - * lib/linux/x86_64-mes-gcc/exit-42.S: Move from ... - * lib/x86_64-mes-gcc/exit-42.S: ... here. - * lib/linux/x86_64-mes-gcc/hello-mes.S: Move from ... - * lib/x86_64-mes-gcc/hello-mes.S: ... here. - * lib/linux/x86_64-mes-mescc/exit-42.S: Move from ... - * lib/x86_64-mes-mescc/exit-42.S: ... here. - * lib/linux/x86_64-mes-mescc/hello-mes.S: Move from ... - * lib/x86_64-mes-mescc/hello-mes.S: ... here. - * lib/linux/x86_64-mes/elf64-0exit-42.hex2: Move from ... - * lib/x86_64-mes/elf64-0exit-42.hex2: ... here. - * lib/linux/x86_64-mes/elf64-0header.hex2: Move from ... - * lib/x86_64-mes/elf64-0header.hex2: ... here. - * lib/linux/x86_64-mes/elf64-0hello-mes.hex2: Move from ... - * lib/x86_64-mes/elf64-0hello-mes.hex2: ... here. - * lib/linux/x86_64-mes/elf64-body-exit-42.hex2: Move from ... - * lib/x86_64-mes/elf64-body-exit-42.hex2: ... here. - * lib/linux/x86_64-mes/elf64-body-hello-mes.hex2: Move from ... - * lib/x86_64-mes/elf64-body-hello-mes.hex2: ... here. - * lib/linux/x86_64-mes/elf64-footer-single-main.hex2: Move from ... - * lib/x86_64-mes/elf64-footer-single-main.hex2: ... here. - * lib/linux/x86_64-mes/elf64-header.hex2: Move from ... - * lib/x86_64-mes/elf64-header.hex2: ... here. - * module/mescc.scm (parse-opts): Support --kernel. - * module/mescc/mescc.scm (kernel-find): New function. - * module/mescc/mescc.scm (hex2->elf): Use it to find kernel-specific ELF - snippets. - * build-aux/install.sh.in: Install it. - -2019-12-13 Jan Nieuwenhuizen - - mescc: Mes C Library: Add ioctl3 stub. - - mescc: Mes C Library: Fix access stub. - * lib/stub/access.c (access): Use _open3 to give more meaningful - behaviour. Fixes hanging of mes. - - hurd: Fixes for upgrade to debian-hurd-20190220.img. - * include/mach/mach-init.h (__mach_host_self, __mach_task_self): - Remove macro magic. - (mach_host_self, mach_task_self): Remove macro magic; declare as function. - * lib/mach/mach-init.c (mach_host_self, mach_task_self): New function. - (mach_init): Use them. - * lib/gnu/hurd-start.c (_hurd_start): Use mach_task_self (). - * lib/gnu/_exit.c (_exit): Likewise. - - hurd: Add malloc. - * include/gnu/syscall.h (__vm_allocate): New value. - (__vm_allocate): Declare. - * lib/gnu/malloc.c: New file. - * lib/stdlib/malloc.c[__GNU__]: Disable. See FIXME. - * lib/gnu/vm-allocate.c: New file. - * build-aux/configure-lib.sh (libc_SOURCES): Add it. - - hurd: Add open. - * include/fcntl.h (O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_APPEND, - O_TRUNC)[__GNU__]: Specialize for GNU. - * lib/gnu/dir-lookup.c: New file. - * lib/stdio/fopen.c (fopen): Use O_RDONLY. - * lib/tests/posix/50-open-read.c (main): Likewise. - * lib/tests/stdio/90-fseek.c (main): Likewise. - * include/gnu/syscall.h (SYS__dir_lookup): New value. - * lib/gnu/_open3.c: New file. - * build-aux/configure-lib.sh (libc_SOURCES): Build them. - - hurd: Add argv and environ. - * include/gnu/hurd.h (struct hurd_startup_data): Add argp, envp. - * lib/gnu/hurd-start.c (__argv, __env): Define them. - * lib/gnu/exec-startup-get-data.c (mach_startup_info2hurd_startup_data): - Set them. - * lib/gnu/x86-mes-gcc/crt1.c (_start): Use them. - * build-aux/configure-lib.sh (libc_mini_SOURCES): Add argz-extract.c. - * include/argz.h: Build fix. - * lib/string/argz-count.c: Likewise. - * lib/string/argz-extract.c: Likewise. - - hurd: Add stubs for missing libc+tcc functions. - * lib/stub/close.c: New file. - * lib/stub/rmdir.c: New file. - * lib/stub/stat.c: New file. - * build-aux/configure-lib.sh (libc_tcc_SOURCES)[gnu]: Add them. - - hurd: Add stubs for missing libc functions. - * lib/stub/_getcwd.c: New file. - * lib/stub/_getcwd.c: New file. - * lib/stub/_open3.c: New file. - * lib/stub/access.c: New file. - * lib/stub/brk.c: New file. - * lib/stub/chmod.c: New file. - * lib/stub/clock_gettime.c: New file. - * lib/stub/dup.c: New file. - * lib/stub/dup2.c: New file. - * lib/stub/execve.c: New file. - * lib/stub/fork.c: New file. - * lib/stub/gettimeofday.c: New file. - * lib/stub/ioctl.c: New file. - * lib/stub/time.c: New file. - * lib/stub/unlink.c: New file. - * lib/stub/waitpid.c: New file. - * build-aux/configure-lib.sh (libc_SOURCES)[gnu]: Add them. - - hurd: Add stubs for missing libmes functions. - * lib/stub/lseek.c: New file. - * build-aux/configure-lib.sh (libmes_SOURCES)[gnu]: Add it. - - hurd: Add _read. - * include/gnu/hurd.h (fd_read): Declare. - * include/gnu/syscall.h (SYS__io_read): New value. - * lib/gnu/_read.c: New file. - * lib/gnu/fd-read.c: New file. - * lib/gnu/io-read.c: New file. - * build-aux/configure-lib.sh (libc_SOURCES): Add _read sources. - - hurd: Add _write. - * include/gnu/syscall.h (SYS__io_write): Add enum field. - (_hurd_dtable, _hurd_dtable_size): Declare variable. - (fd_get, fd_write, __io_write, __syscall_put): Declare. - * lib/gnu/hurd-start.c (_hurd_dtable, _hurd_dtable_size): Define - variable. - * lib/gnu/_write.c: New file. - * lib/gnu/fd-get.c (fd_get): New file. - * lib/gnu/fd-write.c (fd_write): New file. - * lib/gnu/io-write.c: New file. - * lib/gnu/syscall.c (__syscall_put): New function. - * build-aux/cofnigure-lib.sh (libc_mini_SOURCES): Add write sources. - * lib/tests/mes/30-oputs.c (main): Update. - * lib/tests/mes/30-oputs.stdout: New file. - * lib/tests/mes/30-eputs.c: New test. - * lib/tests/mes/30-eputs.stderr: New file. - * build-aux/check-mescc.sh (TESTS): Add it. - -2019-12-13 Jan Nieuwenhuizen - - hurd: Initial support. - This adds minimal Hurd support by implementing the _exit function. - - * AUTHORS: Update. - * .gitignore: Ignore a.out, core, .config. - * include/sys/wait.h (W_EXITCODE): New define. - * lib/gnu/x86-mes-gcc/crt1.c: New file. - * lib/gnu/x86-mes-gcc/mini.c: New file. - * lib/gnu/hurd-start.c: New file. - * lib/gnu/_exit.c: New file. - * include/gnu/syscall.h: New file. - * include/gnu/hurd.h: New file. - * lib/gnu/_exit.c: New file. - * lib/gnu/exec-startup-get-data.c: New file. - * lib/gnu/hurd-start.c: New file. - * lib/gnu/proc-mark-exit.c: New file. - * lib/gnu/syscall.c: New file. - * lib/gnu/task-get-special-port.c: New file. - * lib/gnu/task-terminate.c: New file. - * lib/gnu/vm-statistics.c: New file. - * build-aux/configure-lib.sh (libc_mini_SOURCES): Add Hurd sources. - * build-aux/build.sh.in (CPPFLAGS): Add lib to includes, to find linux - crt1.c. - * build-aux/test-c.sh: Always use at least -l c+mini for GNU. - * lib/tests/scaffold/30-exit-42.exit: New file. - * lib/tests/scaffold/30-exit-42.c: New test. - * build-aux/check-mescc.sh (TESTS): Add it. - * lib/tests/scaffold/30-exit-0.c (main): Move from 00-exit-0.c; Rewrite, - use _exit. - * include/gnu/hurd-types.h: Import from GNU C Library. - * include/mach/mach-init.h: Likewise. - * lib/mach/mach-init.c: Likewise. - * lib/mach/mach_host_self.S: Likewise. - * lib/mach/mach_msg_trap.S: Likewise. - * lib/mach/mach_reply_port.S: Likewise. - * lib/mach/mach_task_self.S: Likewise. - * lib/mach/mach_thread_self.S: Likewise. - * lib/mach/msg.c: Likewise. - -2019-12-13 Jan Nieuwenhuizen - - build: Generate ChangeLog reproducibly. Thanks, Timothy! - * build-aux/gitlog-to-changelog (git_dir_option): Avoid non-reproducible - localtime. - - build: Make guild optional for bootstrap builds. - * configure: Use `true' for guild when it is not available. - - build: Clean-out .gitignore. - .gitignore: Remove obsolete cross build patterns. - - build: Cater for bootstrap build. - * build-aux/build.sh.in: Build bin/mes. Update scripts and users. - * build-aux/bootstrap.sh.in: Update. - * build-aux/install.sh.in: Install all built bin/mes-* flavours. - * configure: Drop SEED, support --bootstrap. - * configure.sh: Likewise. - -2019-12-08 Jan Nieuwenhuizen - - build: Oops, have configure honor --host. - This allows - - ./configure --host=i686-unknown-linux-gnu - - instead of - - CC=i686-unknown-linux-gnu-gcc ./configure - - * configure (main): Honor --host. - -2019-12-08 Jan Nieuwenhuizen - - bootstrap: Default to mesar for mescc build. - * configure.sh: Default to mesar for mescc build. - - bootstrap: Fix configure.sh's host detection. - * configure.sh: Avoid setting host="" and not running $CC. - - mescc: Add mes 0.19 compatibility. - * mes/module/mes/boot-0.scm (%datadir): Cater for %datadir not being - set. - -2019-12-07 Jan Nieuwenhuizen - - bootstrap: Build files only once. - * build-aux/bootstrap.sh.in: Build files only once. - - build: Support mescc-tools 0.5.2. - * configure: Remove version check for mescc-tools. - Check for stage0 architecture flag type. - * configure.sh: Likewise. - * build-aux/build-scaffold.sh: Add stage0 flag type indirection. - * module/mescc/mescc.scm (arch-get-architecture): Likewise. - -2019-12-06 Jan Nieuwenhuizen - - mescc: Fix for compiling handwritten .S assembly. - * module/mescc/mescc.scm (mescc:compile): Handle .S. - (mescc:link): Likewise. - - build: Add mescc scaffold for regular build. - * lib/x86-mes-mescc/exit-42.S: New file. - * lib/x86-mes-mescc/hello-mes.S: New file. - * lib/x86_64-mes-mescc/exit-42.S: New file. - * lib/x86_64-mes-mescc/hello-mes.S: New file. - -2019-12-08 Jan Nieuwenhuizen - - build: Add --with-bootstrap option. - * configure (main): Add --with-bootstrap option. - * build-aux/build.sh.in [--with-bootstrap]: After building mes with CC, - build mes with MesCC. - -2019-12-05 Jan Nieuwenhuizen - - build: Support toplevel lib and mes builds. - * build-aux/build.sh.in: Add missing libdir for gcc build. - * build-aux/config.sh.in: ...here. - * build-aux/build-mes.sh: Do not overwrite srcdest, V. - - bootstrap: Support srcdir builds. - * build-aux/bootstrap.sh.in (srcdest): Initialize. - * build-aux/build-lib.sh: Source config.sh. - * configure.sh: Support srcdir builds. - * build-aux/build.sh.in: Move setting of cflags to ... - * build-aux/cflags.sh: ... New file. - - configure: Honor CFLAGS, LDFLAGS. - * configure (cflags-list, ldflags-list): New function. - check-preprocess-header-c, check-compile-string-c, - check-link-string-c): Use them. Be verbose when %verbose?. - (CFLAGS, LDFLAGS): Initialize to "-static -g". - -2019-12-08 Jan Nieuwenhuizen - - build! Fixup clean without git: Clean cleaner. - * build-aux/GNUmakefile.in (clean): Clean cleaner. - -2019-12-07 Vagrant Cascadian - - Fix build without git on "wip" branch. - --=-=-= - Content-Type: text/plain - - In the "wip" branch, the attempt to build without git was a bit overly - aggressive in the purging of GIT. - - live well, - vagrant - - From 73bb68e86318a6bc0fe191db663be97f94556956 Mon Sep 17 00:00:00 2001 - From: Vagrant Cascadian - Date: Sat, 7 Dec 2019 19:59:00 +0100 - Subject: [PATCH] Fix build without git - - Commit "1863c0d843a5fe4e94e8cb923cc0896f30fceeeb" removed the - substitution of @GIT@ when, resulting in the GIT variable being set to - "@GIT@" rather than "" when git is not installed. - -2019-12-04 Jan Nieuwenhuizen - - build: Fix configure host detection for Arch. Thanks, Jelle! - * configure (main): Grok `CPU-pc-linux-gnu'. - - build: Successfully check for Nyacc 0.99.0. - * configure (gulp-pipe): New function. - (check-program-version): Use it to correctly detect Nyacc. - (gulp-pipe*): Rewrite to use it. - - build: Remove git dependency. - * configure: Remove git dependency. - * build-aux/GNUmakefile.in (clean,distclean, maintainer-clean): - Implement without git. - * INSTALL: Update dependencies. - -2019-12-03 Jan Nieuwenhuizen - - core: Remove MES_PKGDATADIR. - * configure: Do not add MES_PKGDATADIR to config.h. - * configure.sh: Likewise. - * simple.sh: Likewise. - * src/mes.c (open_boot): Do not use MES_PKGDATADIR; rely on - MES_PREFIX or cwd. - -2019-12-02 Jan Nieuwenhuizen - - mescc: Ignore -fno-stack-protector. - * module/mescc.scm (parse-opts): Ignore it. - - build: Use debug build (-g) by default. - * build-aux/build.sh.in (debug): Enable. - - build: Honor user's CFLAGS, CPPFLAGS, LDFLAGS. - * build-aux/build.sh.in (AM_CFLAGS, AM_CPPFLAGS, AM_LDFLAGS): Rename - from CFLAGS, CPPFLAGS, LDFLAGS. Export them. - * configure: Substitute them. - * configure.sh: Likewise. - * build-aux/cc.sh (compile, link): Use them. - * build-aux/config.make.in (CFLAGS, CPPFLAGS, LDFLAGS): Add - substitutable variables. - * build-aux/config.sh.in: Likewise. - * build-aux/export.make: Export them. - - test: 90-abtod: Remove printf dependency. Fixes gcc. - * lib/tests/mes/90-abtod.stdout: Remove. - * lib/tests/mes/90-abtod.c (main): Remove printf. - -2019-12-01 Jan Nieuwenhuizen - - test: 90-readdir: Remove qsort dependency. Fixes tmpfs failures. - * lib/tests/dirent/90-readdir.c (check_seen): New function. - (main): Use it instead of qsort. - (qsort_strcmp): Remove. - -2019-11-24 Jan Nieuwenhuizen - - core: Throw instead of segfault on non-existing input file. - Reported by theruran. - - * src/posix.c (open_input_file): Call error instead of failing silently. - -2019-06-11 Vagrant Cascadian - - boot-0: Fix spelling of "evaluate" - -2019-11-24 Jan Nieuwenhuizen - - mescc: Honor --includedir, --libdir. - * guix/git/mes.scm (mes): - * module/mescc.scm (%includedir, %libdir): New variable. - (mescc:main): Add them to options. - * module/mescc/mescc.scm (mescc:preprocess, c->info): Add %includedir. - (arch-find): Use %libdir instead of - prefix-file. - (prefix-file): Remove. - * scripts/mescc.scm.in (%includedir, %libdir): Initialize from and set - in environment. - - xx - - * module/mescc/mescc.scm : - -2019-11-24 Jan Nieuwenhuizen - - doc: Post-release update. - * NEWS: Typo. - * doc/announce/ANNOUNCE-0.21: Add checksums. - -2019-11-10 Jan Nieuwenhuizen - - Release 0.21. - * configure (VERSION): Update to 0.21. - (main): Likewise. - * build-aux/GNUmakefile.in: Likewise. - * configure.sh (VERSION): Likewise. - * guix/git/mes.scm (mes, mes.git): Likewise. - -2019-11-04 Jan Nieuwenhuizen - - doc: Release update. - * BLURB: Release update. - * HACKING: Remove roadmap. - * INSTALL: Release update. - * NEWS: Add 0.21 section. - * README: Release update. - * ROADMAP: New file. - * configure.sh: Release update. - * doc/announce/ANNOUNCE-0.21: New file. - * doc/mes.texi: Release update. - -2019-11-23 Jan Nieuwenhuizen - - mescc: Mes C Library: vfprintf: Support --with-system-libc. - * include/stdarg.h (va_arg8)[SYSTEM_LIBC]: Define. - - mescc: Mes C Library: Support gcc-4.6.4: Fix ctime stub. - * lib/stub/ctime.c (ctime): Fix stub to avoid segfault upon use. - - mescc: Mes C Library: Fix isatty for x86_64. - * lib/linux/ioctl.c (ioctl3): New function. - * include/sys/ioctl.h: Declare it. - * lib/posix/isatty.c (__tcgetattr): Use it. - -2019-11-09 Jan Nieuwenhuizen - - build: Prefer /bin/bash if available. Thanks, Vagrant! - Ensure the configure script uses /bin/bash, otherwise on systems with - /bin -> /usr/bin it results in /bin/bash being embedded in various - scripts. - - Inspired by - - https://salsa.debian.org/debian/mes/blob/debian/master/debian/patches/force-use-of-bin-bash - - * configure: Prefer /bin/bash, /bin/sh if available. Helps - reproducibility on Debian. - -2019-11-04 Jan Nieuwenhuizen - - build: Update script help and usage. - * doc/mes.texi (Invoking mesar): New section. - * mes/module/mes/boot-0.scm: Add one line help description. - * module/mescc.scm (parse-opts): Likewise. - * scripts/diff.scm (main): Add -h,--help, -v,--version. - * scripts/mesar.in: Likewise. - - build: Use unversioned doc directory. Thanks, Vagrant! - * configure (docdir): Drop version. Fixes Debian lint error. - * configure.sh (docdir): Likewise. - - build: Add sensible NAME section for man pages. Thanks, Vagrant! - * build-aux/GNUmakefile.in (mes.1, mescc.1, mesar.1): Add sensible - --name section. Fixes Debian lint error. Reported by Vagrant - Cascadian. - -2019-11-09 Jan Nieuwenhuizen - - Revert "build: Mark lib/tests/dirent/90-readdir.c as XFAIL on x86_64-gcc." - This reverts commit dc0b41f83efa973b7a92c0c7a0ad1eb21a7c4c7a. - -2019-10-30 Jan Nieuwenhuizen - - build: Mark lib/tests/dirent/90-readdir.c as XFAIL on x86_64-gcc. - * build-aux/check-mescc.sh (XFAIL_TESTS)[x86_64-gcc]: Add - lib/tests/dirent/90-readdir.c. - -2019-11-09 Jan Nieuwenhuizen - - Revert "build: Mark lib/tests/dirent/90-readdir.c as XFAIL on x86_64-mescc." - This reverts commit 17986224095ed72649fb2383f72c21f525977310. - -2019-10-30 Jan Nieuwenhuizen - - build: Mark lib/tests/dirent/90-readdir.c as XFAIL on x86_64-mescc. - * build-aux/check-mescc.sh (XFAIL_TESTS)[x86_64-mescc]: Add - lib/tests/dirent/90-readdir.c. - -2019-10-24 Jan Nieuwenhuizen - - build: Better and friendlier tarball. - * build-aux/GNUmakefile.in (dist): Be friendly to Debian; avoid using - EPOCH. Cater for file permission differences. - -2019-10-15 Jan Nieuwenhuizen - - build: bootstrap fixes. - * build-aux/config.sh.in (bootstrap): Set up for substitution. - * configure.sh (bootstrap): Substitute. - * build-aux/install.sh.in (_v): Robustify check for V. - (__exclude_go, __exclude_scm): Initialize. - -2019-10-10 Jan Nieuwenhuizen - - mes: Fix -c, --command. - * mes/module/mes/boot-0.scm: Prepend 'begin to expr list. - -2019-10-03 Jan Nieuwenhuizen - - check: Remove duplicate test. - * build-aux/check-boot.sh (TESTS): Remove duplicate test. - -2019-09-20 Jan Nieuwenhuizen - - mescc: Mes C Library: Support gcc-4.6.4: vfprintf, vsnprintf: pad with space. - * lib/stdio/vfprintf.c (vfprintf): pad with space. - * lib/stdio/vsnprintf.c (vsnprintf): pad with space. - -2019-09-13 Jan Nieuwenhuizen - - mescc: Mes C Library: Support gcc-4.6.4: Add math stubs. - * lib/math/ceil.c: New file. - * lib/math/floor.c: New file. - * lib/stub/atan2.c: New file. - * lib/stub/cos.c: New file. - * lib/stub/exp.c: New file. - * lib/stub/log.c: New file. - * lib/stub/modf.c: New file. - * lib/stub/pow.c: New file. - * lib/stub/sin.c: New file. - * lib/stub/sqrt.c: New file. - * lib/libc+gnu.c: Include them. - * include/math.h (atan2, ceil, cos, exp, fabs, floor, log, modf, pow, - sin, sqrt): Declare. - * lib/math/fabs.c: Update. - * lib/stub/ldexp.c: Update. - -2019-09-06 Jan Nieuwenhuizen - - mescc: Mes C Library: Support gcc-4.6.4: Add fscanf, vfscanf. - * lib/stdio/vfscanf.c: New file. - * lib/stdio/fscanf.c: New file. - * build-aux/configure-lib.sh (libc_gnu_SOURCES): Add them. - * include/stdio.h (fscanf): Declare. - * include/stdarg.h (vfscanf): Declare. - * lib/stub/fscanf.c: Remove. - -2019-09-04 Jan Nieuwenhuizen - - mescc: Mes C Libray: Fix off_t. - * include/sys/types.h (off_t): Drop unsigned. - -2019-09-06 Jan Nieuwenhuizen - - mescc: Environment setup. - * scripts/mescc.in (MES_ARENA, MES_MAX_ARENA, MES_STACK): Reduce defaults. - * build-aux/check.sh.in (MES_ARENA): Likewise. Export them. - * build-aux/bootstrap.sh.in (MES_STACK): Likewise. - (MES_PREFIX): Set default. - -2019-08-26 Danny Milosavljevic - - Add missing #include. - * lib/stdlib/mbstowcs.c: Add missing #include. - - Fix dtoab. - * lib/mes/dtoab.c (dtoab): Fix it. - * lib/tests/mes/90-dtoab.c (main): Fix test. - * build-aux/check-mescc.sh (XFAIL_TESTS: Remove it. - -2019-08-27 Danny Milosavljevic - - va_align: Fix compiler warning. - Follow-up to 49b0cd7d2e6952044d7436260d6ba950e40ee05f. - - * include/stdarg.h: Fix compiler warning. - -2019-08-27 Danny Milosavljevic - - Add missing #include. - * lib/tests/mes/90-abtod.c (main): Add missing #include. - - Fix variable argument list traversal for doubles. - * include/stdarg.h (va_align): New macro. - (va_arg8): New macro. - * lib/stdio/vfprintf.c (vfprintf): Use it. - * lib/stdio/vsnprintf.c (vsnprintf): Use it. - -2019-08-24 Jan Nieuwenhuizen - - build: Improve --with-system-libc support. - * build-aux/build-lib.sh: Avoid building libc for --with-system-libc. - Make libmes richer. - build-aux/check-mescc.sh: Enable 50-malloc test. - * include/dirstream.h: Use HAVE_DIRSTREAM_H to cater for non-existing - dirstream.h. - * include/grp.h[SYSTEM_LIBC]: Typo. - * include/mes/lib.h (__brk, __call_at_exit)[SYSTEM_LIBC]: Declare. - * include/stdlib.h (comparison_fn_t)[SYSTEM_LIBC]: Declare. - * include/time.h (mktime): Return time_t. - * lib/posix/isatty.c [SYSTEM_LIBC]: Do not (re)declare termios. - * lib/stub/mktime.c (mktime): Return time_t. - * lib/tests/scaffold/41-ternary.c (main): Remove assumption that - locals are initialized. - * lib/tests/scaffold/70-stdarg.c: Cater for SYSTEM_LIBC. - * lib/tests/setjmp/80-setjmp.c: Declare jmp buf. - * lib/*/*.c: Add missing mes/lib.h, errno.h includes. - -2019-09-01 Jan Nieuwenhuizen - - mescc: Mes C Library: vfprintf, vsnprintf: Pad floats with space. - * lib/stdio/vfprintf.c (vfprintf): Pad floats with space. - * lib/stdio/vsnprintf.c (vsnprintf): Pad floats with space. - * lib/tests/stdio/90-sprintf.c: Test it. - -2019-08-01 Jan Nieuwenhuizen - - mescc: Mes C Library: vsscanf: Increase count for scanned float. - * lib/stdio/vsscanf.c (vsscanf): Increase count for scanned float. - -2019-07-31 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Tar: Fix getpwnam, getpwuid stubs. - * lib/stub/getpwnam.c (getpwnam): Return pointer to static struct - passwd. - * lib/stub/getpwuid.c (getpwuid): Likewise. - -2019-07-24 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Tar: Add getgrgid, getgrnam, setgrent stub. - * include/grp.h: New file. - * lib/stub/getgrgid.c: New file. - * lib/stub/getgrnam.c: New file. - * lib/stub/setgrent.c: New file. - * lib/libc+gnu.c: Include them. - -2019-07-21 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Awk: Add wchar_t. - * include/sys/types.h (wchar_t): New typedef. - -2019-07-18 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Awk: Add getpgid, getpgrp stubs. - * include/unistd.h (getpgid, getpgrp): Declare. - * lib/stub/getpgid.c: New file. - * lib/stub/getpgrp.c: New file. - * lib/libc+gnu.c: Include them. - -2019-07-15 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Tar: Add mktime stub, fix localtime stub. - * include/time.h (mktime): Declare. - * lib/stub/mktime.c: New stub. - * lib/libc+gnu.c: Include it. - * lib/stub/localtime.c (localtime): Return pointer to static struct - tm. Avoids segfaults. - -2019-07-12 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Tar: Add creat, mknod. - * include/linux/x86_64/syscall.h (SYS_mknod): New macro. - * include/linux/x86/syscall.h (SYS_mknod): New macro. - * lib/linux/mknod.c: New file. - * build-aux/configure-lib.sh (libc_gnu_SOURCES): Add it. - * include/sys/stat.h (mknod): Declare it. - * include/fcntl.h (creat): New macro. - -2019-07-09 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Tar: Add missing defines. - * include/errno.h (ENXIO): New macro. - * include/sys/stat.h (S_IFIFO, S_ISFIFO): New macro. - -2019-07-06 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Bash: Add struct winsize. - * include/termio.h (struct winsize): New type. - -2019-07-03 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Awk: Implement atof. - * lib/stdlib/atoi.c: Update. - * lib/stdlib/atof.c: Rename from stub/atof.c; Implement. - * lib/libc+gnu.c: Update include. - * lib/libg.c: Update include. - -2020-01-12 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Awk: Add dtoab, %f in vfprintf, vsnprintf. - * include/libmes.h (dtoab): Declare. - * lib/mes/ntoab.c (ntoab): Update. - * lib/mes/dtoab.c: New file. - * build-aux/configure-lib.sh (libmes_SOURCES, libc_tcc_SOURCES): Add - it. - * lib/tests/mes/90-dtoab.c: Test it. - * lib/tests/stdio/90-sprintf.c: Test it. - * build-aux/check-mescc.sh (tests): Run it, against... - * lib/tests/mes/90-dtoab.stdout: ...baseline. - * lib/stdio/vfprintf.c (vfprintf): Support %f, even more naive support - for %e, %E, %g, %G. - * lib/stdio/vsnprintf.c (vsnprintf): Likewise. - -2019-06-25 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Awk: Add abtod, implementing strtod. - * include/libmes.h (abtod): Declare. - * lib/mes/abtod.c: New file. - * build-aux/configure-lib.sh (libmes_SOURCES, libc_tcc_SOURCES): Add - it. - * lib/mes/abtol.c: Update. - * lib/stdlib/strtod.c: Use it to implement; move from stub/strtod. - * lib/tests/mes/90-abtod.c: Test it. - * lib/tests/mes/90-abtod.stdout: Baseline. - * build-aux/check-mescc.sh (tests): Run it. - -2019-06-22 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Awk: vsscanf: Support %f. - * lib/stdio/vsscanf.c (vsscanf): Support %f. - -2019-06-19 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Awk: Do not flush std files. - * lib/stdio/fflush.c (fflush): Do not flush std files. - -2019-06-16 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Awk: Add isgraph. - * lib/ctype/isgraph.c: New file. - * lib/libc+gnu.c: Include it. - * include/ctype.h: Add missing prototypes. - -2019-06-12 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Tar: Add readlink, symlink. - * lib/linux/gnu.c (readlink, symlink): New function. - * include/unistd.h (readlink, symlink): Declare. - * include/linux/x86/syscall.h (SYS_readlink, SYS_symlink): New macro. - * include/linux/x86_64/syscall.h (SYS_symlink, SYS_readlink): New - macro. - -2019-06-09 Jan Nieuwenhuizen - - mescc: Mes C Library: Support GNU Tar: Add execlp. - * lib/posix/execl.c (vexec): New function. - (execl): Use it. - * lib/posix/execlp.c: New file. - * build-aux/configure-lib.sh (libc_tcc_SOURCES): Add it. - * lib/libc+gnu.c: Include it. - * include/unistd.h (execlp): Declare. - * lib/tests/posix/90-execlp.c: New file. - * lib/tests/posix/90-execlp.stdout: New file. - * build-aux/check-mescc.sh: Test it. - -2019-06-12 Jan Nieuwenhuizen - - mescc: Mes C Library: Fix compile warnings. - * include/stdlib.h (abort): Add prototype. - -2019-11-10 Jan Nieuwenhuizen - - mescc: Mes C Library: Add missing stubs. - * build-aux/configure-lib.sh (libc_gnu_SOURCES): Add fscanf, rewind stubs. - * lib/stdio/freeopen.c: Remove. - -2019-09-20 Jan Nieuwenhuizen - - build: Avoid tar --exclude=. - * build-aux/install.sh.in: Only use `tar --exclude=' if we also have .go - files compiled by Guile. - -2019-09-16 Jan Nieuwenhuizen - - build: mesar: Remove bashisms. - * scripts/mesar.in: Remove bashisms. - -2019-10-01 Jan Nieuwenhuizen - - configure.sh: Cleanup argument parsing. Thanks, Timothy! - * configure.sh: Cleanup argument parsing. - -2019-09-16 Jan Nieuwenhuizen - - configure.sh: Remove bashisms. - * configure.sh: Remove bashisms. Fixes running with Gash 0.1. - -2019-09-16 Jan Nieuwenhuizen - - Revert "nyacc: 0.86.0 compatibility stub. WIP" - This reverts commit 0183cc1c42437fda27196e27b490285a61d47f59. - - While it works to run Nyacc 0.86.0, it breaks running Nyacc 0.93 and - up. This would need more thought and work, adding a nyacc-compat - directory or so. Seems not worth the effort right now. - -2019-09-16 Jan Nieuwenhuizen - - nyacc: 0.86.0 compatibility stub. WIP - * mes/module/nyacc/lang/c99/util.scm: 0.86.0 compatibility stub. - -2019-09-20 Jan Nieuwenhuizen - - build: Split-out build-source-lib.sh from build-lib.sh. - * build-aux/build-lib.sh: Remove building of source lib. - * build-aux/build-source-lib.sh: New file. - * build-aux/build.sh.in: Invoke it. - * build-aux/bootstrap.sh.in: Likewise. - -2019-11-13 Jan Nieuwenhuizen - - build: Honor configure's --includedir. Thanks, Vagrant! - Suggested by Vagrant Cascadian - - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=902174#84 - - * build-aux/install.sh.in: Install headers in $includedir. - * configure (includedir): Typo. - * configure.sh (includedir): Likewise. - -2019-11-23 Jan Nieuwenhuizen - - build: Create ascii signature. - * build-aux/GNUmakefile.in (sign): Create ascii signature. - -2019-09-09 Jan Nieuwenhuizen - - doc: Post-release update. - * doc/announce/ANNOUNCE-0.20: Update. - * guix/git/mes.scm (mes): Update. - - Release 0.20. - * configure (VERSION): Update to 0.20. - (main): Likewise. - * configure.sh (VERSION): Likewise. - * guix/git/mes.scm (mes, mes.git): Likewise. - - doc: Release update. - * BLURB: New file. - * AUTHORS: Update. - * HACKING: Update. - * INSTALL: Update. - * NEWS: Update. - * README: Update. - * doc/images/gcc-mesboot-graph.dot: Update. - * doc/mes.texi: Update. - * simple.sh: Update. - * doc/announce/ANNOUNCE-0.20: New file. - - guix: Update mescc-tools to 0.6.1. - * guix/git/mes.scm (mescc-tools): Update to 0.6.1. - * configure: Check for mescc-tools versions 0.6 or higher. - - build: Create ascii signature. - * build-aux/GNUmakefile.in (sign): Create ascii signature. - - guix: Update Nyacc to 0.99. - * guix/git/mes.scm (nyacc): Update to 0.99. - - doc: Add PORTING. - * PORTING: New file. - - doc: Typos. Thanks, dddddd. - * doc/announce/ANNOUNCE-0.11: Typo. - * doc/announce/ANNOUNCE-0.12: Typo. - * doc/announce/ANNOUNCE-0.13: Typo. - * doc/announce/ANNOUNCE-0.14: Typo. - - mescc: Remove dead code. Thanks Mark Weaver. - * module/mescc/compile.scm (field-size): Remove dead function. - - guix: Update packaging. - * build-aux/manifest.scm (string-append): - * guix/git/mes.scm (nyacc, git-file?): Remove. - (mescc-tools): Bump to 0.6.0. - (%source-dir): New variable. - (mes.git): Ues it. - * guix.scm: Rename from .guix.scm. - - build: Do not generate ChangeLog from tarball. - * configure (main): Set .git-for-build. - * build-aux/install.sh.in (DESTDIR): Use it as canary to skip - ChangeLog rebuild. - - build: Use mesar instead of ar. - * scripts/mesar.in: Rename from ar.in. Update users. - * build-aux/build.sh.in (LIBS): Update. - * build-aux/check.sh.in (recheck): Likwise. - * build-aux/install.sh.in (DESTDIR): Likwise. - * configure (main): Likwise. - * configure.sh (mes_system): Likwise. - * .gitignore: Update. - - getopt: Remove old FSF address, thanks Vagrant. - * lib/posix/getopt.c: Remove old FSF address. - -2019-09-09 Danny Milosavljevic - - Add missing #include. - * lib/tests/scaffold/55-char-array.c: Add missing #include. - - Add missing #include. - * lib/tests/io/90-stat.c: Add missing #include. - - Add missing #include. - * lib/posix/getcwd.c: Add missing #include. - -2019-09-09 Jan Nieuwenhuizen - - signal: Use SA_RESTORER on x86-64. - * lib/linux/signal.c (signal)[x86_64]: Avoid segfault by setting - SA_RESTORER flag. - -2019-09-09 Danny Milosavljevic - - signal: Add comment on why we don't use the restorer. - * lib/linux/signal.c: Add comment on why we don't use the restorer. - - signal: Remove SA_SIGINFO. - * lib/linux/signal.c (signal): Remove SA_SIGINFO. - - signal: Don't use custom restorer. - * lib/linux/signal.c (signal): Don't use custom restorer. - - signal: Use SA_SIGINFO (like glibc). - * lib/linux/signal.c (_restorer): Rename to... - (_restorer_for_siginfo): ...this. - (signal): Use it. Use SA_SIGINFO. - - signal: Make sure that the signal mask is actually unsigned long. - * lib/linux/signal.c (signal): Make sure that the signal mask is actually - unsigned long. - -2019-09-09 Danny Milosavljevic - - Delete "__sigmask". - Follow-up to 6d95b89759d3c598fc84194429ae8c57249daa1a - - * lib/linux/signal.c (__sigmask): Delete definition. - -2019-09-09 Danny Milosavljevic - - Fix "struct sigaction" structure for rt_sigaction. - * include/signal.h (sigset_t): Increase size. - * lib/linux/signal.c (signal): Use new sigset_t. - - Inherit CFLAGS for mes. - * build-aux/check.sh.in: Inherit CFLAGS for mes. - - Fix typo. - * build-aux/build.sh.in: Fix typo in "CFLAGS". - - tests: Fail early on nonexistent file. - * lib/tests/io/90-stat.c (main): Fail early on nonexistent file. - - open: Check flags, and use _open2 if applicable. - * lib/linux/open.c (open): Check flags; use _open2. - - ldiv: Make rem < 0 if a < 0. - * lib/mes/div.c (ldiv): Make rem < 0 if a < 0. - - ldiv: Handle a == LONG_MIN. - * lib/mes/div.c (ldiv): Handle a == LONG_MIN. - -2019-09-09 Jan Nieuwenhuizen - - ntoab: Use __mesabi_uldiv only for arm. - * lib/mes/ntoab.c (ntoab)[__MESC__ && __arm__]: Use __mesabi_uldiv. - * build-aux/check-mescc.sh (XFAIL_TESTS): 70-printf-simple.c and - 70-printf.c now pass for x86_64 mescc. - -2019-07-01 Danny Milosavljevic - - Fix ntoab. - Follow-up to b5b19304b59fefbed923b146ec8c8d495556fa76. - - * lib/mes/ntoab.c (ntoab): Fix non-MESC case. - -2019-06-18 Danny Milosavljevic - - signal: Define "_restorer" everywhere except on i386. - * lib/linux/signal.c: Define "_restorer" everywhere except on i386. - - Clarify our data type choices in "struct stat". - * include/sys/stat.h: Clarify our data type choices in "struct stat". - -2019-09-07 Jan Nieuwenhuizen - - test: Bump timeout. - * build-aux/test-c.sh: Bump timeout to 10s, __mesabi_uldiv can be slow. - -2019-06-14 Danny Milosavljevic - - ntoab: Use __mesabi_uldiv only on __MESC__. - * lib/mes/ntoab.c (ntoab): Use __mesabi_uldiv only on __MESC__. - -2019-06-14 Jan Nieuwenhuizen - - mescc: Mes C Library: Include mes/div.c for mescc builds. - * build-aux/configure-lib.sh (libmes_SOURCES): Add mes/div.c. - * simple.sh: Likewise. - -2019-06-13 Danny Milosavljevic - - ntoab: Include "assert.h". - * lib/mes/ntoab.c: #include "assert.h". - - mescc: Mes C Library: Use __mesabi_uldiv. - * lib/mes/ntoab.c (ntoab): Use __mesabi_uldiv. - - mescc: Mes C Library: Add integer division algorithm. - * lib/mes/div.c: New file. - -2019-07-28 Jan Nieuwenhuizen - - mescc: Mes C Library: Have write behave well with buffered reads. - * lib/mes/write.c: New file. - * build-aux/configure-lib.sh (libc_mini_SOURCES): Add it. - (libc_mini_shared_SOURCES): New variable. - (libc_mini_SOURCES, libmes_SOURCES): Use it. - (libmes_SOURCES): Add lib/linux/lseek.c, lib/posix/write.c. - (libc_tcc_SOURCES): Remove lib/linux/lseek.c. - * lib/posix/write.c (write): Correct for read buffer. - * lib/stdio/fwrite.c (fwrite): Remove read buffer correction. - * simple.sh: Update. - -2019-07-27 Jan Nieuwenhuizen - - mescc: Mes C Library: Add buffered read. - * lib/mes/__buffered_read.c: New file. - * build-aux/configure-lib.sh (libc_SOURCES): Add it. Also add memmove.c. - (libc_tcc_SOURCES): Remove memmove.c - * lib/linux/close.c (close): Clear read buffer. - * lib/linux/_open3.c (_open3): Likewise. - * lib/linux/lseek.c (lseek): Correct for read buffer. - * lib/stdio/fwrite.c (fwrite): Likewise. - * lib/posix/read.c (read): Call __buffered_read. - * lib/posix/write.c (write): Add FIXME note about buffered reads. - * simple.sh: Update. - -2019-06-10 Jan Nieuwenhuizen - - tests: Disable 70-extern.c for x86_64-gcc. - * build-aux/check-mescc.sh (XFAIL_TESTS)[x86_64-gcc]: Add - 70-extern.c. - -2019-05-30 Danny Milosavljevic - - mescc: Put char's ASCII code into register, not char. - * module/mescc/compile.scm (expr-register): Put char's ASCII code into - register, not char. - -2019-06-09 Jan Nieuwenhuizen - - mes: Update to Nyacc 0.93. - * mes/module/nyacc/lang/c99/util.mes: New file. - * mes/module/nyacc/lang/c99/parser.mes: Use it. - * module/mescc/compile.scm (ast->info): Update for Nyacc 0.93.0. - * module/mescc/preprocess.scm (need-progress): Likewise. - (ast-strip-comment): Likewise. - -2019-08-02 Jan Nieuwenhuizen - - mes: string->number: Support #x-prefixed hex numbers. - * mes/module/mes/scm.mes (string->number): Support "#x"-prefix. - * tests/math.test ("string->number #hex"): Test it. - -2019-07-27 Jan Nieuwenhuizen - - mescc: Do not dump variables with extern storage. - * lib/tests/scaffold/70-extern.stdout: New file. - * lib/tests/scaffold/70-extern.c: New file. - * build-aux/check-mescc.sh (TESTS): Add it.. - * module/mescc/M1.scm (global-string?, global-extern?): New function. - (info->M1): Dump strings first. Skip extern symbols. - * module/mescc/info.scm (): Add storage field. - (make-global): Add storage parameter. Pass it. - * module/mescc/compile.scm (make-global-entry): Likewise. - (global->info): Likewise. - (init-declr->info): Likewise. - (decl->info): Pass storage. - - build: ./pre-inst-env MES_PREFIX fixup. - * build-aux/pre-inst-env.in: Set MES_PREFIX to abs_top_srcdir. - * src/mes.c (open_boot): Cater for MES_PREFIX/mes and ${srcdest}. - - mescc: Be silent. - * module/mescc/M1.scm (infos->M1, info->M1): Add verbose?. Move - debugging into verbose? > 1. - * module/mescc/compile.scm (c99-input->info, c99-ast->info): Likewise. - (mescc:trace-verbose): Rename from mescc:trace. - (mescc:trace): New function. - * module/mescc.scm (mescc:main): Likewise. - * module/mescc/mescc.scm (mescc:preprocess, c->ast mescc:compile, - c->info, E->info): Likewise. - * module/mescc/preprocess.scm (c99-input->full-ast, c99-input->ast): - Likewise. - -2019-07-26 Jan Nieuwenhuizen - - mescc: Add // to include path. - * module/mescc/preprocess.scm (c99-input->full-ast): Add - // to include path. - * module/mescc/compile.scm (c99-input->info): Pass arch. - * module/mescc/mescc.scm (mescc:preprocess): Likewise. - (c->info): Likewise. - (c->ast): Likewise. - - mescc: Add 70-function-destruct-declare.c test. - * module/mescc/compile.scm (init-declr->info): Do not attempt to - re-calculate function type. - (ftn-declr:get-type): Remove. - * lib/tests/scaffold/70-function-destruct-declare.c: New file. - * build-aux/check-mescc.sh (TESTS): Add it. - - mescc: Resurrect --write. - * module/mescc/mescc.scm (mescc:preprocess): Pass pretty-print/write - to c->ast. - - build: Distribute crt*.c, libc+gnu.c for tcc, gcc bootstrap build. - * build-aux/build-lib.sh (libc_gnu_SOURCES): Build libc+gnu.c. Copy - crt*.c, libc+gnu.c for distribution. - - build: Uniquify config macros. - * configure (main): Rename VERSION to MES_VERSION, pkgdatadir to - MES_PKGDATADIR. Update users. - * configure.sh (mes_system): Likewise. - * src/mes.c (mes_symbols): Update. - (open_boot): Update. - * scaffold/cons-mes.c (main): Update. - * simple.sh: Update. - -2019-07-20 Jan Nieuwenhuizen - - build: Resurrect --with-cheating. - * build-aux/config.sh.in (SCHEME): New substitute. - * build-aux/config.make.in: Likewise. - * configure: Substitute them. - -2019-07-23 Jan Nieuwenhuizen - - mescc: Support tcc: libtcc1 build fixes. - * lib/libtcc1.c: Support building without long long, float support. - -2019-06-01 Jan Nieuwenhuizen - - mescc: Mes C Library: Avoid type/size_t conflicts. - * include/alloca.h: Remove typedefs, include sys/types.h. - * include/stdint.h: Likewise. - * include/string.h: Likewise. - -2019-07-17 Jan Nieuwenhuizen - - mescc: Support tcc: Add intptr_t, uintptr_t. - * include/sys/types.h (intptr_t, uintptr_t): Add typedef. - -2019-07-21 Jan Nieuwenhuizen - - mescc: Add 70-struct-post.c test with fix. - * lib/tests/scaffold/70-struct-post.c: New file. - * build-aux/check-mescc.sh (TESTS): Add it. - * module/mescc/compile.scm (expr->register): Use type size for rank - 0 (WAS: 1). - - mescc: Add 70-struct-short-enum-init.c test with fix. - * module/mescc/compile.scm (init->data): Respect type of size. - * lib/tests/scaffold/70-struct-short-enum-init.c: New file. - * lib/tests/scaffold/70-struct-short-enum-init.stdout: New file. - * build-aux/check-mescc.sh (TESTS): Add test. - -2019-07-20 Jan Nieuwenhuizen - - mescc: Add 70-array-in-struct-init.c test with fix. - * lib/tests/scaffold/70-array-in-struct-init.c: New file. - * lib/tests/scaffold/70-array-in-struct-init.stdout: New file. - * build-aux/check-mescc.sh (TESTS): Add test. - * module/mescc/compile.scm (array-init-element->data): Recurse for - elements instead of using init->data. Support array fields. - -2019-07-19 Jan Nieuwenhuizen - - mes: Remove broken copy of simple-format. - * mes/module/mes/simple-format.mes: New file. - * mes/module/mes/guile.mes: Use it. - (with-output-to-string, simple-format): Remove broken copies. - * mes/module/mes/display.mes (with-output-to-string, simple-format, - format): Remove. - -2019-07-05 Danny Milosavljevic - - Fix remainder handling. - * mes/module/mes/scm.mes (number->string): Fix remainder handling. - * build-aux/check-mescc.sh (XFAIL_TESTS): Remove - lib/tests/scaffold/60-math.c. - -2019-07-09 Jan Nieuwenhuizen - - Revert "test: Disable 60-math.c test." - This reverts commit bbe6576a66a520d429bb3ec84120ffcce88480bf. - - test: Disable 60-math.c test. - * build-aux/check-mescc.sh (TESTS): Remove - lib/tests/scaffold/60-math.c. - (BROKEN_TESTS): Add it. - -2019-07-07 Jan Nieuwenhuizen - - build: Resurrect bootstrap.sh. - * build-aux/connfigure-lib.sh: Split from build-lib.sh - * build-aux/build-lib.sh: Include it. - * build-aux/bootstrap.sh.in: New file. - * configure.sh: Substitute it. - -2019-07-08 Jan Nieuwenhuizen - - mescc: Use basename of input as default output name. - * module/mescc/mescc.scm (mescc:preprocess, mescc:compile, - mescc:assemble, M1->hex2): Use basename of input as default output name. - -2019-07-06 Jan Nieuwenhuizen - - build: Handle gcc with --pie-by-default. - This fixes upgrading to debian-hurd-20190220.img. - - * build-aux/build.sh.in (CFLAGS): Add -static. Fixes using gcc - compiled with --pie-by-default - * build-aux/check.sh.in (CFLAGS): Likewise. - * module/mescc.scm (parse-opts): Ignore -no-pie, -static. - -2019-07-08 Jan Nieuwenhuizen - - test: Split-off broken 72-typedef-struct-def-local. - * lib/tests/scaffold/72-typedef-struct-def-local.c: New file. - * lib/tests/scaffold/72-typedef-struct-def.c: Remove local bit. - * build-aux/check-mescc.sh (TESTS): Add it. - (XFAIL_TESTS)[mescc]: Add lib/tests/scaffold/72-typedef-struct-def.c. - -2019-06-28 Jan Nieuwenhuizen - - test: Fix open-read test. - * build-aux/pre-inst-env.in (srcdir): Remove. - (abs_top_srcdir, abs_top_builddir): Export. - * lib/tests/posix/50-open-read.c (main): Use abs_top_srcdir. - -2019-06-26 Jan Nieuwenhuizen - - test: Add open-read test. - * build-aux/test-c.sh: Support running by hand. - * lib/tests/posix/50-open-read.c: New test. - * lib/tests/posix/data/open-read: New file. - * build-aux/check-mescc.sh (TESTS): Add it. - - test: Enable argv test, run tests with arguments. - * build-aux/check-mescc.sh (TESTS): Enable 54-argv.c - (XFAIL_TESTS): Remove it. - * build-aux/test-c.sh: Invoke test with options. - * lib/tests/scaffold/54-argc.c: Update. - -2019-06-25 Jan Nieuwenhuizen - - mescc: Mes C library: Move common getcwd, open bits to posix. - * lib/linux/_getcwd.c: Rename from getcwd.c. - * lib/linux/_open3.c: Rename from open.c. - * lib/posix/getcwd.c: New file with bits from ../linux/getcwd.c. - * lib/posix/open.c: New file with bits ../linux/getcwd.c. - * build-aux/build-lib.sh (libc_SOURCES): Update. - -2019-06-24 Jan Nieuwenhuizen - - mescc: Mes C Library: Move posix bits to read. - * lib/linux/_read.c: Rename from read. - * lib/posix/read.c: New file. - * build-aux/build-lib.sh (libc_SOURCES): Update. - * include/mes/lib.h (_read): Declare. - -2019-06-25 Jan Nieuwenhuizen - - porting: Avoid failing in scaffold build. - * build-aux/build-scaffold.sh: Do not fail when using courage. - - build: Use bash if available to avoid dash problems. - * configure: Set SHELL to bash. - * configure.sh: Likewise. - * build-aux/test-suite.sh (TEST_LOGS): - * build-aux/export.make: Export SHELL. - * build-aux/config.sh.in (SHELL): New substitute, export. - * build-aux/config.make.in (SHELL): New substitute. - * build-aux/GNUmakefile.in (build, check, install, uninstall): Use - $SHELL to avoid dash problems. - * build-aux/check-mescc.sh: Likewise. - * build-aux/build.sh.in: Likewise. - * build-aux/check-mes.sh: Likewise. - * build-aux/check.sh.in: Likewise. - - test: Oops, uncomment some commented-out tests. - * lib/tests/scaffold/55-char-array.c: Uncomment. - * lib/tests/scaffold/72-typedef-struct-def.c: Likewise. - - build: Improve --with-system-libc support. - * build-aux/build-lib.sh: Avoid building libc for --with-system-libc. - Make libmes richer. - build-aux/check-mescc.sh: Enable 50-malloc test. - * include/dirstream.h: Use HAVE_DIRSTREAM_H to cater for non-existing - dirstream.h. - * include/grp.h[SYSTEM_LIBC]: Typo. - * include/mes/lib.h (__brk, __call_at_exit)[SYSTEM_LIBC]: Declare. - * include/stdlib.h (comparison_fn_t)[SYSTEM_LIBC]: Declare. - * include/time.h (mktime): Return time_t. - * lib/posix/isatty.c [SYSTEM_LIBC]: Do not (re)declare termios. - * lib/stub/mktime.c (mktime): Return time_t. - * lib/tests/scaffold/41-ternary.c (main): Remove assumption that - locals are initialized. - * lib/tests/scaffold/70-stdarg.c: Cater for SYSTEM_LIBC. - * lib/tests/setjmp/80-setjmp.c: Declare jmp buf. - * lib/*/*.c: Add missing mes/lib.h, errno.h includes. - -2019-06-23 Jan Nieuwenhuizen - - porting: Add x86_64 scaffold: exit and write in assembly. - * lib/x86_64-mes-gcc/exit-42.S: New file. - * lib/x86_64-mes-gcc/hello-mes.S: New file. - * lib/x86_64-mes/elf64-0exit-42.hex2: New file. - * lib/x86_64-mes/elf64-0hello-mes.hex2: New file. - * lib/x86_64-mes/elf64-body-exit-42.hex2: Rewrite.. - * lib/x86_64-mes/elf64-body-hello-mes.hex2: - * lib/x86_64-mes/elf64-0header.hex2: Fix copyright header. - * lib/x86_64-mes/elf64-header.hex2: Likewise. - * lib/x86_64-mes/elf-0footer.hex2: Remove. - -2019-06-13 Jan Nieuwenhuizen - - porting: Add x86 scaffold: exit and write in assembly. - * lib/x86-mes-gcc/exit-42.S: New file. - * lib/x86-mes-gcc/hello-mes.S: New file. - * lib/x86-mes/elf32-0exit-42.hex2: New file. - * lib/x86-mes/elf32-0hello-mes.hex2: New file. - * lib/x86-mes/elf32-body-hello-mes.hex2: New file. - * lib/x86-mes/elf32-body-exit-42.hex2: Rewrite. - * lib/x86-mes/elf32-header.hex2: Fix copyright header. - * lib/x86-mes/elf32-0header.hex2: Likewise. - * lib/x86-mes/elf-0footer.hex2: Remove. - * build-aux/build-scaffold.sh: Build them. - * .dir-locals.el (asm-mode): Allow TABs. - * .gitignore: Reserve .S assembly sources, i.e. manual written - assembly. Update build system. - * module/mescc/mescc.scm: Update. - * build-aux/build-lib.sh: Update. - * scripts/ar.in: Update. - -2019-06-10 Jan Nieuwenhuizen - - make check: Do not re-check unless recheck=true. - * build-aux/check-mescc.sh (recheck): New variable. - * build-aux/check.sh.in (recheck): New variable. - * build-aux/test-suite.sh (TEST_LOGS): Use it. - -2019-05-22 Jan Nieuwenhuizen - - build: Cater for ARM. - * configure: Cater for ARM. - * configure.sh: Likewise - * build-aux/GNUmakefile.in: Likewise. - * build-aux/bootstrap.sh.in: Likewise. - * module/mescc.scm (parse-opts): Likewise. - * src/mes.c (mes_environment): Likewise. - * build-aux/build.sh.in: Likewise. - * build-aux/config.sh Likewise. - * build-aux/install.sh.in: Likewise. - * module/mes/guile.scm: Likewise. - * scripts/mescc.scm.in: Likewise. - * module/mescc/mescc.scm (arch-get): New function. - (arch-get-info): New function. - (arch-get-define): New function. - (arch-get-m1-options): New function. - (arch-get-Architecture): New function. - (mescc:preprocess c->info, E->info, M1->hex2, hex2->elf, - M1->blood-elf, arch-find): Use them. - -2019-06-10 Jan Nieuwenhuizen - - mescc: Drop $@-workaround. - * scripts/mescc.in: Drop $@-workaround. - -2019-06-08 Jan Nieuwenhuizen - - build: Simplify. - core: Make mes src/ c files separate compilation units. - - * include/mes/constants.h: New file. - * include/mes/macros.h: New file. - * include/mes/mes.h: New file. - * src/gc.c: Update. - * src/hash.c: Update. - * src/lib.c: Update. - * src/math.c: Update. - * src/mes.c: Update. - * src/module.c: Update. - * src/posix.c: Update. - * src/reader.c: Update. - * src/string.c: Update. - * src/struct.c: Update. - * src/vector.c: Update. - - mes: Update datadir. - - * src/mes.c (g_datadir): New global. - (open_boot): Rename from read_boot. - (read_boot): New function. - * mes/module/mes/boot-0.scm: Move from boot-0.scm.in - * configure: Update. - * configure.sh: Update. - - mescc: Create libraries from separate files. - - * .gitignore: Update. - * build-aux/bootstrap-mes.sh: Remove. - * build-aux/bootstrap.sh.in: Remove. - * build-aux/build-guile.sh: Update. - * build-aux/build-mes.sh: Update. - * build-aux/build-scaffold.sh: New file. - * build-aux/build.sh.in: Update. - * build-aux/cc.sh: Update. - * build-aux/check-tcc.sh: Remove. - * build-aux/config.sh.in: New file. - * build-aux/config.sh: Remove. - * build-aux/install.sh.in: Update. - * build-aux/test-boot.sh: New file. - * build-aux/test-c.sh: New file. - * build-aux/test-driver: New file. - * build-aux/test-suite.sh: New file. - * build-aux/trace.sh: Update. - * build-aux/uninstall.sh.in: Update. - * configure: Update. - * configure.sh: Update. - * lib/linux/x86-mes-mescc/crt1.c: Move from lib/linux/x86-mes. - * lib/linux/x86-mes-mescc/mini.c: Likewise. - * lib/linux/x86_64-mes-mescc/crt1.c: Move from lib/linux/x86_64-mes. - * lib/linux/x86_64-mes-mescc/mini.c: Likewise. - * lib/linux/x86-mes-gcc/syscall.c: Rename from mes.c. - * lib/linux/x86-mes-mescc/syscall.c: Likewise. - * lib/linux/x86_64-mes-gcc/syscall.c: Likewise. - * lib/linux/x86_64-mes-mescc/syscall.c: Likewise. - * lib/mes/mes_open.c: Include config.h. - * lib/tests/stdio/70-printf-hello.c: Likewise. - * lib/tests/stdio/70-printf-simple.c: Likewise. - * scaffold/gc-test.sh: New file. - * simple.sh: Update. - -2019-06-08 Jan Nieuwenhuizen - - test: Move scaffold/tests into lib. - * lib/tests/scaffold: Move from scaffold/tests. - * scaffold/tests: Remove. - * build-aux/check-mescc.sh: Update. - -2019-05-10 Danny Milosavljevic - - build: Make "GUILEC" compilation status output more verbose (print full path). - * build-aux/build-guile.sh: Make "GUILEC" compilation status output more - verbose (print full path). - -2019-05-29 Jan Nieuwenhuizen - - build: Fix --disable-silent-rules. Thanks ng0! - * configure (main): Substitute V as string value. - * build-aux/trace.sh: Typo. Fixes using V=0. - * build-aux/config.status.in (V): New substitute. - * build-aux/config.make.in (V): New substiute. - - mescc: Use a.out as default executable name. - * module/mescc/mescc.scm (hex2->elf): Use a.out as default executable - name. - - mescc: Robustify against empty `V' in environment. - * module/mescc.scm: Robustify against empty V in environment. - -2019-05-28 Jan Nieuwenhuizen - - mescc: Fix -dumpmachine to respect -m bits selection. - * module/mescc.scm (parse-opts): Fix -dumpmachine to respect -m bits - selection. Also display kernel. - -2019-05-29 Jan Nieuwenhuizen - - mescc: Support single-dash options on Mes too. - * scripts/mescc.in[MES]: Add -- as separator, fixes using single-dash - options on Mes too. - - mescc: Ignore -fnobuiltin, -nostdinc for GCC compatibility. - * module/mescc.scm (parse-opts): Add -fnobuiltin, -nostdinc. - (mescc:main): Ignore them. - -2019-05-27 Jan Nieuwenhuizen - - test: Resurrect running boot tests on Guile. - * module/mes/guile.scm (keyword->string): New function. - * scaffold/boot/43-or.scm (foo): Add quoting. - * scaffold/boot/45-pass-if.scm (pass-if): Likewise. - * scaffold/boot/46-report.scm (pass-if): Likewise. - * scaffold/boot/47-pass-if-eq.scm (pass-if): Likewise. - * scaffold/boot/48-let.scm (map): Rename from map1. - * scaffold/boot/60-let-syntax-expanded.scm: Some work. - -2019-05-26 Jan Nieuwenhuizen - - mescc: Mes C Library: Fix compile warnings. - * lib/stdio/fputc.c (fputc): Oops, stream is a long. - * lib/stdlib/malloc.c (malloc): Cast to char *. FIXME - * lib/string/memchr.c (memchr): Cast to void *. - * lib/string/memcmp.c (memcmp): Add const cast. - - mescc: Mes C Library: Fixes for x86_64 crt1.c - * lib/linux/x86_64-mes/crt1.c (_start): Write only 4 bytes to int - variables __stdin, __stdout, __stderr. - -2019-05-29 Jan Nieuwenhuizen - - test: Move srfi-1 for-each and map tests to tests/srfi-1.test. - This fixes: `make check MES=guile'. - - * tests/srfi-1.test ("map 1,2", "map 2,1", "for-each 1,2", - for-each 2,1"): Move from scm.test. - * tests/scm.test ("map 1,2", "map 2,1", "for-each 1,2", - for-each 2,1"): Remove. - -2019-05-29 Jan Nieuwenhuizen - - mescc: Mes C Library: Use SYSTEM_LIBC [WAS: WITH_GLIBC]. - Run: sed -i 's,WITH_GLIBC,SYSTEM_LIBC,g' $(git grep -l WITH_GLIBC) - - * build-aux/config.sh: Update. - * include/alloca.h: Likewise. - * include/ar.h: Likewise. - * include/argz.h: Likewise. - * include/assert.h: Likewise. - * include/ctype.h: Likewise. - * include/dirent.h: Likewise. - * include/dirstream.h: Likewise. - * include/dlfcn.h: Likewise. - * include/endian.h: Likewise. - * include/errno.h: Likewise. - * include/fcntl.h: Likewise. - * include/features.h: Likewise. - * include/float.h: Likewise. - * include/getopt.h: Likewise. - * include/inttypes.h: Likewise. - * include/libgen.h: Likewise. - * include/limits.h: Likewise. - * include/linux/x86_64/syscall.h: Likewise. - * include/locale.h: Likewise. - * include/math.h: Likewise. - * include/memory.h: Likewise. - * include/mes/lib-mini.h: Likewise. - * include/pwd.h: Likewise. - * include/setjmp.h: Likewise. - * include/signal.h: Likewise. - * include/stdarg.h: Likewise. - * include/stdbool.h: Likewise. - * include/stddef.h: Likewise. - * include/stdint.h: Likewise. - * include/stdio.h: Likewise. - * include/stdlib.h: Likewise. - * include/stdnoreturn.h: Likewise. - * include/string.h: Likewise. - * include/strings.h: Likewise. - * include/sys/cdefs.h: Likewise. - * include/sys/dir.h: Likewise. - * include/sys/file.h: Likewise. - * include/sys/ioctl.h: Likewise. - * include/sys/mman.h: Likewise. - * include/sys/param.h: Likewise. - * include/sys/resource.h: Likewise. - * include/sys/select.h: Likewise. - * include/sys/stat.h: Likewise. - * include/sys/time.h: Likewise. - * include/sys/timeb.h: Likewise. - * include/sys/times.h: Likewise. - * include/sys/types.h: Likewise. - * include/sys/ucontext.h: Likewise. - * include/sys/user.h: Likewise. - * include/sys/wait.h: Likewise. - * include/termio.h: Likewise. - * include/time.h: Likewise. - * include/unistd.h: Likewise. - * lib/libmes.c: Likewise. - * lib/tests/stdio/70-printf-hello.c: Likewise. - * lib/tests/stdio/70-printf-simple.c: Likewise. - * lib/tests/stdio/80-sscanf.c: Likewise. - * lib/tests/stdlib/50-malloc.c: Likewise. - * module/mescc/preprocess.scm: Likewise. - * scaffold/cons-mes.c: Likewise. - * scaffold/lib/stdlib/malloc.c: Likewise. - * scaffold/micro-mes.c: Likewise. - * scaffold/tests/61-array.c: Likewise. - * scaffold/tiny-mes.c: Likewise. - * simple.sh: Likewise. - * src/mes.c: Likewise. - -2019-05-27 Jan Nieuwenhuizen - - mes: Bugfix for search-path. Fixes running MesCC on Guile. - * module/mescc/mescc.scm (arch-find): Also look in cwd. - * mes/module/mes/posix.mes (search-path): Do not look in cwd. - -2019-05-25 Jan Nieuwenhuizen - - mescc: Use named --architecture switch for upcoming mescc-tools 0.6. - * module/mescc/mescc.scm (M1->hex2): Use named --architecture switch for - upcoming mescc-tools 0.6. - (hex2->elf): Likewise. - * build-aux/bootstrap-mes.sh: Likewise. - * build-aux/bootstrap.sh.in: Likewise. - * build-aux/config.sh: Likewise. - -2019-05-27 Jan Nieuwenhuizen - - mes: Identify 64-bit bug when compiled with MesCC. - * src/math.c (divide): Add divide-by-zero error. - (modulo): Likewise. - * module/mes/guile.scm (%compiler): New variable. - * module/mescc/M1.scm (mesc?): New variable. - (hex2:immediate8): Use it to avoid divide-by-zero error. - * HACKING (Bugs): Add it. - - mes: Make debug levels 4 and 5 usable. - * HACKING: Update debug policy. - * lib/linux/read.c (read): Print read in level 5. - * src/mes.c (eval_apply): Print module in level 6. - (main): Likewise. Remove redundant module printing. - * src/gc.c (gc): Print symbols in level 6. - -2019-05-18 Jan Nieuwenhuizen - - mes: Run build-aux/indent.sh. - * src/mes.c: Re-indent. - * src: Likewise. - * include: Likewise. - * lib: Likewise. - * scaffold: Likewise. - -2019-05-12 Jan Nieuwenhuizen - - mes: Grand indent: prepare. - * build-aux/indent.sh: New file. - * include/mes/builtins.h: Move from src/builtins.h. - * include/fcntl.h: Use // *INDENT-OFF* to prevent indent breakage. - * include/locale.h: Likewise. - * include/signal.h: Likewise. - * include/sys/stat.h: Likewise. - * include/sys/user.h: Likewise. - * lib/linux/x86-mes-gcc/crt0.c: Likewise. - * lib/linux/x86-mes-gcc/crt1.c: Likewise. - * lib/linux/x86-mes-gcc/mes.c: Likewise. - * lib/linux/x86-mes-gcc/mini.c: Likewise. - * lib/linux/x86_64-mes-gcc/crt0.c: Likewise. - * lib/linux/x86_64-mes-gcc/crt1.c: Likewise. - * lib/linux/x86_64-mes-gcc/mes.c: Likewise. - * lib/linux/x86_64-mes-gcc/mini.c: Likewise. - * lib/x86_64-mes-gcc/setjmp.c: Likewise. - * src/mes.c: Likewise. - * src/reader.c: Likewise. - -2019-05-15 Jan (janneke) Nieuwenhuizen - - mes: Support -c EXPR. - * mes/module/mes/boot-0.scm.in: Support -c EXPR. - - mes: Support optional port on read. - * mes/module/mes/scm.mes (read): Support optional port on read. - - build: Fix mescc installation on Debian. - * build-aux/pre-inst-env.in: Set bindir. - * scripts/mescc.in: Fix configure/prefix issues. - * mes/module/mes/boot-01.scm (integer->char): Remove. - (newline): Use "\n". - (%moduledir): Use string-append. - * mes/module/mes/boot-02.scm: Likewise. - * mes/module/mes/boot-0.scm: Likewise. - - build: Debian make check and install fixes. - * configure (main): Oops, typo: mandir uses --infodir. - * build-aux/check.sh.in: Run check-mescc.sh with bash. - * build-aux/config.sh (CFLAGS, CPPFLAGS, HEX2FLAGS, LDFLAGS, M1FLAGS): - unset. - * build-aux/install.sh.in: Use BASHOPTS to check for bash; on Debian - dash is used and has $SHELL=/bin/bash. Use ${DESTDIR}@... - -2019-05-14 Jan Nieuwenhuizen - - mes: Rename strings.c. - * src/string.c: Rename from src/strings.c. - * src/mes.c - * build-aux/snarf.sh: Update. - -2019-05-12 Jan Nieuwenhuizen - - mescc: Mes C Library: Use mes_open to avoid open trickery. - * include/mes/lib.h (mes_open): Declare. - * lib/libmes.c[WITH_GLIBC]: Remove open undefine. - (mes_open)[!WITH_GLIBC]: New function. - * src/mes.c (open_boot): Use mes_open. - * src/posix.c (open_input_file): Likewise. - (open_output_file): Likewise. - - mescc: Mes C Library: Remove dead code. - * lib/glibc.c: Remove. - * lib/abtol.c: Remove. - - mescc: Mes C Library: Explode linux/tcc.c. - * lib/linux/close.c: New file. - * lib/linux/lseek.c: New file. - * lib/linux/rmdir.c: New file. - * lib/linux/stat.c: New file. - * lib/linux/tcc.c: Include them. - (close, lseek, rmdir, stat): Remove. - - mescc: Mes C Library: Explode linux/libc.c. - * lib/linux/access.c: New file. - * lib/linux/brk.c: New file. - * lib/linux/chmod.c: New file. - * lib/linux/dup.c: New file. - * lib/linux/dup2.c: New file. - * lib/linux/execve.c: New file. - * lib/linux/fork.c: New file. - * lib/linux/fsync.c: New file. - * lib/linux/getcwd.c: New file. - * lib/linux/ioctl.c: New file. - * lib/linux/libc.c: New file. - * lib/linux/open.c: New file. - * lib/linux/read.c: New file. - * lib/linux/unlink.c: New file. - * lib/linux/waitpid.c: New file. - * lib/linux/libc.c: Include them. - (access, brk, chmod, dup, dup2, execve, fork, fsync, getcwd, ioctl, - libc, open, read, unlink, waitpid): Remove. - -2019-05-11 Jan Nieuwenhuizen - - mescc: Mes C Library: Explode linux/gnu.c. - * lib/linux/chdir.c: New file. - * lib/linux/fcntl.c: New file. - * lib/linux/fstat.c: New file. - * lib/linux/getdents.c: New file. - * lib/linux/getegid.c: New file. - * lib/linux/geteuid.c: New file. - * lib/linux/getgid.c: New file. - * lib/linux/getpid.c: New file. - * lib/linux/getppid.c: New file. - * lib/linux/getrusage.c: New file. - * lib/linux/getuid.c: New file. - * lib/linux/kill.c: New file. - * lib/linux/link.c: New file. - * lib/linux/lstat.c: New file. - * lib/linux/mkdir.c: New file. - * lib/linux/nanosleep.c: New file. - * lib/linux/pipe.c: New file. - * lib/linux/rename.c: New file. - * lib/linux/setgid.c: New file. - * lib/linux/settimer.c: New file. - * lib/linux/setuid.c: New file. - * lib/linux/signal.c: New file. - * lib/linux/sigprogmask.c: New file. - * lib/linux/gnu.c: Include them. - (chdir, fcntl, fstat, getdents, getegid, geteuid, getgid, getpid, - getppid, getrusage, getuid, kill, link, lstat, mkdir, munmap, - nanosleep, pipe, rename, setgid, settimer, setuid, signal, - sigprogmask): Remove. - -2019-05-09 Jan Nieuwenhuizen - - mescc: Mes C Library: Explode libc-mini.c. - * lib/posix/write.c: New file. - * lib/linux/libc-mini.c: Include it. - (write): Remove. - * lib/tests/mes/30-oputs.c: Remove dead code. - -2019-05-07 Jan Nieuwenhuizen - - mescc: Mes C Library: Cleanup includes. - * include/mes/lib-mini.h: Move from include/libmes-mini.h. Update users. - * include/mes/lib.h: Move from include/libmes.h. Update users. - -2019-05-05 Jan Nieuwenhuizen - - mescc: Support -nodefaultlibs, -nostartfiles, -nostdlib. - * module/mescc.scm (parse-opts): Parse -nodefaultlibs, -nostartfiles, -nostdlib. - * module/mescc/mescc.scm (mescc:link): Handle -nodefaultlibs, -nostdlib. - (hex2->elf): Handle -nostartfiles, -nostdlib. - -2019-05-03 Jan Nieuwenhuizen - - build: Do not install test binaries. - * build-aux/install.sh.in: Do not install test binaries. - -2019-05-05 Jan Nieuwenhuizen - - mes: m2: Move force-output to Scheme. - * mes/module/mes/posix.mes (force-output): New function. - * src/posix.c (force_output): Remove. - * src/mes.c (mes_builtins): Remove adding of force-output. - -2019-03-23 Jan Nieuwenhuizen - - build: M2-Planet first-aid, simplest build script possible. - * simple.sh: New file. - -2019-03-27 Jan Nieuwenhuizen - - .dir-locals.el: Assert default GNU settings. - * .dir-locals.el: Assert default GNU settings. - - Fix typo in stage0 copyright headers. - * lib/x86-mes/elf-0footer.hex2: Fix typo. - * lib/x86-mes/elf32-0header.hex2: Fix typo. - * lib/x86-mes/elf32-body-exit-42.hex2: Fix typo. - * lib/x86-mes/elf32-footer-single-main.hex2: Fix typo. - * lib/x86-mes/elf32-header.hex2: Fix typo. - * lib/x86_64-mes/elf-0footer.hex2: Fix typo. - * lib/x86_64-mes/elf64-0header.hex2: Fix typo. - * lib/x86_64-mes/elf64-body-exit-42.hex2: Fix typo. - * lib/x86_64-mes/elf64-footer-single-main.hex2: Fix typo. - * lib/x86_64-mes/elf64-header.hex2: Fix typo. - -2019-03-16 Jan Nieuwenhuizen - - mescc: Mes C Library: Fix ungetc. - * include/sys/resource.h (OPEN_MAX, RLIMIT_NOFILE): New macro. - * lib/libc.c: Add memset.c include. - * lib/libc+tcc.c: Remove memset.c include. - * lib/linux/tcc.c (close): - * lib/mes/fdgetc.c (__ungetc_buf): New global. - (_ungetc_pos, _ungetc_fd, _ungetc_buf): Remove. Update users. - * scaffold/tests/65-read.c: Update. - -2019-03-23 Jan Nieuwenhuizen - - build: Replace POSIX, posix_p by WITH_GLIBC, wip_glibc_p. - * build-aux/build-mes.sh: Replace POSIX, posix_p by WITH_GLIBC, wip_glibc_p. - * build-aux/build.sh.in: Likewise. - * build-aux/cc.sh (link): Likewise. - * build-aux/config.make.in (with_glibc_p): Likewise. - * build-aux/config.sh (libc): Likewise. - (CPPFLAGS): Likewise. - * build-aux/config.status.in (with_glibc_p): Likewise. - * build-aux/test.sh: Likewise. - * configure (main): Likewise. - * configure.sh (subst): Likewise. - (mes_arch): Likewise. - * include/libmes.h: Likewise. - * include/linux/x86_64/syscall.h: Likewise. - * lib/libmes.c: Likewise. - * lib/tests/stdio/70-printf-hello.c (main): Likewise. - * lib/tests/stdio/70-printf-simple.c (main): Likewise. - * lib/tests/stdio/80-sscanf.c (main): Likewise. - * lib/tests/stdlib/50-malloc.c: Likewise. - * module/mescc/preprocess.scm (c99-input->full-ast): Likewise. - * scaffold/cons-mes.c: Likewise. - * scaffold/lib/stdlib/malloc.c: Likewise. - * scaffold/micro-mes.c: Likewise. - * scaffold/tests/61-array.c (getenv): Likewise. - * scaffold/tiny-mes.c: Likewise. - * src/mes.c: Likewise. - -2019-03-03 Jan Nieuwenhuizen - - mescc: Mes C Library: Fix compile warnings. - * include/libmes.h (dtoab, itoa, ltoa, ntoab, ultoa, utoa): Return - char* (WAS: char const*). - * lib/*/*c: Update, add missing includes. - -2019-03-02 Jan Nieuwenhuizen - - mescc: Mes C Library: Fix isatty. - * lib/posix/isatty.c (isatty): Test ioctl == 0. - * mes/module/mes/boot-0.scm.in: Update: no tty?: read from stdin. - - test: 50-getenv: Test PATH, allow to fail. - * lib/tests/posix/50-getenv.c (main): Test PATH. - * build-aux/check-mescc.sh (broken): Add 50-getenv. - - mes: Support map and for-each with lists of unequal length. - * mes/module/mes/base.mes (map): Support lists of unequal length. - * mes/module/mes/scm.mes (for-each): Likewise. - * module/mescc/compile.scm (expr->register): Fix compile warning. - * tests/scm.test ("map 1,2", "map 2,1", "for-each 1,2", "for-each - 2,1": Test it. - - mescc: Mes C Library: Use __ as global internal prefix. - * include/libmes-mini.h (g_stdin, g_stdout, g_stderr): Rename to - __stdin, __stdout, __stderr. Update users. - -2019-02-28 Jan Nieuwenhuizen - - mescc: ctype.h: Add missing prototypes. - * include/ctype.h: Add missing prototypes. - - mescc: Mes C Library: Bugfix for tcc-compiled exit assembly. - * lib/linux/x86-mes-gcc/mini.c (_exit): Add clobbered registers %eax, - %ebx. Fixes always exit 1. - -2019-02-25 Jan Nieuwenhuizen - - test: Remove special characters from files. - * scaffold/tests/06-call-not-1.c: Rename from 06-call-!1.c. - * scaffold/tests/06-not-call-1.c: Rename from 06-!call-1.c. - * scaffold/tests/12-if-eq.c: Rename from 12-if-==.c. - * scaffold/tests/13-if-neq.c: Rename from 13-if-!=.c. - * scaffold/tests/15-if-not-f.c: Rename from 15-if-!f.c. - * scaffold/tests/21-char-array-simple.c: Rename from 21-char[]-simple.c. - * scaffold/tests/21-char-array.c: Rename from 21-char[].c. - * scaffold/tests/22-while-char-array.c: Rename from 22-while-char[].c. - * scaffold/tests/41-ternary.c: Rename from 41-?.c. - * scaffold/tests/7u-call-ternary.c: Rename from 7u-call-?.c. - * scaffold/tests/7u-ternary-expression.c: Rename from 7u-?-expression.c. - * build-aux/check-mescc.sh (tests): Update. - - build: Support building with Gash. - * build-aux/check-mes.sh: Replace unspported $((..)) by $(expr ...). - * build-aux/check-mescc.sh: Likewise. - * build-aux/check-tcc.sh: Likewise. - -2019-02-18 Jan Nieuwenhuizen - - build: Configure: remove temp files. - * configure (gulp-pipe*): Remove .error. - (check-header-c): Remove .config.c. - (check-compile-c): Likewise. - (check-link-c): Likewise. - - build: Remove mini-mes. - * scaffold/mini-mes.c: Remove. - * build-aux/build-mes.sh: Remove commented build instructions. - * .gitignore: Remove pattern. - -2019-02-24 Jan Nieuwenhuizen - - mescc: Mes C Library: Initialize streams in crt1. - * lib/linux/x86-mes-gcc/crt1.c: Initialize streams. - * lib/linux/x86-mes/crt1.c: Likewise. - * lib/linux/x86_64-mes-gcc/crt1.c: Likewise. - * lib/linux/x86_64-mes/crt1.c: Likewise. - * src/mes.c (main): Remove initialization of streams. - - mescc: Mes C Library: Populate with function tests from scaffold. - * .gitignore: Update. - * build-aux/bootstrap.sh.in: Update. - * build-aux/build-mes.sh: Update. - * build-aux/check-mescc.sh: Update. - * lib/tests/assert/50-assert.c: Move from scaffold/tests/50-assert.c. - * lib/tests/dirent/90-readdir.c: Move from scaffold/tests/99-readdir.c. - * lib/tests/dirent/readdir.dir: Move from scaffold/tests/readdir.dir. - * lib/tests/io/90-stat.c: Move from scaffold/tests/92-stat.c. - * lib/tests/mes/30-oputs.c: Move from scaffold/tests/31-oputs.c. - * lib/tests/mes/50-itoa.c: Move from scaffold/tests/51-itoa.c. - * lib/tests/posix/90-unsetenv.c: Move from scaffold/tests/94-unsetenv.c. - * lib/tests/setjmp/80-setjmp.c: Move from scaffold/tests/80-setjmp.c. - * lib/tests/signal/90-signal.c: Move from scaffold/tests/95-signal.c. - * lib/tests/stdio/70-printf-hello.c: Move from scaffold/tests/70-printf-hello.c. - * lib/tests/stdio/70-printf-simple.c: Move from scaffold/tests/70-printf-simple.c. - * lib/tests/stdio/70-printf.c: Move from scaffold/tests/70-printf.c. - * lib/tests/stdio/80-sscanf.c: Move from scaffold/tests/87-sscanf.c. - * lib/tests/stdio/90-fopen-append.c: Move from scaffold/tests/98-fopen.c. - * lib/tests/stdio/90-fopen.c: Move from scaffold/tests/97-fopen.c. - * lib/tests/stdio/90-fread-fwrite.c: Move from scaffold/tests/93-fread-fwrite.c. - * lib/tests/stdio/90-fseek.c: Move from scaffold/tests/91-fseek.c. - * lib/tests/stdlib/50-getenv.c: Move from lib/tests/stdlib/getenv.c. - * lib/tests/stdlib/50-malloc.c: Move from lib/tests/stdlib/malloc.c. - * lib/tests/stdlib/70-strtoull.c: Move from scaffold/tests/7j-strtoull.c. - * lib/tests/stdlib/80-qsort-dupes.c: Move from scaffold/tests/81-qsort-dupes.c. - * lib/tests/stdlib/80-qsort.c: Move from scaffold/tests/81-qsort.c. - * lib/tests/stdlib/90-strtol.c: Move from scaffold/tests/96-strto.c. - * lib/tests/string/30-strlen.c: Move from scaffold/tests/30-strlen.c. - * lib/tests/string/50-strcmp.c: Move from scaffold/tests/51-strcmp.c. - * lib/tests/string/50-strcpy.c: Move from scaffold/tests/53-strcpy.c. - * lib/tests/string/50-strncmp.c: Move from scaffold/tests/51-strncmp.c. - * lib/tests/string/70-strchr.c: Move from scaffold/tests/70-strchr.c. - * lib/tests/string/80-strncpy.c: Move from scaffold/tests/86-strncpy.c. - * lib/tests/string/80-strrchr.c: Move from scaffold/tests/88-strrchr.c. - * lib/tests/string/90-snprintf.c: Move from scaffold/tests/9a-snprintf.c. - * lib/tests/string/90-strpbrk.c: Move from scaffold/tests/90-strpbrk.c. - * lib/tests/string/90-strspn.c: Move from scaffold/tests/90-strspn.c. - -2019-02-24 Jan Nieuwenhuizen - - mescc: Mes C Library: Start test suite. - TODO: move strict libc tests from scaffold/test/* here. - - * lib/tests/stdlib/getenv.c: New file. - * lib/tests/stdlib/malloc.c: Move from scaffold. - * build-aux/bootstrap.sh.in: Built them. - * build-aux/build-mes.sh: Likewise. - -2019-02-24 Jan Nieuwenhuizen - - mes: Remove stray debugging newline output. - * mes/module/mes/guile.mes (open-input-file): Move debugging newline - into debug clause. - - mescc: Mes C Library: Fix brk return type compare. - * lib/stdlib/malloc.c (malloc): Fix brk return type compare. - - core: Rename load_env to read_boot. - * src/mes.c (read_boot): Rename from load_env; Update users. - (open_boot): Rename from load_boot; Update users. - -2019-02-10 Jan Nieuwenhuizen - - core: Initialize g_buf dynamically, add MES_STRING_MAX override. - * src/mes.c (g_buf, MAX_STRING): Move from strings.c. - (gc_init_cells): Initialize g_buf dynamically. - (main): Add environment override MES_MAX_STRING for MAX_STRING. - * doc/mes.texi (Environment Variables): Document it. - -2019-02-03 Jan Nieuwenhuizen - - mes-snarf: rewrite for development-time snarfing - * build-aux/mes-snarf.scm (%gcc?): Remove. - (symbol->header): Produce code for src/builtins.h. - (symbol->source, symbol->names, function->environment): Remove. - (snarf-symbols): Rewrite, snarf from init_symbol (...). - (function->source): Produce code to be manually put into - (main): Remove --mes option. - -2019-02-15 Jan Nieuwenhuizen - - core: Resurrect POSIX build. Thanks, gio! - * lib/libmes.c[POSIX]: Define and initialize g_stdin, g_stdout and - g_stderr that were moved to crt1 for non-POSIX builds. - * src/mes.c[POSIX]: Remove struct-initialisation exceptions. - -2019-01-04 Jan Nieuwenhuizen - - core: Remove struct definitions for builtins, drop snarfing. - After making a change to the list of builtin functions, run - - cat src/*.i - - and move the into - - src/mes.c:mes_builtins () - - and, or also after changing the list of fixed symbols in src/mes.c:mes_symbols (), do - - cat src/*.h > src/builtins.h - - * build-aux/build.sh.in: Remove snarfing. - * build-aux/bootstrap.sh.in: Likewise. - * mes/module/mes/display.mes (display): - * mes/module/mes/type-0.mes (cell:type-alist): Remove . - (function?, builtin?): Remove. - * src/builtins.h: New file. - * src/mes.c (TFUNCTION): Remove. - (struct function): Remove. - (apply_builtin): Rewrite from call. - (mes_builtins): Rewrite. - (init_builtin, make_builtin_type, make_builtin, builtin_name, - builtin_arity, builtin, builtin_p, builtin_printer): New function. - -2019-01-04 Jan Nieuwenhuizen - - core: Remove struct definitions for cells, drop snarfing for symbols. - * src/mes.c (init_symbol): New function. - (mes_symbols): Use it. - (scm_nil, ... scm_test): Remove. - -2018-12-27 Jan Nieuwenhuizen - - mes: Add take-while. - * mes/module/srfi/srfi-1.mes (take-while): New function. - -2018-12-26 Jan Nieuwenhuizen - - mescc: Enhance POSIX command-line support, e.g. -DFOO=1. - * module/mescc.scm (unclump-single): New function. - (main): Use it to support -DFOO=bar, and equivalent. - -2018-12-27 Jan Nieuwenhuizen - - build: Support running out-of-tree. - * build-aux/pre-inst-env.in (MES_PREFIX): Use absolute name. - - core: Remove string debugging. - * src/strings.c (make_bytes, make_string, string_equal_p, - symbol_to_string, symbol_to_keyword, make_symbol): Remove string - debugging. - - core: Remove --dump, --load. - * mes/module/mes/boot-0.scm.in (tty?): Remove --dump, --load. - * src/mes.c (bload_env): Remove. - * src/reader.c (dump): Remove. - -2018-12-16 Jan Nieuwenhuizen - - doc: Post-release update. - * doc/announce/ANNOUNCE-0.19: Update. - - Release 0.19. - * configure (VERSION): Update to 0.19. - (main): Likewise. - * configure.sh (VERSION): Likewise. - * guix/git/mes.scm (mes, mes.git): Likewise. - -2018-10-20 Jan Nieuwenhuizen - - doc: Release update. - * AUTHORS: Update. - * HACKING: Update. - * NEWS: Update. - * doc/mes.guix: Update. - * scripts/mescc.in: Update. - * mes/module/mes/boot-0.scm.in: Update. - * doc/announce/ANNOUNCE-0.19: New file. - -2018-12-15 Jan Nieuwenhuizen - - mes: assq-ref, assoc-ref: Support alist == #f. - * mes/module/mes/scm.mes (assq-ref): Support alist == #f. - (assoc-ref): Likewise. - - core: Bump MAX_STRING to 524288 - * src/strings.c (MAX_STRING): Bump to 524288. - (assert_max_string): New function. - (list_to_cstring, string_append, read_string): Use it. - * src/reader.c (reader_read_string): Use it. - -2018-12-14 Jan Nieuwenhuizen - - mescc: Support Bash: Add getppid. - * lib/linux/gnu.c (getppid): New function. - * include/linux/x86/syscall.h (SYS_getppid): New macro. - * include/linux/x86_64/syscall.h (SYS_getppid): New macro. - - mescc: Support bash: Add sigdelset stub. - * lib/stub/sigdelset.c (sigdelset): New stub. - * lib/libc+gnu.c: Include it. - -2018-12-07 Jan Nieuwenhuizen - - mescc: getcwd: Support getcwd (0, 0) GNU extension. - * lib/linux/libc.c (_getcwd): Rename from getcwd. - (_getcwd): New function. Support getcwd (0, 0) GNU extension. - -2018-12-02 Jan Nieuwenhuizen - - mescc: Replace \r in comments. - * module/mescc/compile.scm (ast->comment): Replace \r in comments. - -2018-11-24 Jan Nieuwenhuizen - - build: Support building with Gash. - * build-aux/install.sh: Replace variables with substitution. - * build-aux/bootstrap.sh: New file. - * configure: Substitute it. - * configure.sh: Likewise. Be friendly to Gash. - * .gitignore: Ignore it. - -2018-11-25 Jan Nieuwenhuizen - - mescc: Run without shell. - * mes/module/mescc.mes: New file. - * module/mescc.scm: Include it. - * scripts/mescc.scm.in: New file. - * scripts/mescc.in: Use it; Make pure shell. - * configure: Substitute it. - * configure.sh: Substitute it. - * build-aux/install.sh.in: Install it. - -2018-11-15 Jan Nieuwenhuizen - - core: Add string-ref. - * src/strings.c (string_ref): New function. - * mes/module/mes/scm.mes (string-ref): Remove. - - core: Add string-length. - * src/strings.c (string_length): New function. - * mes/module/mes/scm.mes (string-length): Remove. - - core: Add string-append. - * src/strings.c (string_append): New function. - * mes/module/mes/boot-0.scm.in (string-append): Remove. - * mes/module/mes/boot-03.scm (string-append): Remove. - * scaffold/boot/50-make-string.scm (string-append): Remove. - * scaffold/boot/50-string-append.scm (string-append): Remove. - * scaffold/boot/50-string-join.scm (string-append): Remove. - * scaffold/boot/51-module.scm (string-append): Remove. - * scaffold/boot/52-define-module.scm (string-append): Remove. - * tests/macro.test (string-append): Remove. - * scaffold/boot/17-string-append.scm: Move from 50-string-append.scm. - -2018-11-11 Jan Nieuwenhuizen - - core: String as array of bytes. - * src/strings.c: New file. - * src/mes.c: Use it. Update users. - -2018-11-25 Jan Nieuwenhuizen - - mescc: Move mecmp to libc. - * lib/libc.c: Include mecmp.c. - * lib/libc+tcc.c: Remove mecmp.c include. - -2018-11-15 Jan Nieuwenhuizen - - mescc: Move memchr to libc. - * lib/libc.c: Include memchr.c. - - test: Use write instead of display. - * module/mes/test.scm (seq?, sequal?, seq2?, sless?, sequal2?): Use - write for expected, actual. - -2018-11-14 Jan Nieuwenhuizen - - core: struct_set_: Oops typo. - * src/struct.c (struct_set_x_): Oops, remove indirection. - - mes: Remove copy of make-string. - * mes/module/mes/guile.mes (make-string): Remove copy. - - mescc: Compile fixes. - * include/libmes-mini.h[WITH_GLIBC]: Do not declare strlen, write, types. - -2018-11-11 Jan Nieuwenhuizen - - mes: Oops, %moduledir debug info. - * mes/module/mes/boot-0.scm.in: Oops, %moduledir debug info. - - build: configure: Support Mes. - * configure: Support Mes. - - mes; Add read-line. - * mes/module/mes/guile.mes (read-line): New function. - - mes: dirname: Fix for absolute file names. - * mes/module/mes/guile.mes (dirname): Fix absolute files. - - mes: Add file-exists?. - * mes/module/mes/guile.mes (file-exists?): New function. - - mes: Add with-error-to-file. - * mes/module/mes/guile.mes (with-error-to-file): New function. - - mes: Add string-downcase, string-upcase, string-tokenize. - * mes/module/srfi/srfi-13.mes (string-downcase, string-upcase, - string-tokenize): New function. - - mes: Add char-downcase, char-upcase. - * mes/module/srfi/srfi-14.mes (char-downcase, char-upcase): New - function. - - mes: Add char-set:digit, char-set:lower-case, char-set:upper-case. - * mes/module/srfi/srfi-14.mes (char-set:digit, char-set:lower-case, - char-set:upper-case): New variable. - - mes: Add char-set-adjoin, char-set-complement. - * mes/module/srfi/srfi-14.mes (char-set-adjoin, char-set-complement): - New function. - - mes: system*: Support redirection. - * mes/module/mes/posix.mes (system*): Support redirection. - - core: read_string: Allow for gc. - * src/posix.c (read_char): Add optional port parameter. - (read_string): Allow for gc. - - core: Add delete_file. - * src/posix.c (delete_file): New function. - - core: Add dup, dup2. - * src/posix.c (dup_, dup2_): New function. - - core: Add getcwd. - * src/posix.c (getcwd_): New function. - - core: Support redirection of stderr. - * include/libmes-mini.h (g_stderr): New global. - * lib/mes/eputc.c (eputc): Use it. - * lib/mes/eputs.c (eputs): Likewise. - * lib/mes/oputc.c (oputc): Likewise. - * lib/mes/oputs.c (oputs): Likewise. - * src/lib.c (display_error_, write_error_): Likewise. - * src/posix.c (write_byte): Likewise. - * src/mes.c (mes_builtins): Likewise. - (main): Iniitalize g_stderr. - * src/posix.c (current_error_port, set_current_error_port): New - function. - * mes/module/mes/boot-0.scm.in (current-output-port, - current-error-port): Remove. - - core: Assert g_free in alloc. - * src/mes.c (alloc): Assert g_free. - - mescc: unlink: Move to libc. - * lib/linux/libc.c (unlink): New function. - * lib/linux/tcc.c (unlink): Remove. - - mescc: dup, dup2: Move to libc. - * lib/linux/libc.c (dup, dup2): New function. - * lib/linux/gnu.c (dup, dup2): Remove. - - mescc: getcwd: Move to libc. - * lib/linux/libc.c (getcwd): New function. - * lib/linux/tcc.c (getcwd): Remove. - -2018-11-10 Jan Nieuwenhuizen - - mescc: Support GNU make with POSIX. - * include/linux/x86/syscall.h (SYS_sigprocmask): New macro. - * include/linux/x86_64/syscall.h (SYS_rt_sigprocmask): New macro. - * include/signal.h (SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK): New macro. - (sigprocmask): Declare. - * lib/linux/gnu.c (sigprocmask): New function. - -2018-11-09 Jan Nieuwenhuizen - - mescc: Support GNU Bash. - * include/errno.h (EACCES, ENOSPC, ESPIPE): New macro. - * include/linux/x86/syscall.h (SYS_setuid, SYS_geteuid, SYS_getegid, - SYS_setgid): New macro. - * include/linux/x86_64/syscall.h: Likewise. - * include/stdint.h (LLONG_MIN, LLONG_MAX, SIZE_MAX): New macro. - * include/sys/stat.h (S_ISUID, S_ISGID, S_IXGRP, S_IXOTH, S_IRGRP, - S_IROTH, S_IWGRP, S_IWOTH, S_IRWXG, S_IRWXO): New macro. - * include/termio.h: New file. - * include/unistd.h (_POSIX_VERSION): New macro. - * lib/linux/gnu.c (geteuid, getegid, setuid, setgid): New function. - * lib/string/memchr.c: New file. - * lib/stub/getpwuid.c: New file. - * lib/stub/rand.c: New file. - * lib/stub/ttyname.c: New file. - * include/string.h (memchr): Declare. - * include/unistd.h (geteuid, getegid, setuid, setgid): Declare. - -2018-11-06 Jan Nieuwenhuizen - - build: Simplify: cater for one compiler at a time. - * build-aux/build-cc.sh: Remove. - * build-aux/build-cc32.sh: Remove. - * build-aux/build-cc64.sh: Remove. - * build-aux/build-x86_64-mes.sh: Remove. - * build-aux/cc-mes.sh: Remove. - * build-aux/cc-x86_64-mes.sh: Remove. - * build-aux/cc32-mes.sh: Remove. - * build-aux/cc64-mes.sh: Remove. - * build-aux/test64.sh: Remove. - * build-aux/bootstrap-mes.sh: New file. - * build-aux/config.make.in: New file. - * build-aux/config.status.in: New file. - * build-aux/test-cc.sh: New file. - * .gitignore: Update. - * build-aux/GNUmakefile.in: Update. - * build-aux/build-guile.sh: Update. - * build-aux/build-mes.sh: Update. - * build-aux/build.sh.in: Update. - * build-aux/cc.sh: Update. - * build-aux/check-boot.sh: Update. - * build-aux/check-mes.sh: Update. - * build-aux/check-mescc.sh: Update. - * build-aux/check-tcc.sh: Update. - * build-aux/check.sh.in: Update. - * build-aux/config.sh: Update. - * build-aux/export.make: Update. - * build-aux/install.sh.in: Update. - * build-aux/pre-inst-env.in: Update. - * build-aux/test.sh: Update. - * build-aux/uninstall.sh.in: Update. - * configure: Update. - * configure.sh: Update. - * module/mescc/i386/as.scm: Update. - * module/mescc/preprocess.scm: Update. - * module/mescc/x86_64/as.scm: Update. - * scripts/mescc.in: Update. - * tests/psyntax.test: Update. - -2018-11-09 Jan Nieuwenhuizen - - mescc: Add missing define. - * lib/x86-mes/x86.M1: Add missing define. - -2018-11-08 Jan Nieuwenhuizen - - mescc: Exit if library cannot be found. - * module/mescc/mescc.scm (arch-find): Exit upon failure. - - mescc: Accept -O, --std, -x. - * scripts/mescc.in (parse-opts): Accept -O, --std, -x. - - mescc: Support -dumpmachine. - * scripts/mescc.in (parse-opts): Support -dumpmachine. - -2018-10-22 Jan Nieuwenhuizen - - mescc: vsnprintf: Compliant implementation. - * lib/stdio/vsnprintf.c (vsnprintf): New, complient implementation, - replacing vsnprint. - * lib/stdio/vsprintf.c (vsnprint): Forward to vsnprint. - * lib/stdio/snprintf.c (snprintf): Likewise. - * scaffold/tests/9a-snprintf.c: Test it. - * build-aux/check-mescc.sh (tests): Run it. - -2018-10-21 Jan Nieuwenhuizen - - test: Add performance test. - * module/mes/test.scm (pass-if-timeout): New macro. - * tests/perform.test: New test. - * build-aux/check-mes.sh (tests): Run it. - - mes: Add ceil, floor, round, inexact->exact. - * mes/module/mes/scm.mes (ceil, floor, round, inexact->exact, - exact->inexact): New function. - - mes: read-string: Take optional port argument. - * src/posix.c (read_string): Take optional port argument. - * mes/module/mes/guile.mes (read-string): Remove. - - core: eval_apply: Order gotos according to frequency. - * src/mes.c (eval_apply): Order gotos according to frequency. - - Revert "core: eval_apply profile." - This reverts commit d61e6be0b18459a8e3c262eab448b428dc81937a. - - core: eval_apply profile. - * src/mes.c: Poor man's eval_apply profile. - -2018-10-20 Jan Nieuwenhuizen - - core: Fix displaying of closure. - * src/lib.c (display_helper): Fix displaying of closure. - - mes: Print backtrace upon exception. - * mes/module/mes/catch.mes (display-backtrace, - frame-function): New function. - (%eh): Use them. - - core: Set procedure in stack frame. - * src/mes.c (eval_apply): Set procedure in stack frame. - - core: Implement stack and frame. - * src/lib.c (frame_printer make_frame_type, make_frame, - make_stack_type, make_stack, stack_length, stack_ref): New function. - - core: Support time functions. - * lib/linux/clock_gettime.c: New file, move from gnu.c. - * lib/linux/gettimeofday.c: New file, move from tcc.c. - * lib/linux/time.c: New file, move from tcc.c. - * lib/linux/libc.c: Include them. - * lib/linux/gnu.c (clock_gettime): Remove. - * lib/linux/tcc.c (time, gettimeofday): Remove. - * include/time.h (CLOCK_PROCESS_CPUTIME_ID): New define. - * src/posix.c (init_time, current_time, gettimeofday_, - seconds_and_nanoseconds_to_long, get_internal_run_time): New function. - * src/mes.c (scm_symbol_internal_time_units_per_second): New symbol. - (main): Call init_time. - -2018-10-18 Jan Nieuwenhuizen - - core: Use hash table for symbols. - * src/mes.c (mes_symbols): Use hash table for symbols. Update users. - -2018-10-19 Jan Nieuwenhuizen - - core: Use assert before failure exit. - * src/mes.c (error): Use assert before failure exit. Helps debugging. - -2018-10-18 Jan Nieuwenhuizen - - core: Add hashq_get_handle, hash, hash_ref, hash_set_x. - * src/mes.c (scm_symbol_hashq_table, scm_symbol_record_type, - scm_symbol_module, scm_symbol_buckets, scm_symbol_size): New symbols. - Update users. - * src/hash.c (hash_list_of_char): Rename from hashq_. Respect size, - update callers. - (hashq_, hash_ hash, hashq_get_handle, hash_ref, hash_set_x_, - hash_set_x): New function. - (hashq_ref): Do not return handle. Update callers. - - mes: Move pair? to core. - * src/lib.c (pair_p): New function. Gains 8% performance on MesCC. - -2018-10-19 Jan Nieuwenhuizen - - mes: Move assoc to core. - * mes/mes.c (assoc_string, assoc): New function. - * mes/module/mes/scm.mes (assoc): Remove. Gains 12% performance for - MesCC. - -2018-10-20 Jan Nieuwenhuizen - - Revert "core: Add gc-debug for stack array." - This reverts commit f35084d1dbea889d107824e7596da1701c6b90ad. - -2018-10-19 Jan Nieuwenhuizen - - core: Add gc-debug for stack array. - * src/gc.c (gc_debug): New function. - - scaffold: Resurrect mini-mes. - * src/mini-mes.c: Resurrect. - -2017-12-14 Jan Nieuwenhuizen - - core: Use array-based stack. - * src/mes.c (STACK_SIZE)[MES_ARRAY_STACK]: New variable. - (g_stack_array): New variable. - (g_stack): Change type to SCM*. - (gc_push_frame)[MES_ARRAY_STACK]: Use g_stack_array, g_stack. - (gc_peek_frame): Likewise. - (gc_pop_frame): Likewise. - * src/gc.c (gc_check): Likewise. - (gc): Likewise. - -2018-10-17 Jan Nieuwenhuizen - - mes: Resurrect Guile-1.8 support. - * module/mes/mes-0.scm: Resurrect Guile-1.8 support. - -2018-10-16 Jan Nieuwenhuizen - - core: expand_variable: Remove weird exceptions: begin, if. - * src/mes.c (expand_variable_): Remove weird exceptions: begin, if. - -2018-10-15 Jan Nieuwenhuizen - - mes: Switch to srfi-9 based on structs. - * mes/module/srfi/srfi-9.mes: Swap symlink to srfi-9-struct.mes. - * mes/module/srfi/srfi-9/gnu.mes: Swap symlink to gnu-struct.mes. - * src/module.c (make_module_type): Update to match srfi-9-struct - records. Update users. - * src/hash.c (make_hashq_type): Likewise. - - mes: srfi-9: Add implementation based on struct. - * mes/module/srfi/srfi-9-struct.mes: New file. - * mes/module/srfi/srfi-9-vector.mes: Rename from srfi-9.mes - * mes/module/srfi/srfi-9.mes: Symlink to srfi-9-vector.mes. - * mes/module/srfi/srfi-9/gnu-struct.mes: Add srfi-9-struct - implementation. - * mes/module/srfi/srfi-9/gnu-vector.mes: Rename from gnu.mes. - * mes/module/srfi/srfi-9/gnu.mes: Symlink to gnu-vector.mes. - - core: hashq-table: Refactor to be a record-like struct. - * src/hash.c (hash_table_printer): New function. - (make_hashq_type): New function. - * src/module.c (module_printer): Use it. - (make_module_type): New function. - (make_initial_module): Use them. - - mescc: Mes C Library: oputs: New function. - * lib/mes/oputc.c: New file. - * lib/libmes.c: Include it. - * include/libmes.h: Declare it. - - core: Use hashq-table for macros. - * src/mes.c (lookup_macro_): Remove. - (macro_ref, get_macro, macro_set_x): New function. Update callers. - - core: Add hashq-table type. - src/hash.c: New file. - src/module.c (char_hash, module_hash): Remove. - * src/module.c (make_initial_module): Use hash primitives. - (module_define_x): Likewise. - (module_variable): Likewise. - * build-aux/snarf.sh: Snarf it. - * src/mes.c: Include it. - - core: Add boot-module. - * src/mes.c (scm_symbol_boot_module): New symbol. - (eval_apply): Handle it. - (mes_symbols): Initialize it. - -2018-10-14 Jan Nieuwenhuizen - - core: Add module-define! - * src/module.c (module_define_x, module_printer): New function. - (make_initial_module): Use them. - * tests/srfi-0.test: Test it. - * src/mes.c (display_m0): Remove. Update callers. - * mes/module/mes/fluids.mes (make-fluid): Rewrite. - * tests/macro.test: Test it. - * mes/module/mes/boot-0.scm.in (module-define!): Remove. - * mes/module/mes/boot-02.scm: Likewise. - * module/mes/misc.scm (pk, warn): New function. - * build-aux/check-mes.sh (tests): Run tests. - - core: Add module indirection for variable lookup. - * src/module.c (module_ref, module_variable): New function. - * src/mes.c: Thoughout: Use them. - (assq_ref_env): Remove. - * mes/module/mes/boot-0.scm.in (defined?): Use module-variable. - * mes/module/mes/boot-00.scm (defined?): Likewise. - * mes/module/mes/boot-01.scm (defined?): Likewise. - * mes/module/mes/boot-02.scm (defined?): Likewise. - * scaffold/boot/53-closure-display.scm: Likewise. - - core: Add module type. - * src/module.c: New file. - * build-aux/snarf.sh: Snarf it. - * src/mes.c: Include it. - - core: Add cstring_to_symbol. - * src/mes.c (make_symbol): Rename from lookup_symbol_. Update - callers. - (cstring_to_symbol): New function. - * src/reader.c (reader_read_identifier_or_number): Use it. - -2018-10-13 Jan Nieuwenhuizen - - core: Add struct type. - * src/struct.c: New file. - * build-aux/snarf.sh: Snarf it. - * src/mes.c: Include it. - -2018-10-15 Jan Nieuwenhuizen - - build: factor-out snarfing. - * build-aux/snarf.sh: New file. - * build-aux/build-cc.sh: Use it. - * build-aux/build-cc32.sh: Likewise. - * build-aux/build-cc64.sh: Likewise. - * build-aux/build-mes.sh: Likewise. - * build-aux/build-x86_64-mes.sh: Likewise. - * build-aux/snarf.sh: Likewise. - - core: core:cdr: Support port type. - * src/mes.c (cdr_): Support port type. - * mes/module/mes/display.mes (display): Add space between fields. - - mes: with-fluids: Fix reset. - * mes/module/mes/fluids.mes (with-fluids): Fix reset. - * tests/fluids.test (report): Remove Mes failure expectation. - -2018-10-19 Jan Nieuwenhuizen - - mescc: Recognize U integer suffix. - * module/mescc/compile.scm (cstring->int): Recognize U integer - suffix. Thanks, Peter de Wachter! - -2018-10-16 Peter De Wachter - - mescc: Add INTn_MIN/MAX defines to stdint.h. - * include/stdint.h: Add INTn_MIN/MAX defines. Move integere size - defines from limits.h - * include/limits.h: Include it. - -2018-10-16 Peter De Wachter - - mescc: Allow superfluous parentheses in function declarations. - E.g.: int (f)(); - This is obscure but valid C. It occurs in the csmith headers (thanks - to macro shenanigans). - - * module/mescc/compile.scm (fctn-defn:get-name, - fctn-defn:get-statement): Allow superfluous parentheses in function declarations. - -2018-10-16 Peter De Wachter - - mescc: Implement unary plus operator. - * module/mescc/compile.scm (ast->type, expr->register, - try-expr->number):): Implement unary plus operator. - - mescc: Add missing assembly defines. - * lib/x86-mes/x86.M1: Add missing assembly defines. - * lib/x86_64-mes/x86_64.M1: Likewise. - - mescc: Delete duplicate assembly defines. - * lib/x86-mes/x86.M1: Delete duplicate assembly defines. - * lib/x86_64-mes/x86_64.M1: Likewise. - -2018-10-16 Peter De Wachter - - mescc: Exit with non-zero exit code when subprocess fails. - system* returns the result of waitpid. So, suppose that a subprocess - fails with exit code 1. Then the waitpid return value will be 256. - And exit(256) is equivalent to exit(0). - - Modified-by: Jan Nieuwenhuizen - - * mes/module/mes/posix.mes (status:exit-val): New function. - * module/mescc/mescc.scm (assert-system*): Use it. - -2018-10-12 Jan Nieuwenhuizen - - mescc: Oops typo. - * module/mescc/M1.scm (hex2:immediate8): Typo. - -2018-12-13 Jan Nieuwenhuizen - - core: Support \xNN in reader. Fixes tcc-boot running on Mes. - * src/reader.c (reader_read_string): Support \xNN. Fixes Guix - bootstrap chain; i.e., compilation of gcc-2.95.3 using tcc-boot. - * tests/base.test ("reader: \\x08"): Test it. - * scaffold/tests/17-compare-char.c: Likewise, for mescc. - * build-aux/check-mescc.sh (tests): Run it. - -2018-11-18 Jan Nieuwenhuizen - - build: configure: Make dot optional. - * configure: Make dot optional. - -2018-10-11 Jan Nieuwenhuizen - - build: Oops, remove stray lib/linux/x86_64-mes/crt1. - * lib/linux/x86_64-mes/crt1: Remove. - -2018-10-10 Jan Nieuwenhuizen - - build: x86_64 bootstrap build fixes and workaround. - * configure: Substitute @arch@ (WAS: ARCH). Update users. - * configure.sh: Substitute @arch@. - * build-aux/build-mes.sh: Use $GUILE for x86_64 build. - * build-aux/install.sh.in: Install mes.S, mes.x86_64-mes-S too. - Prune *.E, *.out. - -2018-10-08 Jan Nieuwenhuizen - - doc: Release update. - - mescc: Oops, delete wrong line of assembly. - * lib/x86-mes/x86.M1 (movzbl_%bx,%ebx): Delete wrong line. Thanks, pdewacht! - -2018-10-07 Jan Nieuwenhuizen - - admin: Release update. - * doc/announce/ANNOUNCE-0.18: New file. - * guix/git/mes.scm (mes): Update hash. - -2018-10-04 Jan Nieuwenhuizen - - Release 0.18. - * configure (VERSION): Update to 0.18. - (main): Likewise. - * configure.sh (VERSION): Likewise. - * guix/git/mes.scm (mes, mes.git): Likewise. - * guix/mescc-tools-boot.patch: New file. - -2018-09-05 Jan Nieuwenhuizen - - doc: Release update. - * BOOTSTRAP: Update. - * HACKING: Update. - * NEWS: Update. - * README: Update. - * doc/mes.texi (Submitting Patches): Fix misquoting, misattribution. - -2018-10-07 Jan Nieuwenhuizen - - mescc: Another attempt at divide. - * module/mescc/i386/as.scm (i386:r0/r1): Never be signed. Use div for unsigned. - (i386:r0%r1): Likewise. - * module/mescc/x86_64/as.scm (x86_64:r0/r1): Likewise. - (x86_64:r0%r1): Likewise. - * lib/x86-mes/x86.M1: Add div. - * lib/x86_64-mes/x86_64.M1: Likewise. - - tests: Expect srfi-13 failure, MesCC more resembles Gcc. - * tests/srfi-13.test (report): Expect INT-MIN failure for x86. - -2018-10-06 Jan Nieuwenhuizen - - core: reader: Support 64 bit. - * src/reader.c (reader_read_identifier_or_number): Support 64 bit. - (reader_read_binary): Likewise. - (reader_read_octal): Likewise. - (reader_read_hex): Likewise. - - mescc: Mes C Library: Fix execve on x86_64. - * include/linux/x86_64/syscall.h (SYS_execve): Typo. Fixes execve on - x86_64. - - build: Support make seed for x86_64. - * build-aux/GNUmakefile.in (seed): Support make seed for x86_64. - * build-aux/build-mes.sh[SEED]: Also build src/mes.S. - * build-aux/build-x86_64-mes.sh[SEED]: Also build src/mes.x86_64-mes.S. - - mes: Support fold-right 3. - * mes/module/srfi/srfi-1.mes (fold-right): Support fold-right 3. - * tests/srfi-1.test ("fold-right-3"): Test it. - - mescc: Nyacc comment escapes. - * module/mescc/compile.scm (ast->comment): Nyacc comment escapes. - - mescc: Fix clobbering of struct by value assign. - * module/mescc/x86_64/as.scm (long-r0->r1-mem): New instruction. - * module/mescc/i386/as.scm: Likewise. - * lib/x86_64-mes/x86_64.M1: Support it. - * module/mescc/compile.scm (r0->r1-mem*n-): Fix clobbering. - - core: Add vector test. - * scaffold/boot/11-vector.scm: New test. - * build-aux/check-boot.sh: Run it. - - mescc: Fix obnoxious assignment ERROR message. - * module/mescc/compile.scm (expression->register): Fix assignment - ERROR message. - - core: Avoid 64bit zero divide. - * src/math.c (divide): Avoid (64bit) 0 divide. - (modulo): Likewise. - - mescc: Support negative divide. - * module/mescc/i386/as.scm (i386:r0/r1, i386:r0%r1): Support - negative divide. - * module/mescc/x86_64/as.scm (x86_64:r0/r1, x86_64:r0%r1): Likewise. - * lib/x86-mes/x86.M1: Likewise. - * lib/x86_64-mes/x86_64.M1: Likewise. - * scaffold/tests/a0-math-divide-signed-negative.c: Test it. - * build-aux/check-mescc.sh (tests): Run it. - - mescc: Support --align, off by default. - * scripts/mescc.in (parse-opts): Add --align. - * module/mescc/mescc.scm (mescc:compile): Support --align, off by - default. - * module/mescc/M1.scm (infos->M1): Add #:align parameter. - (M1:merge-infos): Likewise. Keep types. - (info->M1): Likewise. Make alignment switchable. - * module/mescc/compile.scm (r->ident): Do not clobber. - (ident-add): Likewise. - (clean-info): Keep types. - * module/mescc/i386/as.scm (i386:r->byte-label): New instruction. - * lib/x86-mes/x86.M1: Add instructions. - * lib/x86_64-mes/x86_64.M1: Add instructions. - * module/mescc/x86_64/as.scm (x86_64:r->byte-label, - x86_64:r->word-label, x86_64:r->long-label): New instruction. - - Revert "mescc: Make globals at least reg-size." - This reverts commit 30544316c35ed4a2472f2029beb27e007d913792. - - mescc: Make globals at least reg-size. - * module/mescc/compile.scm (global->info): Make globals at least reg-size. - - mescc: Support 64-bit immediates. - * module/mescc/M1.scm (hex2:address8, hex2:immediate8): New function. - (info->M1): Support 64-bit. - * module/mescc/compile.scm (convert-r0): FIXME! - * module/mescc/x86_64/as.scm (x86_64:value->r, x86_64:r->local, - x86_64:label->arg, x86_64:label->r, x86_64:r+value, - x86_64:r-cmp-value, x86_64:r-long-mem-add, x86_64:r-and): Support - 64-bit immediates. - * lib/x86_64-mes/x86_64.M1: Likewise. - * scaffold/tests/17-compare-unsigned-char-le.c: Test it. - * scaffold/tests/17-compare-unsigned-short-le.c: Test it. - * build-aux/check-mescc.sh (tests): Run them. - - core: Use proper name for %compiler. - * src/mes.c (mes_symbols, bload_env): : Use proper name for %compiler. - - core: Resurrect MES_MINI for non-POSIX. - src/mes.c[MES_MINI,!POSIX]: Resurrect. - - mescc: Mes C Library: Add ultoa. - * lib/mes/ultoa.c: New file. - * lib/libmes.c: Include it. - * include/libmes.h: Declare ultoa. - - mescc: Mes C Library: Add ltoa. - * lib/mes/ltoa.c: New file. - * lib/libmes.c: Include it. - * include/libmes.h: Declare ltoa. - - mescc: Fix truncation of short. - * module/mescc/compile.scm (convert-r0): Typo. Fixes truncation of - short. Thanks, pdewacht! - * scaffold/tests/a0-call-trunc-char.c: New file. - * scaffold/tests/a0-call-trunc-short.c: New file. - * build-aux/check-mescc.sh: Add them. - - build: Split-off x86_mes-gcc build. - * build-aux/build-cc64.sh: New file. - * build-aux/build.sh.in[CC64]: Invoke it. - * build-aux/build-cc.sh: Remove x86_64-mes-gcc build. - * build-aux/GNUmakefile.in (x86_64-mes-gcc): New target. - * build-aux/build-x86_64-mes.sh: Build all scafffold files. - -2018-10-05 Jan Nieuwenhuizen - - build: Oops, use MES_LIBS. - * build-aux/build-x86_64-mes.sh: Use MES_LIBS instead of the unused - MES64_LIBS. Fixes build. Thanks, pdewacht! - - build: remove bashism. - * build-aux/trace.sh (trace): Remove bashism. Thanks pdewacht! - -2018-10-04 Jan Nieuwenhuizen - - core: Support x86_64. - * src/lib.c: Support x86_64. - * src/math.c: Likewise. - * src/mes.c: Likewise. - * src/reader.c: Likewise. - * src/vector.c Likewise. - - build: Oops, set VERSION. - * build-aux/install.sh.in (VERSION): New substituted variable. - -2018-09-30 Jan Nieuwenhuizen - - build: Resurrect make seed. - * build-aux/GNUmakefile.in (seed): Resurrect. - * build-aux/build-x86_64-mes.sh: Build from seed. - -2018-08-15 Jan Nieuwenhuizen - - mescc: x86_64 support: Refactor to abstracted assembly, add x86_64. - * module/mescc/as.scm: Support abstracted assembly. - * module/mescc/i386/as.scm: Rewrite. - * module/mescc/x86_64/as.scm: Implement. - * module/mescc/compile.scm: Refactor to abstracted assembly. - * module/mescc/M1.scm: Update for partial 64 bit support. - * module/mescc/bytevectors.scm (bytevector-u64-native-set!): New - procedure. - * module/mescc/i386/info.scm (i386:type-alist): Use 4 byte type length - also for faking double, long long, long double. - * module/mescc/info.scm:modified: - * module/mescc/x86_64/info.scm (x86_64:registers): New variable. - * lib/x86-mes/x86.M1: Update for new register scheme. - * lib/x86_64-mes/x86_64.M1: Implement. - * lib/x86-mes/setjmp.c: Implement. - * lib/x86_64-mes-gcc/setjmp.c: Implement. - * build-aux/build-cc.sh: Update for x86_64. - * build-aux/build-cc32.sh: Likewise. - * build-aux/build-mes.sh: Likewise. - * build-aux/build-x86_64-mes.sh: Likewise. - * build-aux/check-mescc.sh: Likewise. - * build-aux/test64.sh: Likewise. - * include/libmes.h: Likewise. - * include/setjmp.h: Likewise. - * include/signal.h: Likewise. - * include/stdarg.h: Likewise. - * include/sys/stat.h: Likewise. - * include/sys/types.h: Likewise. - * include/sys/wait.h: Likewise. - * include/unistd.h: Likewise. - * lib/libc+gnu.c: Likewise. - * lib/libc+tcc.c: Likewise. - * lib/linux/gnu.c: Likewise. - * lib/linux/libc-mini.c: Likewise. - * lib/linux/libc.c: Likewise. - * lib/linux/tcc.c: Likewise. - * lib/linux/x86_64-mes-gcc/mes.c: Likewise. - * lib/linux/x86_64-mes/crt1.c: Likewise. - * lib/mes/abtol.c: Likewise. - * lib/posix/mktemp.c: Likewise. - * lib/posix/wait.c: Likewise. - * lib/stdio/fopen.c: Likewise. - * lib/stdio/fputc.c: Likewise. - * lib/stdio/fseek.c: Likewise. - * lib/stdio/printf.c: Likewise. - * lib/stdio/sprintf.c: Likewise. - * lib/stdio/vfprintf.c: Likewise. - * lib/stdio/vsprintf.c: Likewise. - * lib/stdio/vsscanf.c: Likewise. - * lib/stdlib/qsort.c: Likewise. - * lib/x86-mes-gcc/setjmp.c: Likewise. - * scaffold/tests/11-if-1.c: Likewise. - * scaffold/tests/15-if-!f.c: Likewise. - * scaffold/tests/16-if-t.c: Likewise. - * scaffold/tests/21-char[].c: Likewise. - * scaffold/tests/23-pointer.c: Likewise. - * scaffold/tests/32-compare.c: Likewise. - * scaffold/tests/33-and-or.c: Likewise. - * scaffold/tests/34-pre-post.c: Likewise. - * scaffold/tests/35-compare-char.c: Likewise. - * scaffold/tests/36-compare-arithmetic.c: Likewise. - * scaffold/tests/37-compare-assign.c: Likewise. - * scaffold/tests/38-compare-call.c: Likewise. - * scaffold/tests/40-if-else.c: Likewise. - * scaffold/tests/41-?.c: Likewise. - * scaffold/tests/42-goto-label.c: Likewise. - * scaffold/tests/43-for-do-while.c: Likewise. - * scaffold/tests/44-switch.c: Likewise. - * scaffold/tests/45-void-call.c: Likewise. - * scaffold/tests/46-function-static.c: Likewise. - * scaffold/tests/51-strcmp.c: Likewise. - * scaffold/tests/51-strncmp.c: Likewise. - * scaffold/tests/53-strcpy.c: Likewise. - * scaffold/tests/54-argv.c: Likewise. - * scaffold/tests/60-math.c: Likewise. - * scaffold/tests/61-array.c: Likewise. - * scaffold/tests/63-struct-cell.c: Likewise. - * scaffold/tests/64-make-cell.c: Likewise. - * scaffold/tests/65-read.c: Likewise. - * scaffold/tests/70-printf.c: Likewise. - * scaffold/tests/71-struct-array.c: Likewise. - * scaffold/tests/72-typedef-struct-def.c: Likewise. - * scaffold/tests/74-multi-line-string.c: Likewise. - * scaffold/tests/76-pointer-arithmetic.c: Likewise. - * scaffold/tests/79-int-array.c: Likewise. - * scaffold/tests/7a-struct-char-array.c: Likewise. - * scaffold/tests/7b-struct-int-array.c: Likewise. - * scaffold/tests/7i-struct-struct.c: Likewise. - * scaffold/tests/7k-for-each-elem.c: Likewise. - * scaffold/tests/7l-struct-any-size-array.c: Likewise. - * scaffold/tests/7o-struct-pre-post.c: Likewise. - * scaffold/tests/7q-bit-field.c: Likewise. - * scaffold/tests/7s-struct-short.c: Likewise. - * scaffold/tests/80-setjmp.c: Likewise. - * scaffold/tests/81-qsort.c: Likewise. - * scaffold/tests/85-sizeof.c: Likewise. - * scaffold/tests/87-sscanf.c: Likewise. - * scaffold/tests/90-strpbrk.c: Likewise. - * scaffold/tests/91-fseek.c: Likewise. - * scaffold/tests/95-signal.c: Likewise. - * scaffold/tests/97-fopen.c: Likewise. - * scaffold/tests/99-readdir.c: Likewise. - * scaffold/tests/t.c: Likewise. - * lib/linux/x86_64-mes/mes.c: New file. - * lib/linux/x86_64-mes/mini.c: New file. - * lib/x86_64-mes/setjmp.c: New file. - * scaffold/tests/06-!call-1.c: New file. - * scaffold/tests/06-call-2.c: New file. - * scaffold/tests/06-call-variable.c: New file. - * scaffold/tests/08-assign-global.c: New file. - * scaffold/tests/08-assign-negative.c: New file. - * scaffold/tests/17-compare-and-or.c: New file. - * scaffold/tests/17-compare-and.c: New file. - * scaffold/tests/17-compare-ge.c: New file. - * scaffold/tests/17-compare-gt.c: New file. - * scaffold/tests/17-compare-le.c: New file. - * scaffold/tests/17-compare-lt.c: New file. - * scaffold/tests/17-compare-or.c: New file. - * scaffold/tests/17-compare-unsigned-ge.c: New file. - * scaffold/tests/17-compare-unsigned-gt.c: New file. - * scaffold/tests/17-compare-unsigned-le.c: New file. - * scaffold/tests/17-compare-unsigned-lt.c: New file. - * scaffold/tests/21-char[]-simple.c: New file. - * scaffold/tests/23-global-pointer-init-null.c: New file. - * scaffold/tests/23-global-pointer-init.c: New file. - * scaffold/tests/23-global-pointer-pointer-ref.c: New file. - * scaffold/tests/23-global-pointer-ref.c: New file. - * scaffold/tests/23-pointer-sub.c: New file. - * scaffold/tests/31-oputs.c: New file. - * scaffold/tests/32-call-wrap.c: New file. - * scaffold/tests/38-compare-call-2.c: New file. - * scaffold/tests/38-compare-call-3.c: New file. - * scaffold/tests/51-pointer-sub.c: New file. - * scaffold/tests/54-argc.c: New file. - * scaffold/tests/63-struct-array-assign.c: New file. - * scaffold/tests/63-struct-array-compare.c: New file. - * scaffold/tests/63-struct-array.c: New file. - * scaffold/tests/63-struct-assign.c: New file. - * scaffold/tests/63-struct-function.c: New file. - * scaffold/tests/63-struct-local.c: New file. - * scaffold/tests/63-struct-pointer.c: New file. - * scaffold/tests/63-struct.c: New file. - * scaffold/tests/70-printf-hello.c: New file. - * scaffold/tests/70-printf-simple.c: New file. - * scaffold/tests/70-stdarg.c: New file. - * scaffold/tests/70-strchr.c: New file. - * scaffold/tests/73-union-hello.c: New file. - * scaffold/tests/76-pointer-arithmetic-pp.c: New file. - * scaffold/tests/79-int-array-simple.c: New file. - * scaffold/tests/7b-struct-int-array-hello.c: New file. - * scaffold/tests/7b-struct-int-array-pointer.c: New file. - * scaffold/tests/7i-struct-struct-simple.c: New file. - * scaffold/tests/7k-for-each-elem-simple.c: New file. - * scaffold/tests/7l-struct-any-size-array-simple.c: New file. - * scaffold/tests/7o-struct-pre-post-simple.c: New file. - * scaffold/tests/7q-bit-field-simple.c: New file. - * scaffold/tests/90-strspn.c: New file. - * scaffold/tests/06-call-string.c.: Rename from 31-eputs.c. - * scaffold/tests/7t-function-destruct.c: Rename from 48-function-destruct.c. - * scaffold/tests/48-global-static.c: Rename from 49-global-static.c. - * scaffold/tests/55-char-array.c:renamed: Rename from 4a-char-array.c. - * scaffold/tests/51-itoa.c:r Rename from 52-itoa.c. - * include/signal.h:(struct sigaction): - - mescc: x86_64 support: Add tests. - -2018-08-14 Jan Nieuwenhuizen - - mescc: Initial x86_64 support. - make all-go && MES=guile ./pre-inst-env scripts/mescc -m64 -c scaffold/main.c - - mescc: Prepare for x86_64 support. - * module/mescc/info.scm (info): Add allocated, registers. - * module/mescc/i386/info.scm: New file. - * build-aux/build-guile.sh (SCM_FILES): Add it. - * module/mescc/compile.scm (c99-input->info): Add info parameter. - (c99-ast->info): Likewise. - (i386:type-alist): Remove. - (alloc-register, free-register): New function. - (expr->register*): Rename from expr->accu*. Update callers. - (expr->accu): Rename from expr->accu. Update callers. - * module/mescc/mescc.scm(%info): New variable. - * module/mescc/mescc.scm (c->ast): Use it. - (mescc:compile): Likewise. - (E->info): Likewise. - -2018-09-16 Jan Nieuwenhuizen - - emacs: Add disassembly helpers. - * .dir-locals.el (as-32, as-64): Add disassembly helpers. - -2018-09-11 Jan Nieuwenhuizen - - guix: nyacc-for-mes: Update to 0.86.0. - * guix/git/mes.scm (nyacc-for-mes): Update to 0.86.0 plus fix binary - literals. - - mescc: Support gcc-3.0: Locale header fix. - * include/locale.h (LC_ALL, LC_NUMERIC): Numbers, not strings. - (LC_COLLATE, LC_CTYPE): New macro. - -2018-09-09 Jan Nieuwenhuizen - - build: Oops, fix ./check.sh for bootstrap build. - * build-aux/config.sh (top_builddir): Set default to `.'. - -2018-09-05 Jan Nieuwenhuizen - - guix: nyacc-for-mes: Update to 0.85.3. - * guix/git/mes.scm (nyacc-for-mes): Update to 0.85.3. - - mes: Support Nyacc 0.85.3: Integrate progress. - * mes/module/nyacc/lang/sx-util.mes: New file. - * mes/module/nyacc/version.mes: New file. - * mes/module/nyacc/lang/c99/cpp.mes (nyacc): Include them. - * mes/module/nyacc/lang/c99/parser.mes (nyacc): Include them. - * module/mescc/preprocess.scm (need-progress): New function. - (progress): New function. - (insert-progress-monitors): Use them to Integrate progress. - - mes: Support Nyacc 0.85.3: Add char-set-copy. - * mes/module/srfi/srfi-14.mes (char-set-copy): New function> - -2018-09-04 Jan Nieuwenhuizen - - doc: Update bootstrap graph. - * doc/images/gcc-mesboot-graph.dot: Regenerate. - * build-aux/GNUmakefile.in (doc/mes.info): Oops change dependency to .png. - * doc/mes.texi (The Mes Bootstrap Process): Update image and wording. - - guix: Update hash. - * guix/git/mes.scm (mes): Update hash. - -2018-09-03 Jan Nieuwenhuizen - - Release 0.17.1. - * configure (VERSION): Update to 0.17.1. - (main): Likewise. - * configure.sh (VERSION): Likewise. - * build-aux/GNUmakefile.in (gen-announce): Likewise. - * guix/git/mes.scm (mes, mes.git): Likewise. - -2018-08-09 Jan Nieuwenhuizen - - doc: Release update. - * HACKING (prefix): Update. - * INSTALL (http): Update. - * NEWS: Update. - * README (C-compiler): Update. - * doc/announce/ANNOUNCE-0.17: Update. - -2018-09-03 Jan Nieuwenhuizen - - build: ALlow releasing from worktree. - * build-aux/GNUmakefile.in (COMMIT): Check for .git file. - -2018-09-01 Jan Nieuwenhuizen - - mescc: Mes C Library: Do not redefine size_t. - * include/stddef.h: Do not redefine size_t. - -2018-08-27 Jan Nieuwenhuizen - - 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. - - 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. - -2018-08-26 Jan Nieuwenhuizen - - 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. - - 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 - - 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 - - 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 - - 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 - - check-mescc: c-mini - -2018-08-24 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - build: Fix mescc man page generation. - * build-aux/GNUmakefile.in (doc/mescc.1): Reverse dependencies; - generate page for mescc. - -2018-08-23 Jan Nieuwenhuizen - - 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-09 Jan Nieuwenhuizen - - guix: Update to 0.17. - * guix/git/mes.scm (mes): Update to 0.17. - -2018-07-22 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - build: Respect --docdir. - * configure: Respect --docdir. - -2018-07-21 Jan Nieuwenhuizen - - 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 - - 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 - - build: Install ChangeLog. - * ChangeLog: New file. - * install.sh: Regenerate it, install it. - - build: Refactor configure. - * configure: Refactor. - -2018-07-21 Jan Nieuwenhuizen - - 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 - - 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 - - Add missing copyright header. Thanks, Mike! - * guile/gc.c: Add missing copyright header. Thanks, Mike! - -2018-07-19 Jan Nieuwenhuizen - - guix: mes: Updatee to 0.16.1. - * guix.scm (mes): Update to 0.16.1. - (mes.git): Likewise. - -2018-07-12 Jan Nieuwenhuizen - - 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 - - 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 - - Release 0.16. - * configure (VERSION): Bump to 0.16. - -2018-06-24 Jan Nieuwenhuizen - - doc: Release update. - * BOOTSTRAP: Update. - * HACKING: Update. - * INSTALL: Update. - * NEWS: Update. - * README: Update. - * doc/ANNOUNCE-0.16: New file. - -2018-06-26 Jan Nieuwenhuizen - - 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 - - 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-20 Jan Nieuwenhuizen - - 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 - - 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-20 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - guix: Update mes to 0.15. - * guix.scm (mes): Update to 0.15. - (mes.git): Likewise. - -2018-06-10 Jan Nieuwenhuizen - - Release 0.15. - * configure (VERSION): Bump to 0.15. - -2018-05-23 Jan Nieuwenhuizen - - doc: Release udpate. - * BOOTSTRAP: Update. - * HACKING: Update. - * NEWS: Update. - * README: Update. - * doc/ANNOUNCE-0.15: New file. - -2018-06-12 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - mescc: syscall: return only ever error -1, set errno. - -2018-06-07 Jan Nieuwenhuizen - - 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 - - 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 - - mescc: Support glibc-1.06.4. - * lib/glibc.c: New file. - * lib/libc+gnu.c: Include it. - -2018-06-02 Jan Nieuwenhuizen - - mescc: Support gcc-2.6.3. - * TODO - -2018-05-30 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - mescc: m4 support: WIP - -2018-05-28 Jan Nieuwenhuizen - - core: Refactor boot-0 loading. - * src/mes.c (load_boot): New function. - (load_env): Use it. - -2018-05-26 Jan Nieuwenhuizen - - 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 - - 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 - - mes: Add drop, drop-right. - * module/srfi/srfi-1.mes (drop, drop-right): New function. - -2018-05-25 Jan Nieuwenhuizen - - Revert "fork/exec: debug." - This reverts commit f0315ac0d9acd66a30dbb192334f443459b7ed16. - - fork/exec: debug. - -2018-05-24 Jan Nieuwenhuizen - - 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 - - mescc: Oops, alignment. - * module/mes/M1.mes (object->M1): Oops, alignment: only add alignment - when not aligned. - -2018-05-26 Jeremiah Orians - - 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 - - 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 - - guix: mes: Update to 0.14. - * guix.scm (mes): Update to 0.14. - (mes.git): Likewise. - -2018-05-23 Jan Nieuwenhuizen - - guix: Add nyacc-for-mes. - * guix.scm (nyacc-for-mes): New variable. - -2018-05-20 Jan Nieuwenhuizen - - Release 0.14. - * configure (VERSION): Bump to 0.14. - -2018-05-19 Jan Nieuwenhuizen - - doc: Release udpate. - * BOOTSTRAP: Update. - * HACKING: Update. - * NEWS: Update. - * README: Update. - * doc/ANNOUNCE-0.14: New file. - -2018-05-22 Jan Nieuwenhuizen - - 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 - - mescc: Align global data. - * module/mes/M1.mes (object->M1): Align globals. - -2018-05-20 Jan Nieuwenhuizen - - 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 - - tinycc: Add stubs: __fixdfdi, __fixxfdi, __fixsfdi. - * lib/libc+tcc-gcc.c (__fixdfdi, __fixxfdi, __fixsfdi): New stub. - -2018-05-20 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - mes: string->number: Support upper case hex. - * module/mes/scm.mes (string->number): Support upper case hex. - -2018-05-18 Jan Nieuwenhuizen - - 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 - - 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 - - mes: Support fold 3. - * module/srfi/srfi-1.mes (fold): Support fold 3. - -2018-05-14 Jan Nieuwenhuizen - - 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 - - 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 (): 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 - - 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. - -2018-05-11 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 . ). - * 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 - - mescc: Refactor type system: introduce , , . - * module/language/c99/info.scm (, , ): New type. - * module/language/c99/compiler.mes (ast->): New function. - (ast-type): Use it. - -2018-05-05 Jan Nieuwenhuizen - - mescc: Refactor variable declaration. - * module/language/c99/compiler.mes (decl->info): Refactor. - -2018-05-04 Jan Nieuwenhuizen - - 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. - - 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 (): New type. - * module/language/c99/compiler.mes (ast->type): Support function. - (expr->type-size): Likewise. - (expr->type): Likewise. - (expr->accu*): Likewise. - (function->info): Create . - * module/mes/M1.mes (object->M1): Grok . - * 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. - (): 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 , 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 - - 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 - - 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 - - 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 - - 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 - - Revert "core: Remove pmatch-car, pmatch-cdr hack." - This reverts commit be1e84624ea4a158173f34af923e3c4a3793412a. - -2018-04-28 Jan Nieuwenhuizen - - 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 - - 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 '()' hack. - - build: Install naive diff. - * scripts/diff.scm: Move from build-aux. - * install.sh: Install it. - * build-aux/tests.sh: Update location. - -2018-05-20 Jan Nieuwenhuizen - - build: Update configure. - * configure: Update. - -2018-05-02 Jan Nieuwenhuizen - - mes: Remove debugging. - * module/mes/module.mes (mes-load-module-env): Remove debugging. - -2018-05-10 Jan Nieuwenhuizen - - 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 - - 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 - - test: Use diff -ub for tinycc tests. - * build-aux/diff.scm: Support -b. - * build-aux/test.sh: Use it. - -2018-05-04 Jan Nieuwenhuizen - - 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 - - build: configure: Handle VAR=VALUE. Update help. - * configure: Handle VAR=VALUE. Update help. - -2018-05-03 Jan Nieuwenhuizen - - 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 - - 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 - - Revert "core: length: Check parameter." - This reverts commit 1f52ed35c66febcce16e06868e803a39be7eda41. - - core: length: Check parameter. - * src/mes.c (length): Check parameter. - -2018-05-01 Jan Nieuwenhuizen - - 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 - - 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 - - core: Use length__. - * src/mes.c (check_formals): Use length__. - -2018-04-29 Jan Nieuwenhuizen - - 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 (, , , - , , , , - , , , , - , , , , - , - - guix: Update mes to 0.13. - * guix.scm (mes): Update to 0.13. - (mes.git): Likewise. - -2018-04-27 Jan Nieuwenhuizen - - Release 0.13. - * configure (VERSION): Bump to 0.13. - -2018-04-21 Jan Nieuwenhuizen - - doc: Release udpate. - * BOOTSTRAP: Update. - * HACKING: Update. - * NEWS: Update. - * README: Update. - * doc/ANNOUNCE-0.13: New file. - -2018-04-27 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - mescc: Use display for dumping M1. - * module/mes/M1.mes (object->M1): Use display for dumping M1. - -2018-04-22 Jan Nieuwenhuizen - - 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 - - core: Compile minimal mes with MES_MINI=1. - * src/mes.c: Compile minimal mes with MES_MINI=1. - -2018-04-21 Jan Nieuwenhuizen - - core; reader_read_string: Support escaped characters. - * src/reader.c (reader_read_string): Support escaped characters. - -2018-04-22 Jan Nieuwenhuizen - - Revert "mescc: Use core:write." - This reverts commit d88e31dfec3158a830c32f9f732b052cfccac6eb. - -2018-04-21 Jan Nieuwenhuizen - - mescc: Use core:write. - * scripts/mescc.mes (source->ast): Use core:write. - -2018-04-22 Jan Nieuwenhuizen - - mes: display: Display escaped characters. - * module/mes/display.mes (display): Display escaped characters. - -2018-04-21 Jan Nieuwenhuizen - - 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 - - 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 - - Revert "build-32.sh" - This reverts commit ace8b6f1b52de58c9ab404ed13234f397dac6bdc. - -2018-04-16 Jan Nieuwenhuizen - - build-32.sh - -2018-04-14 Jan Nieuwenhuizen - - 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 - - Revert "mlibc: Use memmove in realloc." - This reverts commit f47a21e3cb4814c4a30d10ff59e5c947441725e9. - -2018-04-15 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - core: Update default memory settings. - * src/mes.c (MAX_ARENA_SIZE)[__MESC__]: Set to maximum 172100000. - -2018-04-09 Jan Nieuwenhuizen - - 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 - - core: Add isspace. - * include/ctype.h (isspace): Declare. - * lib/libc.c (isspace): New function. - -2018-04-08 Jan Nieuwenhuizen - - 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 - - Release 0.12. - * configure (VERSION): Bump to 0.12. - -2017-11-21 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 (): New variable. - (cell:type-alist): Add it. - (variable?): New function. - * module/mes/display.mes (display): Handle . - -2018-04-03 Jan Nieuwenhuizen - - 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 - - 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 - - guix: records.scm: update from upstream. - * guile/guix/records.scm: Update from upstream. - -2018-01-25 Jan Nieuwenhuizen - - 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 - - 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 - - build: Add -fno-stack-protector for debian. - * guile/guix/make.scm (%C32-FLAGS): Add -fno-stack-protector. - -2018-01-06 Jan Nieuwenhuizen - - 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 - - mes: More informative error reporting for number asserts. - * src/math.c (assert_number): New function. Update assert () users. - -2018-01-27 Jan Nieuwenhuizen - - 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 - - mes: simple-format: support ~A, ~S. - * module/mes/display.scm (simple-format): support ~A, ~S. - -2018-01-22 Jan Nieuwenhuizen - - 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 - - mes: display: Support keyword. - * src/lib.c (display_helper): Support keyword. - -2018-01-12 Jan Nieuwenhuizen - - mes: display: vector. - * src/lib.c (display_helper): Display vector. - -2018-01-14 Jan Nieuwenhuizen - - mes: display: closure names. - * src/lib.c (display_helper): Display closure names. - -2018-01-07 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - mes: #\page is whitespace. - * module/srfi/srfi-14.mes (char-set:whitespace): Add #\page. - - mes: # 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 ("#"): 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 - - 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 - - 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 - - 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 - - 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 - - Revert "mes: use array-based stack. WIP: will not survice gc." - This reverts commit 7fb653f68c2dbf8bc83cce4bd138439c600b538f. - -2017-12-14 Jan Nieuwenhuizen - - 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 - - mes: Fix assq to improve performance. - * src/mes.c (assq): Special case eq_p to improve performance. - -2017-12-11 Jan Nieuwenhuizen - - 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. - - 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 - - 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 - - mes: Fix initial display. - * module/mes/read-0.mes (display): Fix. - -2017-12-11 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - mlibc: GNU Gcc support: ferror. - * lib/libc-mes+tcc.c (ferror): New function. - * include/stdio.h (ferror): Declare it. - -2017-11-24 Jan Nieuwenhuizen - - 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 - - remove obsolete Nyacc link. - * guile/nyacc: Remove. - -2017-11-22 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - mes: Add last. - * module/srfi/srfi-1.mes (last): New funcion. - -2017-11-20 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - doc: Release udpate. - * HACKING: Update. - * INSTALL: Update. - * NEWS: Update. - * README: Update. - * doc/ANNOUNCE-0.11: New file. - -2017-11-18 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - tinycc: scaffold/main.c: running tcc-compiled binary #3. - * scaffold/main.c (main): Remove asm. - -2017-09-10 Jan Nieuwenhuizen - - 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-02 Jan Nieuwenhuizen - - tinycc: scaffold/main.c: running tcc-compiled binary #2. - * scaffold/main.c (main)[__i386__]: Rename from _start. - -2017-09-10 Jan Nieuwenhuizen - - build: compile crt1.c, libc-mesc.c and .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 - - mescc: Tinycc support: refactor _start. - * mlibc/libc-mes.c (_start): Refactor. - (_env): Remove. - * stage0/x86.M1: - -2017-08-19 Jan Nieuwenhuizen - - tinycc: scaffold/main.c: first running tcc-compiled binary. - * scaffold/main.c (_start): Exit 42 using asm. - -2017-08-27 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - mescc: Tinycc support: noisy stubs. - * mlibc/libc-mes+tcc.c: Noisy stubs. - -2017-07-30 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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-26 Jan Nieuwenhuizen - - 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. - - 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[]. - * 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: . - * module/language/c99/info.scm (): 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: . - * module/language/c99/info.scm (): 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: . - * module/language/c99/info.scm (): 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: . - * module/language/c99/info.scm (): 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. (, , - , , , , , , - , , 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 - - 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 - - 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 - - mescc: Import tinycc test suite. - * make.scm (check-scaffold-tinycc): New target. - * guile/guix/make.scm (): 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 - - 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 - - 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 - - build: Remove make. - * GNUmakefile: trivial convenience-frontend to ./make.scm - * make/*.make: Remove. - * */*.make: Remove. - -2017-07-02 Jan Nieuwenhuizen - - 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 - - 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 - - guix: Add missing module. - * guix.scm: Use (guix download). Fixes compilation with mescc-tools included. - -2017-06-26 Jan Nieuwenhuizen - - guix: Add mescc-tools. - * guix.scm (mescc-tools): New variable. Fixes using guix.scm. Thanks paroneayea! - -2017-06-25 Jan Nieuwenhuizen - - 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 - - doc: Release update. - * NEWS: Update. - * INSTALL: Update. - * HACKING: Update. - * doc/ANNOUNCE-0.8: New file. - -2017-06-25 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - mescc: Remove jump calculation, use labels: cleanup. - * module/language/c99/compiler.mes (test->jump->info): Remove. - -2017-06-13 Jan Nieuwenhuizen - - mescc: Remove jump calculation, use labels: switch. - * module/language/c99/compiler.mes (expr->accu): Refactor (switch ...). - (clause->info): Refactor. - -2017-06-12 Jan Nieuwenhuizen - - 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 - - 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 - - core: %moduledir ends with /. - * make/install.make (MODULEDIR): Append /. - (install): Remove /. - * src/mes.c (load_env, bload_env): Update. - -2017-06-11 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - mes: Bugifx for number->string radix > 10. - * module/mes/scm.mes (number->string): Bugfix for `10' -> hex/radix > 10. - -2017-05-21 Jan Nieuwenhuizen - - 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 - - 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 - - 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. - - 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 - - Purging binary blobs - * mes.mes: Remove. - * module/mes/read-0-32.mo: Remove. - -2017-05-15 Jan Nieuwenhuizen - - doc: Update. - * AUTHORS: Remove module/nyacc. - -2017-05-14 Jan Nieuwenhuizen - - doc: typo - - guix hash: 0qqywk3siyhf08v7xac08lqldklrqfndlp495wgy6ii9fn93197k - -2016-12-25 Jan Nieuwenhuizen - - Release 0.6. - * configure (VERSION): Bump. - -2017-05-06 Jan Nieuwenhuizen - - doc: Release update. - * NEWS: Update. - -2017-05-04 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 . - * 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 - - mescc: Support list of initializers. - * module/language/c99/compiler.mes (ast->info): Support list of initializers. - -2017-05-02 Jan Nieuwenhuizen - - 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 - - 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 - - guix hash: 01m8n7zk4f1ryd61dj589zarx09vbi7fc5f8m1x5zfk6r7l0zja2 - - guix.scm: Remove erroneous system restriction. - * guix.scm (mes): Remove second erroneous system restriction. - -2017-04-27 Jan Nieuwenhuizen - - 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 - - bootstrap: Regenerate. - * mes.mes: Regenerate. - -2017-04-24 Jan Nieuwenhuizen - - 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 - - bootstrap: Regenerate. - * mes.mes: Regenerate. - -2017-04-24 Jan Nieuwenhuizen - - core: Set argv for mescc too. - * src/mes.c (main)[!__MESC__]: Remove branch. - - bootstrap: Regenerate. - * mes.mes: Regenerate. - -2017-04-23 Jan Nieuwenhuizen - - 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 - - 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 - - bootstrap: Regenerate. - * mes.mes: Regenerate. - * module/mes/read-0-32.mo: Regenerate. - -2017-04-16 Jan Nieuwenhuizen - - 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 - - bootstrap: Regenerate - * module/mes/read-0-32.mo: Regenerate. - -2017-04-12 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - scm: Add access? - * module/mes/guile.mes (access?): New dummy function. Fixes Nyacc's #include. - -2017-03-29 Jan Nieuwenhuizen - - doc: Add Roamdmap. - * HACKING: Add roadmap. - -2017-04-01 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - test: Add pmatch tests. - * tests/pmatch.test: New file. - * GNUmakefile (TESTS): Add it. - -2017-03-28 Jan Nieuwenhuizen - - nyacc: prefix globals. - -2017-03-27 Jan Nieuwenhuizen - - 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 - - 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 - - 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. - -2017-03-26 Jan Nieuwenhuizen - - 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. - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - test: Enable vector read test. - * tests/read.test: Enable vector read test. - -2017-03-25 Jan Nieuwenhuizen - - 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 - - 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<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 - - 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 - - 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 - - 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 - - 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 - - mescc: Struct fixes. - * module/language/c99/compiler.mes (expr->arg, expr->accu, ast->info): - Fixes for struct assignment. - -2017-03-22 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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-13 Jan Nieuwenhuizen - - 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. - - 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 - - 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 - - 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 - - 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 - - nyacc: removed start from lalr-spec -- not needed - -2017-03-04 Matt Wette - - nyacc: working javascript interpreter in guile - -2017-03-03 Matt Wette - - nyacc: lex fixes for char-lit - -2017-03-02 Matt Wette - - nyacc: cleaned up documentation - -2017-03-01 Matt Wette - - nyacc: working on C99 UG as a memo - -2017-02-28 Matt Wette - - nyacc: new release 0.76.5 - - nyacc: fixed bug in pretty-print-c99 wrt i-sel - -2017-02-25 Matt Wette - - nyacc: merge from 0.76.4 - -2017-02-24 Matt Wette - - nyacc: new release 0.76.4 - -2017-02-23 Matt Wette - - 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 - - nyacc: new release 0.76.1 - - nyacc: fixed C99 CPP to deal with numbers correctly - -2017-02-20 Matt Wette - - nyacc: merge master 0.76.0 - -2017-02-19 Matt Wette - - 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 - - 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 - - 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 - - nyacc: working cpp now, I hope - -2017-02-12 Matt Wette - - nyacc: CPP not yet working for file mode - -2017-02-11 Matt Wette - - nyacc: working on cpp issues - -2017-02-05 Matt Wette - - nyacc: C99 CPP for code is better - -2017-01-20 Matt Wette - - nyacc: starting to work on reframing - -2017-01-19 Matt Wette - - nyacc: more CPP fixes - -2017-01-17 Matt Wette - - nyacc: redesign lang/c99/cppbocy.scm:scan-cpp-input - -2017-03-10 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - mescc: Rename expr->accu*. - * module/language/c99/compiler.mes (expr->accu*): Rename from expr->accuX. - -2017-04-02 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - doc: Add gdb assembly debugging info. - * HACKING: Add gdb assembly debugging info. - -2017-01-21 Jan Nieuwenhuizen - - 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 - - mini-mes: gcc: run (cons 0 1). - -2017-01-15 Matt Wette - - nyacc: new release 0.74.3 - - nyacc: CPP working better now - -2017-01-14 Matt Wette - - nyacc: something working - - nyacc: still debugginug - -2017-01-12 Matt Wette - - nyacc: working # and ## I think, but lots of debug output too - -2017-01-11 Matt Wette - - 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 - - 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 - - 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 - - mescc: Handle enums. - * module/language/c99/compiler.mes (, ): 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 - - scm: Add string-delete. - * module/srfi/srfi-13.mes (string-delete): New function. - -2017-04-02 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 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-05 Jan Nieuwenhuizen - - 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. - - 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. - -2017-01-04 Jan Nieuwenhuizen - - 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 - - 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 "): New test. - -2017-01-03 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - nyacc: fixes didn't get in in 0.74.0 - - nyacc: ugh. fixes did not take, why? - -2017-01-08 Matt Wette - - 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 - - nyacc: updates for cpp-ok/not-ok - -2017-01-02 Matt Wette - - nyacc: fixed c99/CPP bug: need to skip space before lparen - - nyacc: have something working for in-place include - -2017-01-01 Matt Wette - - nyacc: working on cpp-include fix - -2016-12-31 Matt Wette - - nyacc: creating fixes for 0.73.0 - -2016-12-26 Matt Wette - - nyacc: new release 0.73.0 - - nyacc: misc updates; see ChangeLog - -2016-12-03 Matt Wette - - nyacc: multiple fixes - -2016-08-09 Matt Wette - - nyacc: starting devel on 0.72.0 - -2016-12-26 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - repl: Fix expand in repl. - * module/mes/repl.mes (repl): Fix expand. Remove sc-expand. - -2017-01-03 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 (): 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 - - 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 - - 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 - - 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. - - make: Install nyacc scripts too. - * make/install.make (install): Add scripts/nyacc.mes, scripts/nyacc-calc.mes. - -2016-12-25 Jan Nieuwenhuizen - - Revert "core: Display me debuggor." - This reverts commit 53ec23a0edcfdcb7dd4e32277e5a24e0a8fab5dd. - -2016-12-25 Jan Nieuwenhuizen - - 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 - - Revert "core: FAT_C_READER: Show your speed." - This reverts commit 5a9b9ac36bd33e497272b287ab1f0db715e01d38. - -2016-12-25 Jan Nieuwenhuizen - - 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 - - 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 - - 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 (): 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 (): 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 - - 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 - - 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 - - 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 - - Add string-copy, string=, string=?, char?, char<=?, char>=?. - * module/srfi/srfi-13.mes: New file. - * module/mes/scm.mes (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 - - 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 - - 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 - - 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 - - Nyacc example scripts: support Guile-1.8. - -2016-12-18 Jan Nieuwenhuizen - - 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 - - Import Nyacc 0.72.0. - * module/nyacc: Import module/nyacc. - -2016-12-19 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - optargs guile - -2016-12-16 Jan Nieuwenhuizen - - 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 - - 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 - - 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 - - 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 - - Import psyntax from Guile-1.3a. - * module/mes/psyntax.mes: New file. - * module/mes/psyntax.ss: New file. - - commit 230c435383087a1e6ad60d9c98d3ec75dd2c3e49 - Author: Mikael Djurfeldt - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - 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 - - Update NEWS. - * NEWS: Note specials fix and booting with smaller core. - -2016-10-21 Jan Nieuwenhuizen - - 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 - - Revert "Flip sign of cached symbols: only search cache if symbol is cached." - This reverts commit cef058be0d6ef5322f74e644bbcd96f1725c6327. - -2016-10-21 Jan Nieuwenhuizen - - 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. - -2016-10-20 Jan Nieuwenhuizen - - named let-fu FIXME - -2016-10-21 Jan Nieuwenhuizen - - 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*. - -2016-10-20 Jan Nieuwenhuizen - - loop-0: define and, let and cache-invalidate-range. - - boot: support quasiquote in eval. - * module/mes/loop-0.mes (eval-env): Add quasiquote support. - -2016-10-18 Jan Nieuwenhuizen - - 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 - - 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 - - Implement eval/apply in Scheme. - * module/mes/loop-0.mes: New file. - * module/mes/mes.mes: Remove - -2016-10-20 Jan Nieuwenhuizen - - 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. - -2016-10-19 Jan Nieuwenhuizen - - 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. - -2016-10-20 Jan Nieuwenhuizen - - 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 - - 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 - - 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 #. - -2016-10-17 Jan Nieuwenhuizen - - Remove macro expansion from apply. - mes.c (apply_env): Remove macro expansion. - -2016-10-18 Jan Nieuwenhuizen - - 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 - - Update guix hash. - * make/install.make (update-hash): New target. - * guix.scm: Prepare for update. - -2016-10-16 Jan Nieuwenhuizen - - Add installation instructions. - * INSTALL: New file. - - Add guix.scm package recipe. - * guix.scm: New file. - -2016-10-15 Jan Nieuwenhuizen - - 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 - - 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. - -2016-10-15 Jan Nieuwenhuizen - - 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 - - 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 - - Remove evcon (Sorry John). - * mes.c (evcon): Remove, remove callers. - * base0-if.mes (cond): Rename from disabled-cond. - - Support quasisyntax. - * mes.c (eval_quasisyntax, add_unsyntaxers): New functions. - (eval_env): Use them. - -2016-10-16 Jan Nieuwenhuizen - - 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 - - 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 - - Do not use quasiquote in base0. - * base0.scm (defined?): Rewrite without quasiquote. - -2016-10-12 Jan Nieuwenhuizen - - Add procedure? to base. - * base.mes (procedure?): Move from scm.mes. - -2016-10-08 Jan Nieuwenhuizen - - speedup: use ->car etc. - -2016-10-11 Jan Nieuwenhuizen - - 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 - - resurrect mescc. - - cleanup and doc update. - - syntax.mes: silence syntax error. - - test/scm.test: update. - -2016-10-11 Jan Nieuwenhuizen - - test/match.test: pass. - -2016-10-10 Jan Nieuwenhuizen - - lib/match: ugly hygiene hack. FIXME. - - let-syntax.mes: implement. - -2016-10-08 Jan Nieuwenhuizen - - 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 - - Updates to README, TODO. - -2016-08-14 Jan Nieuwenhuizen - - mescc.scm: compile simple, well-behaved for-loop. - - elf.mes: for loop. - - mescc.scm: print two strings. - -2016-08-13 Jan Nieuwenhuizen - - mescc.scm: first a.out produced from main.c. - - lib/match.scm: import. - - lib/srfi/srfi-1.scm: add append-map, filter, find. - - 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. - -2016-08-12 Jan Nieuwenhuizen - - resurrect guile-mescc, use write-int and (current-error-port) iso `2'. - -2016-09-25 Jan Nieuwenhuizen - - Revert "mes.c: use single malloc with arena." - This reverts commit 38c364faeff430a5ee28f402d24b073f6bf9a548. - -2016-08-12 Jan Nieuwenhuizen - - mes.c: use single malloc with arena. - - 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 - - syntax-if.mes: TODO. - - Use IF iso COND as primitive; keep COND primitive as option. - - let.scm: cleanups. - -2016-07-26 Jan Nieuwenhuizen - - macro hax0rz - - Revert "lib/lalr-debug.scm" - This reverts commit 084d1bea33d45f0653cdc6bef44dc295faef6b72. - - lib/lalr-debug.scm - - quasiquote.mes: disable, too slow. - -2016-07-25 Jan Nieuwenhuizen - - split-up test suite, implement quasiquote in scheme. - -2016-07-26 Jan Nieuwenhuizen - - hello.c, hello.S: hello world target for C compiler. - -2016-07-24 Jan Nieuwenhuizen - - mescc: mes parses simplest main with lalr. - - scm.mes: add port-location dummies. - - mes.c: add set-cdr, substring, string-ref. - - 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 - - ADD .gitignore. - - lib/lalr.scm - -2016-07-24 Jan Nieuwenhuizen - - mes.c: grok #\tab. - -2016-07-23 Jan Nieuwenhuizen - - mes.c: add syntax, quasisyntax to reader.... - - srfi-9 records! - - mes.c: refactor begin and closures. Fixes bugs/top.mes. - - 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. - -2016-07-22 Jan Nieuwenhuizen - - scm.mes: add assq-set!, assq-ref. - - 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 - - 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 - - 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 - - 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. - -2016-07-16 Jan Nieuwenhuizen - - guile runs macro-based mes:define-syntax, mes runs but yields *undefined*. - - 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 - - syntax... - -2016-07-16 Jan Nieuwenhuizen - - 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 - - *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. - -2016-07-10 Jan Nieuwenhuizen - - add length. - - remove disabled code. - - add chars. - - 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 - - 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 - - mes.c: support `.' and add let. - - boot.mes: support macros, add and, or. - -2016-05-29 Jan Nieuwenhuizen - - boot.mes: boostrap into mes. - -2016-07-09 Jan Nieuwenhuizen - - 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 - - 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 - - Initial. - -*- org -*- - -#+TITLE: ChangeLog - -Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen - - Copying and distribution of this file, with or without modification, - are permitted in any medium without royalty provided the copyright - notice and this notice are preserved. - -Normally a ChangeLog is generated at "make dist" time and available in -source tarballs. diff --git a/sysa/mes-0.22/HACKING b/sysa/mes-0.22/HACKING deleted file mode 100644 index fb6d7e95..00000000 --- a/sysa/mes-0.22/HACKING +++ /dev/null @@ -1,190 +0,0 @@ - -*- org -*- -#+TITLE: Hacking GNU Mes - -* SETUP - guix environment -l guix.scm #64 bit + 32bit - - CC=i686-unkown-linux-gnu-gcc ./configure -or - ./configure - -The 64bit bootstrap is not supported; MesCC needs work to be able to -compile a functional tinycc. - -* BUILD - -GNU Guile can be used as a replacement for Mes. It's faster and has -much better error handling. - - #+BEGIN_SRC bash - make MES=guile - make check MES=guile - #+END_SRC - -Configure to compile with Tiny CC - - #+BEGIN_SRC bash - ./configure CC=tcc --host=i686-unknown-linux-gnu --with-courage - #+END_SRC - -* DEBUG - MES_DEBUG= mes -** Levels - 1) Informational: - - MODULEDIR - - included SCM modules and sources - - result of program - - gc stats at exit - 2) opened files - 3) runtime gc stats - 4) detailed info - - parsed, expanded program - - list of builtins - - list of symbol - - opened input strings - - gc details - 5) lots of data - - usage of opened input strings - - bytes read - 6) globals - -* Bugs -** mes: performance, Mes is now 2-10x slower than Guile. -** mes/mescc lack support for fork/exec on the Hurd. -** mes: gcc-x86_64 compiled mes segfaults with small arena, or gc_up_arena. -** mes: gcc-x86 compiled, tests/srfi-13.test number->string INT-MIN fails: -test: number->string INT-MIN: fail -expected: -2147483648 -actual: -./,),(-*,( -** tcc: tcc-built lib/libc+tcc.c segfaults with mes, with tcc. -** mes: remove pmatch-car/pmatch-cdr hack. -** mescc: softcode stack frame size, now hardcoded and very large -** mes+mescc: parse tcc.c->tcc.E works, compile tcc.E -> tcc.M1 segfaults. - time GUILE_LOAD_PATH=/home/janneke/src/nyacc/module:$GUILE_LOAD_PATH ../mes/scripts/mescc -E -o tcc.E -I . -I ../mes/lib -I ../mes/include -D 'CONFIG_TCCDIR="usr/lib/tcc"' -D 'CONFIG_TCC_CRTPREFIX="usr/lib:{B}/lib:."' -D 'CONFIG_TCC_ELFINTERP="/gnu/store/70jxsnpffkl7fdb7qv398n8yi1a3w5nx-glibc-2.26.105-g0890d5379c/lib/ld-linux.so.2"' -D 'CONFIG_TCC_LIBPATHS="/home/janneke/src/tinycc/usr/lib:{B}/lib:."' -D 'CONFIG_TCC_SYSINCLUDEPATHS="../mes/include:usr/include:{B}/include"' -D CONFIG_USE_LIBGCC=1 -D 'TCC_LIBGCC="/home/janneke/src/tinycc/usr/lib/libc+tcc-gcc.mlibc-o"' -D CONFIG_TCC_STATIC=1 -D ONE_SOURCE=yes -D TCC_TARGET_I386=1 -D BOOTSTRAP=1 tcc.c - time GUILE_LOAD_PATH=/home/janneke/src/nyacc/module:$GUILE_LOAD_PATH MES_ARENA=200000000 ../mes/scripts/mescc -c -o tcc.M1 tcc.E -** mescc: 64 bit compiled mes loses top 4 bytes -*** 64 bit mescc-compiled mes: - #x100000000 => 0 - (modulo 1 #x100000000) => divide-by-zero -*** 64 bit gcc-compiled mes: - #x100000000 => 0 - (modulo 1 #x100000000) => 1 -** mescc: 7n-struct-struct-array.c: struct file f = {"first.h"}; -** test/match.test ("nyacc-simple"): hygiene problem in match -* OLD: Booting from LISP-1.5 into Mes - -Mes started out experimenting with booting from a hex-coded minimal -LISP-1.5 (prototype in mes.c), into an almost-RRS Scheme. - -When EOF is read, the LISP-1.5 machine calls loop2 from loop2.mes, -which reads the rest of stdin and takes over control. The functions -readenv, eval and apply-env in mes.mes introduced define, define-macro -quasiquote and macro expansion. - -While this works, it's amazingly slow. We implemented a full reader -in mes.c, which makes running mes:apply-env mes:eval somewhat -bearable, still over 1000x slower than running mes.c. - -Bootstrapping has been removed and mes.c implements enough of RRS to -run a macro-based define-syntax and syntax-rules. - -loop.mes and mes.mes are unused and lagging behind. Probably it's not -worth considering this route without a VM. GNU Epsilon is taking the -more usual VM-route to provide multiple personas. While that sounds -neat, Lisp/Scheme, bootstrapping and trusted binaries are probably not -in scope as there is no mention of such things; only ML is mentioned -while Guile is used for bootstrapping. - -* Assorted ideas and info -** Using GDB on assembly/a.out -info registers -p/x $eax -p/x $edx -set disassemble-next-line on -gdb-display-disassembly-buffer -b *0x804a79d -** Create memory dump with 32 bit Gcc compiled Mes -make out/i686-unknown-linux-gnu-mes -out/i686-unknown-linux-gnu-mes --dump < module/mes/read-0.mes > module/mes/read-0-32.mo - -x/s *((char **)($rsp+8)) - -** C parser/compiler -*** [[https://savannah.gnu.org/projects/nyacc][nyacc]] -*** PEG: [[http://piumarta.com/software/peg/][parse C using PEG]] -*** [[https://en.wikipedia.org/wiki/Tiny_C_Compiler][Tiny C Compiler]] -*** [[http://www.t3x.org/subc/index.html][Sub C]] -*** [[https://groups.google.com/forum/#!topic/comp.lang.lisp/VPuX0VsjTTE][C intepreter in LISP/Scheme/Python]] - -** C assembler/linker -*** [[http://www.tldp.org/HOWTO/Assembly-HOWTO/linux.html][Assembly HOWTO]] -*** ELF -7f 45 4c 46 -*** [[http://www.muppetlabs.com/~breadbox/software/tiny/][Small ELF programs]] -*** [[http://www.cirosantilli.com/elf-hello-world/][Elf hello world]] -** SC - c as s-expressions -sc: http://sph.mn/content/3d3 -** RNRS -*** [[http://www.scheme-reports.org/][Scheme Reports]] -*** [[ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-349.pdf][Scheme - Report on Scheme]] -*** [[ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-452.pdf][RRS - Revised Report on Scheme]] - -** tiny schemes -http://forum.osdev.org/viewtopic.php?f=15&t=19937 - -http://www.stripedgazelle.org/joey/dreamos.html -http://armpit.sourceforge.net/ -http://common-lisp.net/project/movitz/movitz.html - - janneke: https://github.com/namin/inc looks interesting [15:18] -** Orians Jeremiah - janneke: also, if you look at - https://github.com/oriansj/stage0/tree/master/stage2/High_level_prototypes - [the garbage collected lisp I implemented], if there are any pieces - I could add to finish off your mes lisp bootstrap just let me know - because I would be more than happy to do that :D - OriansJ: that's what I'm hoping for, that our efforts can be - complementary and we can work together -*** lfam (~lfam@2601:47:4180:2ffb:7c05:17de:cf5f:23ef) has quit: Ping timeout: - 246 seconds [00:22] - exciting times! [00:23] - OriansJ: i looked a few times and saw 'LISP empty', so thanks for - the pointer! [00:24] - OriansJ, janneke: from that page, there's also: - https://web.archive.org/web/20160604035203fw_/http://homepage.ntlworld.com/edmund.grimley-evans/bcompiler.html - -** C4/C500 -https://web.archive.org/web/20160604041431/http://homepage.ntlworld.com/edmund.grimley-evans/cc500/cc500.c -https://github.com/rswier/c4/blob/master/c4.c -** Compilers for free -http://codon.com/compilers-for-free -** Small lisps -*** [[https://www.mirrorservice.org/sites/www.bitsavers.org/bits/TI/Explorer/zeta-c/][ZETA-C]] -** Small C compilers -*** tinycc -*** [[https://github.com/rui314/8cc][8cc]] -- a C11 compiler, but simple -8cc is a compiler for the C programming language. It's intended to -support all C11 language features while keeping the code as small and -simple as possible. -*** pcc -*** early GCC? -https://miyuki.github.io/2017/10/04/gcc-archaeology-1.html -*** [[http://tack.sourceforge.net/][ack]] - it may be possible to compile like this: mes |> ack |> pcc |> tcc |> - gcc 4.7.4 |> gcc later version... up to modern -*** [[https://web.archive.org/web/20160402225843/http://homepage.ntlworld.com/edmund.grimley-evans/cc500/][cc500]] -** rain1's Bootstrapping Wiki: https://bootstrapping.miraheze.org/wiki/Main_Page -** rain1's hex86 -https://notabug.org/rain1/hex86/src/master/tests/hex0b3.hex86 -** janneke, have you ever tried testing mescc with csmith? [10:55] -** e.g. as described here - https://jamey.thesharps.us/2016/07/15/testing-strategies-for-corrode/ - ("Randomized testing with Csmith and C-Reduce") [10:58] -** linux syscalls: https://fedora.juszkiewicz.com.pl/syscalls.html -* legalese - -Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen - - Copying and distribution of this file, with or without modification, - are permitted in any medium without royalty provided the copyright - notice and this notice are preserved. diff --git a/sysa/mes-0.22/INSTALL b/sysa/mes-0.22/INSTALL deleted file mode 100644 index dcea9ebd..00000000 --- a/sysa/mes-0.22/INSTALL +++ /dev/null @@ -1,111 +0,0 @@ - -*- org -*- -#+TITLE: Building and Installing GNU Mes - -Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen - - Copying and distribution of this file, with or without modification, - are permitted in any medium without royalty provided the copyright - notice and this notice are preserved. - -Mes can be built in two modes: as a regulare package build or as a -bootstrap package. - -After bootstrapping Mes it can be used to bootstrap TinyCC (tcc) in a -similar way. - -* Get it - git clone [[git://git.savannah.gnu.org][git://git.savannah.gnu.org/mes.git]] - -* Regular build -** Prerequisites -*** Guix - #+BEGIN_SRC bash - guix environment -l guix.scm #64 bit + 32bit - guix environment --system=i686-linux -l guix.scm #32 bit only - #+END_SRC - -*** Other GNU/Linux - - [[https://savannah.gnu.org/projects/mescc-tools/][mescc-tools]], 0.6.1 is known to work. - - [[https://savannah.gnu.org/projects/nyacc][Nyacc]], 0.93.0 is known to work. - - GNU Gcc, 4.9.3 is known to work. - - GNU Guile, version 2.0.12 or is know to work. - - SH, /bin/sh, GNU Bash 4.3 is known to work. - - GNU coreutils - - sed, GNU sed 4.2 is known to work. - - Perl, 5.22 is known to work. - -** Build it - - #+BEGIN_SRC bash - ./configure - make - #+END_SRC - -If you get something like - - #+BEGIN_SRC bash - mes.c:(.text+0x8da0): undefined reference to `__stack_chk_fail' - #+END_SRC - -then your compiler inserts stack protection code. The Mes C Library -does not support that. Turn it off lik this - - #+BEGIN_SRC bash - ./configure CFLAGS=-fno-stack-protector - #+END_SRC - -** Check it - - #+BEGIN_SRC bash - make check - #+END_SRC - -** Install it - - #+BEGIN_SRC bash - make install - #+END_SRC - -* Guix it - - #+BEGIN_SRC bash - guix build -f guix.scm - #+END_SRC - -* Bootstrap build - -The bootstrap build is part of Guix, see -https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/commencement.scm - -** Prerequisites - - [[https://savannah.gnu.org/projects/mescc-tools/][mescc-tools]], 0.6.1 is known to work. - - [[https://savannah.gnu.org/projects/nyacc][Nyacc]], 0.93.0 is known to work. - -** Build it - - #+BEGIN_SRC bash - sh configure.sh [--prefix=] - sh bootstrap.sh - #+END_SRC - -** Check it - - #+BEGIN_SRC bash - sh check.sh - #+END_SRC - -** Install it - - #+BEGIN_SRC bash - sh install.sh - #+END_SRC -* Regular build and bootstrap combine - -To build mes.c using MesCC, configure using --with-bootstrap: - - #+BEGIN_SRC bash - ./configure --with-bootstrap - make - #+END_SRC - -This creates bin/mes-gcc and bin/mes-mescc. diff --git a/sysa/mes-0.22/NEWS b/sysa/mes-0.22/NEWS deleted file mode 100644 index 1c413875..00000000 --- a/sysa/mes-0.22/NEWS +++ /dev/null @@ -1,599 +0,0 @@ - -*- org -*- -#+TITLE: GNU Mes NEWS – history of user-visible changes -#+STARTUP: content hidestars - -Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen - - Copying and distribution of this file, with or without modification, - are permitted in any medium without royalty provided the copyright - notice and this notice are preserved. - -Please send Mes bug reports to bug-mes@gnu.org. - -* Changes in 0.22 since 0.21 -** Core -*** Mes now builds reproducibly with MesCC, cross distribution -Using --with-bootstrap on x86, a bin/mes-mescc is compiled with -mes+mescc, that shall have sha256sum - - 9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb bin/mes-mescc - -This has been verified on GNU Guix, Debian GNU/Linux and NixOS. -*** Mes now builds reproducibly with Guile+MesCC vs Mes+MesCC. -*** Mes now builds reproducibly with Tiny CC-built MesCC. -*** configure now respects the user's CFLAGS, CPPFLAGS and LDFLAGS. -*** Mes now supports mescc-tools 0.5.2 next to 0.6.1. -This allows introducing the Scheme-only bootstrap without updating or -adding new bootstrap binary seeds into GNU Guix. -*** Mes now runs when configured --with-courage on the Hurd: - GNU debian 0.9 GNU-Mach 1.8+git20170609-486/Hurd-0.9 i686-AT386 GNU -Note that mescc does not run; fork and exec are not yet implemented. -*** Mes now configures --with-courage on x86-FreeBSD 12.1 -The initial ELF scaffold tests: exit-42.S, 0exit-42.hex2, -body-exit-42.hex2, hello-mes.S, 0hello-mes.hex2, body-hello-mes.hex2 -pass. -*** configure now has a --with-bootstrap option. -This adds the reproducible bootstrap build of bin/mes-mescc, using -mes+mescc. -*** configure prefers $CC over gcc; tcc over gcc, gcc over cc. -*** Mes now prints an error when attempting to read a file that does not exist. -*** Mes no longer depends on GIT. -** Noteworthy bug fixes -*** Several annoying build problems were fixed, for non-Guix systems. -*** A bug with buffered-read was fixed. -This means that bash-2.05 can now build glibc-2.2.5; notably it now -successfully executes make-syscall.sh. -*** A bug with execlp, execvp for file names containing a slash was fixed. -This should allow make-3.80 running scripts that have "#! ./move-if-change". -* Changes in 0.21 since 0.20 -** Core -*** Mes can now be bootstrapped with Gash and Gash Core Utils. -*** Mes now supports a Scheme-only bootstrap. -*** Mes now supports -c EXPR. -** MesCC -*** Mes C Library now supports bootstrapping GNU Awk, GNU Bash, GNU SED, and GNU Tar. -*** Mes C Library now has limited float support in vfprintf, vsnprintf, vsscanf. -**** 7 new functions -abtod, atof, creat, dtoab, execlp, isgraph, mknod, readlink, strtod, -symlink. -**** 5 new stubs -getgrgid, getgrnam, getpgid, getpgrp, mktime, setgrent. -** Noteworthy bug fixes -*** A bug with `mes -c EXPR' has been fixed. -*** The REPL now works again on x86_64. -*** --with-system-libc now works again. -* Changes in 0.20 since 0.19 -** Core -*** The build system has been simplified, again. -Mes now builds ootb on Debian. -*** Mes now supports -c EXPR. -** Divide by zero is now flagged. -** Language -*** 1 new function: -take-while. -** MesCC -*** The C libraries have been exploded into one function per file. -*** MesCC now has enhanced POSIX/gcc comand line support, e.g. -DFOO=1, --nodefaultlibs, --nostartfiles, --nostdlib. -*** The archiver is now called `mesar'. -*** MesCC now supports Nyacc-0.99. -*** MesCC now depends on MesCC-Tools 0.6.0. -*** 1 new function -__mesabi_uldiv. -** Noteworthy bug fixes -*** map and for-each now support lists with unequal length. -*** interger division has been fixed. -*** isatty now looks at terminfo. -*** signal now uses sigaction correctly for non-x86. -*** string->number now support #x hex-prefix. -*** ungetc now has a buffer per file handle. -* Changes in 0.19 since 0.18 -** Core -*** The build system has been simplified. -*** Mes now prints a backtrace upon error. -*** Performance has been improved 2-8 times, making Mes 2-10 times slower than Guile. -*** Mes now supports a module type and uses a `boot-module'. -*** Mes now supports a hash_table type. -*** Mes now supports a struct type. -*** Mes now supports building a %bootstrap-mes seed from Guix. -** Language -*** Records are now implemented using struct (WAS: vector). -*** 44 new functions -ceil, char-downcase, char-set-adjoin, char-set-complement, -char-upcase, current-time, delete-file, dup, dup2, file-exists?, -floor, frame-printer, get-internal-run-time, getcwd, gettimeofday, -hash, hash-ref, hash-set!, hash-table-printer, hashq, -hashq-get-handle, hashq-ref, hashq-set, inexact->exact, -make-hash-table, make-stack, make-struct, module-define!, -module-printer, module-ref, module-variable, read-line, round, -stack-length, stack-ref, string-downcase, string-tokenize, -string-upcase, struct-length, struct-ref, struct-set! struct-vtable, -struct-vtable, with-error-to-file. -** MesCC -*** Assembly defines have been cleaned-up: duplicates deleted, missing added, wrong fixed. -*** MesCC now supports compiling GNU Bash and GNU Tar. -**** 6 New functions -getegid, geteuid, getppid, setgid, setuid, sigdelset, sigprocmask. -**** 22 New macros -EACCES, ENOSPC, ESPIPE, INT16_MAX, INT16_MIN, INT32_MAX, INT32_MIN, -INT64_MAX, INT64_MIN, INT8_MAX, INT8_MIN, LLONG_MAX, LLONG_MIN, -SIZE_MAX SYS_getegid, SYS_geteuid, SYS_setgid SYS_setuid, S_IRGRP, -S_IROTH, S_IRWXG, S_IRWXO S_ISGID, S_ISUID, S_IWGRP, S_IWOTH, S_IXGRP, -S_IXOTH, UINT16_MAX, UINT32_MAX, UINT64_MAX, UINT8_MAX, -_POSIX_VERSION. -** Noteworthy bug fixes -*** Mes now supports characters #\xNN. -*** Mes now supports assq-ref and assoc-ref with alist == #f. -*** Mes now support \xNN in strings. Fixes using Nyacc-0.86.0. -*** MesCC now supports the unary plus operator. -*** MesCC now supports the `U' integer suffix. -*** MesCC now comes with INTnn_MIN/MAX, UINTnn defines in stdint.h. -*** MesCC now always exits non-zero when assembler or linker fail. -* Changes in 0.18 since 0.17.1 -** Core -*** Mes/MesCC now supports x86_64. -*** Mes/MesCC now brings a Reduced Binary Seed bootstrap to GuixSD. -** Language -*** fold-right now supports 3 lists. -** MesCC -*** MesCC now supports x86_64 (also as cross build), using -m 64. -*** Mes C Library now has better support for bootstrapping gcc-3.0. -*** Mes C test suite now has 178 tests; 74 tests were added. -*** MesCC has been refactored to support use an abstracted assembly language. -*** MesCC now uses Nyacc 0.86.0. -** Noteworthy bug fixes -*** scaffold/tests/7s-struct-short.c has been fixed. -* Changes in 0.17.1 since 0.17 -** MesCC -*** Mes C Library has now been exploded into a separate C file per function. -*** Mes C Library now bootstraps glibc-2.16.0, binutils-2.20.1, gcc-4.7.4. -*** Mes C Library now supports compiling make-3.82. -*** Mes C Library now supports compiling diffutils-2.7. -*** Mes C Library now supports x86_64. -**** 7 new functions -chdir, clock_gettime, closedir, execl, opendir, readdir, time. -**** 5 new stubs -getlogin, setlocale, setvbuf, sigaddset, sigblock. -** Noteworthy bug fixes -*** qsort can now handle lists with duplicate entries. - -* Changes in 0.17 since 0.16.1 -** Core -*** GNU Mes is now an official GNU package. -*** MesCC is now installed as a regular Guile package. -*** Support --srcdir build. -*** Support all standard GNU make targets. -** MesCC -*** Mes C Lib now bootstraps glibc-2.2.5, binutils-2.20.1, gcc-4.7.4. -* Changes in 0.16.1 since 0.16 -** Core -*** Mes now builds out of the box on Debian buster/testing. -*** Mes now comes with a generic build recipe: build-aux/setup-mes.sh. -*** Mes now comes with INFO documentation. -** MesCC -*** MesCC now exits if spawning BLOOD_ELF, M1, or HEX2 fails. -* Changes in 0.16 since 0.15 -** Core -*** Support building with tcc, including Mes C Lib in-line assembly. -*** core:execl now supports 1000 arguments. -** MesCC -*** Mes C Lib now bootstraps glibc-2.2.5, binutils-2.20.1, gcc-4.1.0. -*** MesCC binaries now run on Linux 4.17 too, i.e. survive Linus' new `sane mmap limits.' -*** MesCC now runs with mescc-tools 0.5 (no = in long options). -**** 3 new C test -88-strrchrc, 97-fopen.c, 98-fopen.c. -** Noteworthy bug fixes -*** strrchr now stops when it reaches start of string. -*** fopen now return 0 upon failure. Supports binutils' hack: fd=-2 means `cached'. -*** vfprintf, vsprintf now support precision and width on integers strings better. -*** fread now produces ungetc'd chars too. -*** memcmp now supports comparing 0 bytes, supporting binutils. - -*** The unused ELF header data section, identical to the text section, has been removed. -* Changes in 0.15 since 0.14 -** Core -*** Support fork, exec, waitpid. -*** Boot-0 loading has been refactored. -*** MesCC now has out of the box Geiser support. -** Language -*** 2 new functions -drop, drop-right. -** MesCC -*** MesCC and Mes C Lib can now build binutils-2.30, gcc-2.95.3 and glibc-2.2.5. -*** MesCC now provides dummy crti.o, crtn.o so that tcc needs not be patched for those. -*** Mes C Lib now supports compiling glibc-2.2.25. -*** Mes C Lib now supports compiling gcc-2.95.3 -*** Mes C Lib now supports compiling binutils-2.30. -*** Mes C Lib now supports compiling m4-1.4. -*** Mes C Lib has been split into archs: gcc, x86-mes-gcc and x86-mes. -*** MesCC now has a posixy command line interface. -**** 70 new functions -abs, access, alarm, alloca, atexit, atol, bcmp, bcopy, brk, bzero, -chmod, clearerr, close, dup, dup2, execve, fabs, fcntl, fdgets, feof, -fgets, fileno, fork, freopen, fscanf, fstat, fsync, getcwd, getgid, -getpid, getrusage, getuid, index, ioctl, isalnum, isalpha, isascii, -iscntrl, isprint, ispunct, kill, link, lseek, lstat, mkdir, mktemp, -nanosleep, open, perror, pipe, raise, read, rename, rindex, rmdir, -sbrk, sbrk, setitimer, signal, sleep, stat, strcspn, strdup, strerror, -strncat, strpbrk, strspn, unlink, unsetenv, waitpid. -**** 23 new stubs -abort, atof, bsearch, bsearch, chown, ctime, fpurge, freadahead, -frexp, getpwnam, gmtime, mbstowcs, pclose, popen, rewind, setbuf, -sigsetmask, strftime, sys_siglist, system, times, umask, utime. -**** 10 new C tests -51-strcmp.c, 70-printf.c, 87-sscanf.c, 90-strpbrk.c, 91-fseek.c, -92-stat.c, 93-fread-fwrite.c, 94-unsetenv.c, 95-signal.c, 96-strto.c. - -* Changes in 0.14 since 0.13 -** Core -*** Bootstrapped Mes+MesCC now compiles a tcc that is self-hosting and only slightly patched. -*** The reader now supports binary numbers (previously: read as decimal). -*** String port support has been moved to C. -*** The build has been simplified, the Make-in-Scheme experiment has been removed. -*** 2 new functions -chmod, logxor. -** Language -*** Mes now supports define-immutable-record-type and single set-field from srfi-9 gnu. -*** 12 new functions -basename, chmod, const, delete-duplicates, logxor, string-contains, -string-map, string-replace, string-trim, string-trim-both, -string-trim-right, unfold. -** MesCC -*** MesCC now supports standalone usage of nestedly defined enums, structs and unions. -*** MesCC now supports comparison of unsigned and promotion of signed/unsigned -> unsigned. -*** MesCC now supports sign extension for char, short. -*** MesCC now has stubbing for floats; compiling works, data is fu. -*** MesCC now has full suport for switch case, e.g. with default as first clause. -*** MesCC now supports destruction of casted expressions: ((struct foo*)p)->bar. -*** MesCC now has full support for pre/post, e.g.: (foo--)->bar and permutations. -*** MesCC now supports sizeof any expression or type. -*** MesCC now supports initialization of anonymous unions. -*** MesCC now supports bit fields. -*** MesCC now supports valued functions in expressions: destruction and dereferencing. -*** MesCC now supports function-static variables. -*** MesCC now supports initializer lists in structs and unions. -*** MesCC now has full support for heterogeneous variable declarations, e.g.: char p, *x = "foo", buf[3]; -**** 4 new functions -__lshrdi3, __ashldi3, __ashrdi3, strncpy. -**** 9 new mlibc stubs -__fixdfdi, __fixsfdi, __fixunsxfdi, __fixxfdi, __floatundixf, ldexp, -strtod, strtof, strtold. -* Changes in 0.13 since 0.12 -** Core -*** Bootstrapped Mes+MesCC can now compile a patched tcc in ~1h45' (~25,000 LOC). -*** MesCC scripts for Mes and Guile are now merged; executable is: `mescc'. -*** Mes now uses only one arena for stop-and-copy; doubles available size. -*** Mes now has a Guile-like command-line interface (mes.repl has been removed). -*** Mes now boots into a full Scheme by default. -*** Mes can now be compiled (MES_MINI=1) to boot into a minimal Scheme (~2000 cells). -*** Mes now creates less garbage in the reader and in -append2, append_reverse, reverse, reverse!, vector-for-each, vector-to-list, vector-map. -*** 5 new functions -append-reverse, chmod, ioctl, isatty, isspace, last_pair, reverse!. -** Language -*** 3 new functions -char-whitespace?, chmod, isatty? -** Noteworthy bug fixes -*** Two bugs in the jam scraper/garbage collector have been fixed. -*** equal2_p now uses tail call elimination. -*** Escaped characters in strings are now read and write'd correctly. -*** The repl now expands macros again. -* Changes in 0.12 since 0.11 -** Core -*** Mes can now run Nyacc (0.80.42) to compile itself in ~4min (~3000 LOC). -*** Mes now recursively expands global variables per top level statement. -*** Mes now recursively expands macros per top level statement. -*** Mes now boots from MES_BOOT (default: module/mes/boot-0.scm). -*** Mes now has a full Scheme reader in C again. -This gives a 10x-20x performance improvement and increases the -bootstrap footprint by 160 LOC. -*** Mes reader now supports older abbreviated character forms -#\bel, #\bs, #\ht and #\vt. -*** 3 new functions -equal2?, memq, core:write. -** Language -*** Mes now has an incremental Scheme semantics test suite with 71 small tests. -*** Variable names can now have ticks. -*** Mes now evaluates expresions of COND only once. -*** srfi-9 records have been reimplemented. -*** #\page is now whitespace. -*** # is no longer a character. -*** 2 new macros -define-macro*, with-fluids. -*** 9 new functions -dirname, last, reverse-list->string, setenv, string-drop-right, -string-fold, string-fold-right, string-null?, write. -** MesCC -**** 9 new functions -chmod, getopt_long, ferror, itoab, longjmp, qsort, setenv, setjmp, strtol. -**** 2 new header files -endian.h, sys/signal.h. - -* Changes in 0.11 since 0.10 -** MesCC -*** MesCC now compiles a mes-tcc that fails 41/69 of mescc's C tests. -*** MesCC's libc can now be compiled with tcc (syscall support: write). -*** MesCC now compiles a less-patched tcc: -214/+458 lines [WAS: -333/+747]. -*** MesCC now supports empty for. -*** MesCC has been greatly refactored, 500/3000 lines have been removed. -*** MesCC now supports complex [struct] by value assign foo.bar, foo->bar, foo[bar]. -*** MesCC now depends on Nyacc 0.82.4. -* Changes in 0.10 since 0.9 -** Core -*** 2 new functions -logand, lognot. -*** Mes now includes M1 sources for full source bootstrapping up to tcc. -** Mescc -*** Mescc now depends on Nyacc 0.81.0. -*** Mescc now compiles a mes-tcc that compiles a trivial C to a running a.out. -*** Mescc now supports several (as used my tinycc) struct by value assignments. -*** Mescc now has _start in a separate crt1.c. -*** Mescc now supports initializer arithmetic. -*** Mescc now supports arrays of struct of arbitrary size. -*** Mescc now supports pointer arithmetic. -*** Mescc now defines __i386__, __linux__. -*** Mescc now supports --*p, ++*p. -*** Mescc now supports int foo[bar] = {baz,...}. -*** Mescc now supports \x00 in strings in M1. -*** Mescc now supports complex enum expressions. Thanks, rain1! -*** Mescc now supports short. -*** Mescc now supports foo.bar = foo.baz = bla. -*** Mescc now supports foo = bar < baz and comparison permutations. -*** Mescc now supports (anonymous) structs in unions. -*** Mescc now writes M1 strings if possible. -**** 2 improved mlibc functions -malloc, realloc. -**** 13 new mlibc functions -fclose, fgetc, fprintf, fwrite, memcpy, memmove, memset, snprintf, strcat, -strchr, strrchr, strtoull, vnsprintf. -**** 15 new tinycc-support tests -76-pointer-arithmetic.c, 77-pointer-assign.c, 78-union-struct.c, -79-int-array.c, 7a-struct-char-array.c, 7b-struct-int-array.c, -7c-dynarray.c, 7d-cast-char.c, 7e-struct-array-access.c, -7f-struct-pointer-arithmetic.c, 7g-struct-byte-word-field.c, -7h-struct-assign.c, 7i-struct-struct.c, 7j-strtoull.c, -7k-for-each-elem.c. -** Noteworthy bug fixes -*** Mescc has many fixes for foo.bar[baz], foo[bar].baz with ./-> permutations. -*** Many bugs and limitations in mescc have been fixed and removed. -* Changes in 0.9 since 0.8 -** Core -*** Mes now builds better in non-Guix[SD] legacy distros/environments. Thanks, rain1! -** Mescc -*** Mescc now compiles a modified tinycc into a running [mostly segfaulting] mes-tcc. -https://gitlab.com/janneke/tinycc branch wip-mescc. -*** Mescc now supports locals stack frame larger than 1 byte offset. -*** Mescc now supports incomplete struct initializers {0}. -*** Mescc now supports >>=, <<=, ^=, ~. -*** Mescc now supports the comma operator. -*** Mescc now supports mullti-line string initializers. -*** Mescc now supports unions. -*** Mescc now supports arrays in structs. -*** Mescc now supports structs in structs. -*** Mescc now builds and runs with Guile-2.0 (legacy distro support, Guile-2.2 recommended). -*** Mescc has been refactored to use records. -*** Mescc now bundles tinycc's test2 test suite, passes one more test [34/55 pass]. -*** Mescc now has an incremental test suite consisting of 56 tests. -*** Mescc now supports stdarg variable argument lists. -*** Mescc now has __GNUC__ unset, #f (WAS: 0). -*** Mescc now depends on Nyacc 0.80.3. -*** Mescc now depends on M1 from [[https://github.com/oriansj/mescc-tools][mescc-tools]] v0.2. -*** Mescc now compiles to M1 object files. -**** 7 new mlibc functions -calloc, close, getcwd, lseek, sprintf, unlink, vprintf. -**** 31 new mlibc stubs -execvp, fclose, fdopen, fflush, fopen, fprintf, fread, free, fseek, -ftell, fwrite, localtime, longjmp, memcpy, memmove, memmove, memset, -qsort, remove, setjump, snprintf, sscanf, strchr, strrchr, strstr, -strtol, strtoll, strtoul, strtoull, time, vnsprintf. -**** 10 new header files -alloca.h, float.h, libgen.h, locale.h, stdbool.h, stddef.h, stdint.h, -stdnoreturn.h, sys/select.h, sys/wait.h. -** Noteworthy bug fixes -*** Many bugs and limitations in mescc have been fixed and removed. -* Changes in 0.8 since 0.7 -** Mescc -*** Mescc now has experimental annotation support for hex2. -*** Mescc now depends on the hex2 linker from [[https://github.com/oriansj/mescc-tools][mescc-tools]]. -Direct ELF output support has been removed. -ELF symbol and string table creation has been removed. -*** Mescc has been simplified by leveraging use labels in hex2 output. -*** Mescc now supports continue in loops. -*** Mescc now compiles to hex2 object files. -** Language -*** 1 new function -list-index. -* Changes in 0.7 since 0.6 -** Core -*** The minimal C reader is now always included; dependencies -on i686-unknown-linux-gnu-gcc and binary read-0-32.mo have been -dropped, these are now optional. -** Language -*** Mes reader now supports octal numbers #oXXX. -*** 10 new functions -current-output-port, getopt-long, negate, open-output-file, -option-ref, set-current-output-port, string-rindex, string-suffix?, -with-ouwith-output-to-file, with-output-to-port. -** Mescc -*** Mescc can now be installed and used alongside a gcc installation. -*** Mescc can now handle const anywhere. -*** Mescc now supports array fields in structs. -*** Mescc now supports forward declarations and typedef. -*** Mescc can now handle comments anywhere. -*** Mescc now supports addition and substraction for enum field values. -*** Mescc now supports anonymous enums. -*** Mescc now supports all C99 header files needed to compile tcc.c. -*** build: C sources are now preprocessed separately, then compiled and linked. -*** build: mlibc and C sources are now compiled separately and then linked. -*** mlibc has been moved from Scheme snippets into C. -*** Mescc now supports -c, -D, -E, -I and -o options. -**** open now supports optional third mode parameter. -** Noteworthy bug fixes -*** string-index now supports function predicate. -*** number->string for radix > 10 now produces `a' instead of `:'. -* Changes in 0.6 since 0.5 -** Core -*** configure, build now supports x86 and development for arm with-courage. -** Language -*** Nyacc has been unbundled and is now a dependency. -*** Mes now supports case-lambda. -*** Mes reader now supports abbreviated form for return character #\cr. -*** 1 new function -string-index. -** Mescc -*** Mescc can be used on regular C sources, like tinycc's tests/test2 suite. -*** make check passes 33/55 of tinycc's test suite etest/test2 tests. -*** Mescc now recognizes `short' as a type. -*** Mescc now supports sizeof (), sizeof(). -*** Mescc now respects enum field initializers and supports enum variables. -*** Mescc now supports binary constants . -*** Mescc now supports assignments from ==, != boolean expressions . -*** Mescc now supports &, ^. -*** Mescc now supports struct pointers. -*** Mescc now supports struct definition with immediatete variable declaration. -*** Mescc now supports calling (returning correctly from) void functions. -*** Mescc now handles case statements breaks without compound correctly. -*** Mescc now has better [int/pointer] array support. -*** Mescc now has better support for simple (non-array-)structs. -*** Mescc now supports multiple declarations in one statement like: int a,b; -**** 2 new mlibc functions -printf, strcpy. -** Noteworthy bug fixes -*** Installed mes and mes.repl now also run outside of source tree again. -* Changes in 0.5 since 0.4 -** Core -*** Support compilation with Mescc. -*** Support compilation with -nostdinc, -nostdlib using mlibc. -*** Support call-with-current-continuation. -*** Support exception handling, catch/throw. -*** Give sensible error message when a macro is missing. -** Language -*** Map now supports 4 lists. -*** The reader supports negative hex numbers. -*** 24 new functions -access?, assoc-set! c????r, compose, list->char-set, -open-input-string, read-string, string-delete, with-throw-handler. -** Mescc -*** Mescc can be used separately as a Nyacc-based C compiler backend for Guile. -*** Switch to Nyacc frontend, update Nyacc to 0.76.5. -*** Mescc now has a test suite, scaffold/t.c. -*** Mescc now includes a minimal C library libc/mlib.c libc/mstart.c. -*** Mescc can now compile mes.c. -** Noteworthy bug fixes -*** The build system (configure, make) has been refactored. -*** Support map-4. -*** Evaluate arguments of OR only once. -*** Fix assq-set! -*** Fix ,expand in the REPL. - -* Changes in 0.4 since 0.3 -** Core -*** Improved performance. -Macros are now memoized; after expansion and before eval'ing the -expanded form, their input s-expression is replaced by the expansion. -This yields a nice performance improvement which finally allowed -moving all non-essential bits from the C-core into Scheme...including -the reader. The Scheme reader is much, much slower than the previous -C version, making Mes--again-- feel slow. Think of that as a feature. -*** Bootstrap with minimal reader in C. -The C-reader needs only support reading of words and lists -(s-expressions), line-comments to read the initial [[file:module/mes/read-0.mes][Scheme reader]] which -then takes over and handles reading of quoting, characters, strings, -block-comments. -*** Reduced size. -Total C size: ~1500LOC. The main Mes evaluator is now ~1000LOC -including cell creation and garbage collector. This code is able to -execute a Scheme program that has been loaded into memory. Another -~500LOC is spent to load a minimal Scheme program and to dump it, to -provide a small posix interface, math functions and do some error -reporting. -*** Programs can be dumped and loaded using --dump and --load. -** Language -*** Minimal syntactic exception support for Nyacc. -*** Minimal syntactic fluids support for Nyacc. -*** Keywords are now supported. -*** Cond now supports =>. -*** Guile's optargs: lambda* and define* are now supported. -*** #;-comments are now supported. -*** Non-nested #| |#-comments are now supported. -*** Quasisyntax is now supported. -*** R7RS syntax-rules with custom ellipsis, with-ellipsis are now supported. -*** 9 new [partial] modules -(mes fluids), (mes nyacc), (mes optargs), (mes pmatch), (mes peg), -(srfi srfi-13), (srfi srfi-9-psyntax), (srfi srfi-26), (srfi srfi-43), -(rnrs arithmetic bitwise), (sxml xpath) -*** 36 new functions -1+, 1-, abs, and=>, append-reverse, ash, char<=?, char=?, -char>?, even?, filter, delete, delq, vector-copy, fold, fold-right, -getenv, iota, keyword->symbol list-head, list-tail, negative?, odd?, -positive?, remove!, remove, string->number, string-copy, -string-prefix?, string=, string=?, symbol->keyword symbol-append, -symbol-prefix?, unless, write, zero?. -** Noteworthy bug fixes -*** Macros are now memoized. -*** An error is reported when using a wrong number of arguments with a call. -*** Cond now evaluates its test clauses only once. -*** Append can also handle one argument. -*** For-each now supports 2 list arguments. -*** Map now supports 3 list arguments. -*** Backslash in string is supported. -*** Closure is not a pair. -*** All standard characters are supported. -*** Mescc now also runs in Guile. -* Changes in 0.3 since 0.2 -** Core -*** Number-based rather than pointer-based cells. -*** Garbage collector aka Jam scraper. -A variant on SICP's stop and copy Garbage Colletor (Jam Scraper?) -algorithm has been implemented. -*** The reader has been moved to Scheme. -** Language -*** Simple loadable modules. -*** Srfi-9 and match use handwritten syntax-rules (mes-use-module (mes syntax)). -*** Optional syntax-case using psyntax (mes-use-module (mes psyntax)). -** Noteworthy bug fixes -*** Srfi-0 has been fixed. -* Changes in 0.2 since 0.1 -** Core -*** Names of symbols and strings are list of characters [WAS: c-string]. -*** Sc-expand from pre-R6RS's psyntax has been integrated. -*** Undefined variable error now shows the name of the undefined variable. -*** There is now only one SCM type for builtin functions. -*** Macro expansion has been cleaned-up. -** Language -*** Mes now provides a subset of R6RS. -*** Mes now provides syntax-case. -*** Mes now provides `load'. -** Noteworthy bug fixes -*** Using values as second parameter of builtin function yields first value. -*** Quoted internals (e.g. 'if 'lambda) are now symbols. -*** Syntax error now exits. -*** Make+Bash voodoo has been replaced by build-aux/mes-snarf.scm. -*** Apply now accepts multiple list arguments. -*** Apply of character, inernal, number, string is an error. -*** Quasisyntax reading - -* Changes in 0.1 (since progress report #2) -** Core -*** expand_macro is now a separate function. -*** A smaller core can now compiled using BOOT=1. -The smaller core does not provide define, define-macro, or quasiquote; -these are provided from a Scheme version of implemented eval/apply. -** Language -*** Mes now provides a subset of R5RS. -*** Mes now provides let-syntax. -*** Mes now provides match. -*** Mes now provides quasisyntax, unsyntax and unsyntax-splicing. -** User interface -*** Mes now provides a REPL, run: - scripts/repl.mes -*** Mes compiler can be run as a script: - scripts/mescc.mes doc/examples/main.c -*** Macro expansion can be inspected in the REPL, e.g.: - ,expand (and 0 1) -** Noteworthy bug fixes -*** Performance: scripts/mescc.mes now takes 2s to compile main.c (was 1'20"). -*** Symbols are now truly unique. - * '(), #t, #f are no longer symbols. diff --git a/sysa/mes-0.22/PORTING b/sysa/mes-0.22/PORTING deleted file mode 100644 index 706ea13f..00000000 --- a/sysa/mes-0.22/PORTING +++ /dev/null @@ -1,84 +0,0 @@ -#+COMMENT: -*- org -*- -#+TITLE: Porting GNU Mes - -* Porting GNU Mes to ARM - -The ARM port can be found in wip-arm on savannah. - -For development, we use Guix's qemu-binfmt-service-type. - -** Guix Setup, see [[info:guix#Virtualization%20Services][Virtualization Services]]. - -Add something like - #+BEGIN_SRC scheme - (service qemu-binfmt-service-type - (qemu-binfmt-configuration - (platforms (lookup-qemu-platforms "arm")) - (guix-support? #t))) - #+END_SRC -to your config.scm and run guix system reconfigure. - -** Setup environment - - #+BEGIN_SRC bash - guix environment -s armhf-linux --pure --ad-hoc bash coreutils diffutils gawk gcc-toolchain grep guile help2man make nyacc pkg-config sed texinfo - PATH=~/src/mescc-tools-arm/bin:$PATH - #+END_SRC - -(No git, graphviz on ARM yet). - -** Try it - #+BEGIN_SRC bash - ./configure --with-courage --with-system-libc - ./simple.sh - #+END_SRC - -some failures are expected. - -** Build it - #+BEGIN_SRC bash - ./configure --with-courage --with-system-libc - make MES=guile - make check - #+END_SRC - -expect many failures. Non-system-libc, i.e. using the Mes C Library is currently WIP. - -* Porting GNU Mes to x86_64 - -The x86_64 port is almost done, only a few bugs remain. The Guix -bootstrap for x86_64 uses x86 mes and that is not expected to change. - -* Porting GNU Mes to GNU/Hurd - -The Hurd port can be found in wip-hurd on savannah. For development, we -use a Debian GNU/Hurd vm. - -* Porting GNU Mes to FreeBSD -The FreeBSD port can be found in wip-freebsd on savannah. - -* Porting the Reduced Binary Seed bootstrap to NixOS -The NixOS port of the Reduced Binary Seed bootstrap lives on the -mes-bootstrap branch in https://github.com/xwvvvvwx/nixpkgs - -* Porting the Reduced Binary Seed bootstrap to Debian GNU/Linux -To port the Reduced Binary Seed bootstrap to a traditional distribution -such as Debian, two things need to happen: the bootstrap must be ported -and the distribution build process needs to change to start from a only -binary seed. - -The porting aspect is probably easiest: we start by packaging GNU Mes as -a regular package. Having Mes built as a regular package, we can then -build a bootstrap Mes. This bootstrap Mes can be used to build tinycc, -and so on. - -Once we have shown that the Debian base system can be bootstrapped from -a Reduced Binary seed, thus significantly reducing the Trusted Computing -Base (TCB), strategic decisions about the build process can start. - -* Legalese -Copyright © 2019 Jan (janneke) Nieuwenhuizen <[[mailto:janneke@gnu.org][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. diff --git a/sysa/mes-0.22/README b/sysa/mes-0.22/README deleted file mode 100644 index 7607b6c8..00000000 --- a/sysa/mes-0.22/README +++ /dev/null @@ -1,84 +0,0 @@ -#+COMMENT: -*- org -*- -#+TITLE: About GNU Mes - -#+SUBTITLE: Maxwell Equations of Software - -[[https://www.gnu.org/software/mes][GNU Mes]] is a Scheme interpreter and C compiler for bootstrapping the GNU -System. Since version 0.22 it has again helped to halve the size of -opaque, uninspectable binary seeds that are currently being used in the -[[https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/][Reduced Binary Seed bootstrap]] of [[https://www.gnu.org/software/guix][GNU Guix]]. The final goal is to help -create a full source bootstrap as part of the [[http://bootstrappable.org][bootstrappable builds]] -effort for UNIX-like operating systems. - -The Scheme interpreter is written in ~5,000 LOC of simple C, and the C -compiler written in Scheme and these are mutual self-hosting. This -mes.c is [[https://github.com/oriansj/mes-m2][being simplified]] to be transpiled by [[https://github.com/oriansj/m2-planet][M2-Planet]]. - -Mes has a Garbage Collector, a library of loadable Scheme modules-- -notably Dominique Boucher's [[https://github.com/schemeway/lalr-scm][LALR]], Pre-R6RS [[https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html][portable syntax-case]] with -R7RS ellipsis, Matt Wette's [[https://www.nongnu.org/nyacc][Nyacc]] --and test suite, just enough to -support a REPL and a C99 compiler: mescc. - -Mes+MesCC can compile an only [[http://gitlab.com/janneke/tinycc][lightly patched TinyCC]] that is -self-hosting. Using this tcc and the Mes C library we now have a -Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5, -binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap Guix for -i686-linux and x86_64-linux. - -Mes is inspired by The Maxwell Equations of Software: [[http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf][LISP-1.5]] -- John -McCarthy page 13, GNU Guix's source/binary packaging transparency and -Jeremiah Orians's [[https://github.com/oriansj/stage0][stage0]] ~500 byte self-hosting hex assembler. - -GNU Mes is free software, it is distributed under the terms of the GNU -General Public Licence version 3 or later. See the file [[file:COPYING][COPYING]]. - -* Get it - - #+BEGIN_SRC bash - git clone git://git.savannah.gnu.org/mes.git - #+END_SRC - -* Build it (see [[file:INSTALL][INSTALL]] for full instructions) - - #+BEGIN_SRC bash - ./configure - make all - make check - #+END_SRC - -* REPL it - - #+BEGIN_SRC bash - ./pre-inst-env mes - #+END_SRC - -* MesCC compiler - - #+BEGIN_SRC bash - ./pre-inst-env mescc -c scaffold/main.c - #+END_SRC - -* Bugs - - Please send Mes bug reports to [[mailto:bug-mes@gnu.org][bug-mes@gnu.org]]. - -* Links - [0] https://www.gnu.org/software/mes - [1] https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/ - [2] https://www.gnu.org/software/guix - [3] https://bootstrappable.org - [4] https://github.com/oriansj/mes-m2 - [5] https://github.com/oriansj/m2-planet - [6] https://github.com/schemeway/lalr-scm - [7] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html - [8] https://www.nongnu.org/nyacc - [9] https://gitlab.com/janneke/tinycc - [10] [[http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf]] - [11] https://github.com/oriansj/stage0 - -* Legalese -Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <[[mailto:janneke@gnu.org][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. diff --git a/sysa/mes-0.22/ROADMAP b/sysa/mes-0.22/ROADMAP deleted file mode 100644 index ca476c45..00000000 --- a/sysa/mes-0.22/ROADMAP +++ /dev/null @@ -1,100 +0,0 @@ - -*- org -*- -#+TITLE: Tentative GNU Mes Road Map - -Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen - - Copying and distribution of this file, with or without modification, - are permitted in any medium without royalty provided the copyright - notice and this notice are preserved. - -The goals of the GNU Mes project are two-fold: - - - to bootstrap the GNU System purely from source, without using any binary - seeds. - - - to aid the Reproducible-Builds.org effort; demonstrate the impact and - importance of GNU and Software Freedom. - -Since its inception, the project has gone a long way towards that goal. Below -is a list of items we want for version "1.0" of GNU Mes. - -You're welcome to discuss this road map on bug-mes@gnu.org or #bootstrappable -on Freenode! - -* TODO -** release 0.x, unsorted - - Merge the Scheme-only bootstrap which uses Gash and Gash Core - Utilities to remove from bootstrap-binary seed : Awk, Bash, Core - Utilities, Grep, Gzip, Sed, Tar. - - Introduce the Reduced Binaries Seed bootstrap to NixOS (Debian, - Arch, Gentoo, ...?) - - Full Source Bootstrap: compile mes.c using M2-Planet. Jeremiah - branched-out from mes; see https://github.com/oriansj/mes-m2, also see the - branches: wip-full-source-bootstrap, wip-m2-merge and wip-m2. - - Full Guile-compatible module support: define-module, define-public, - export, use-modules, ... - - ARMv7/AArch64 support: Mes C Library and MesCC. - - Simplify eval-apply and other core functionality (see mes-m2). - - Support native x86_64 bootstrap. - - Simplify MesCC ``MesCC should optimize ease of convincing us of its - correctness'' - - tcc: remove or upstream patches from tcc-boot. - - tcc: build 0.9.27 directly instead of via 0.9.26, see tinycc -** after release 1.0 - - Build Guix packages using Mes: run or simplify (guix build utils), - (guix build gnu-build-system). - - Build Guix packages without guix-daemon. See Ludovic's initrd build - work. - - Bootstrap support for the Hurd. Most needed now are fork and exec. - - Replace the initial gcc-2.95.3 with gcc-4.6.4. - - FreeBSD, *BSD? - wip-bootstrappable@0.9.27 branch - - Skip tcc: Build gcc using MesCC. - - better garbage collector. - - mes/mescc: proper docstrings, api reference documentation. - - mes/mescc: bootstrap a minimal Guile? - + libguile/{eval,init,list,strings,values,..}. - + ice-9/eval.scm - - syntax-case bootstrap problem - + resolve portable syntax-case bootstrap, or - + get full source syntax-case up (Andre van Tonder?) - https://srfi.schemers.org/srfi-72/srfi-72.html, or - + ... drop it? -* DONE - - 0.22 GNU Mes now builds reproducibly cross-platform, runs on the - Hurd and has better support for other distributions and kernels. - - 0.21 GNU Mes now supports a Scheme-only bootstrap and is packaged in - Debian GNU/Linux. - - 0.20 GNU Mes brings the Reduced Binary Source bootstrap to Guix. - - 0.19 GNU Mes now compiles TinyCC in ~8min and supports building Bash and - GNU Tar. - - 0.18 GNU Mes now supports GuixSD bootstrap (x86,x86_64) and has native - x86_64 support. - - 0.17.1 GNU Mes now allows removing glibc, binutils and gcc from the GuixSD - bootstrap. - - 0.17 GNU Mes is now an official GNU project and bootstraps gcc-4.7.4. - - 0.16.1 Mes now has info docs and installs ootb on Debian buster/testing. - - 0.16 Mes Lib C now bootstraps glibc-2.2.5, binutils-2.20.1, gcc-4.1.0. - - 0.15: MesCC now has a libc+gnu that supports compiling binutils-2.14, - gcc-2.95.3 and glibc-2.2.5. - - 0.14: Mes+MesCC now compiles a slightly patched self-hosting tcc. - - 0.13: Mes+MesCC now compiles a modified, functional tcc.c (~25,000LOC) in - 1h30'. - - 0.12: Mes+MesCC now compiles mes.c (~3000LOC) in ~4min. - - 0.11: MesCC now compiles a mes-tcc that passes 26/69 of mescc's C tests. - - 0.10: Mescc now compiles a mes-tcc that compiles a trivial C to a running - a.out. - - 0.9: Mescc now writes M1 macro assembly files and compiles tcc. - - 0.8: Mescc now writes object files in stage0's labeled hex2 format. - - 0.7: Mescc supports -E, -c, -o options, include more complete set of - header files, enough to work on compiling tinycc's tcc.c albeit a somewhat - modified version. - - 0.6: Work with unmodified, unbundled Nyacc; compile 33/55 tinycc's - tests/test2 suite. - - 0.5: Mutual self-hosting Scheme interpreter and C compiler: mes.c and - mescc, Support call-with-current-continuation, refactor catch/throw - - 0.4: Support Nyacc, Gcc-compiled Mes compiles minimal main.c using nyacc - - 0.3: Garbage collector - - 0.2: Support psyntax - - 0.1: Mes eval/apply feature complete; support syntax-rules, compile main.c - using LALR, dump ELF diff --git a/sysa/mes-0.22/build-aux/GNUmakefile.in b/sysa/mes-0.22/build-aux/GNUmakefile.in deleted file mode 100644 index a5a3ffe9..00000000 --- a/sysa/mes-0.22/build-aux/GNUmakefile.in +++ /dev/null @@ -1,402 +0,0 @@ -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -SHELL=@BASH@ -srcdest=@srcdest@ -srcdir=@srcdir@ -abs_top_srcdir=@abs_top_srcdir@ -abs_top_builddir=@abs_top_builddir@ - -GUILE_FLAGS:=--no-auto-compile -L . -L module -C . -C module - -cleaning-p:=$(filter clean%, $(MAKECMDGOALS))$(filter %clean, $(MAKECMDGOALS)) - -ifndef cleaning-p -include .config.make -ifneq ($(prefix),) -prefix-arg=--prefix=$(prefix) -endif -ifneq ($(build),) -build-arg=--build=$(build) -endif -ifneq ($(host),) -host-arg=--host=$(host) -endif -ifeq ($(mes_libc),system) ---with-system-libc=system -endif -.config.make: - ${srcdir}/configure $(prefix_arg) $(host-arg) $(build-arg) $(with-system-libc) -endif - -PHONY_TARGETS:=\ - TAGS\ - all-go\ - all\ - build\ - check\ - clean-go\ - clean\ - default\ - dist\ - distclean\ - doc\ - dvi\ - gcc\ - generate-ChangeLog\ - help\ - html\ - info\ - install-dvi\ - install-html\ - install-pdf\ - install-ps\ - install-strip\ - install\ - installcheck\ - installdirs\ - maintainer-clean\ - man\ - mes-gcc\ - mes-tcc\ - mes\ - mostlyclean\ - pdf\ - ps\ - sign-dist\ - uninstall\ - web\ -# - -.PHONY: $(PHONY_TARGETS) - -default: all - -all: doc - -doc: build - -build: - $(SHELL) build.sh - -src/${program_prefix}mes: build - -clean: - rm -f *.o *.s bin/mes bin/mes-gcc bin/mes-mescc - rm -f mes.{aux,cp,cps,fn,info,log,tmp,toc,vr,vrs} - rm -f .log build.log - rm -f 0exit-42 0hello-mes exit-42 body-exit-42 body-hello-mes hello-mes - rm -f build-aux/mes-snarf.go - rm -f module/mescc.go - rm -f module/mes/*.go module/mescc/*.go - rm -f module/mescc/i386/*.go - rm -f module/mescc/x86_64/*.go - rm -rf gcc-lib/*.o gcc-lib/*.s gcc-lib/*.a gcc-lib/*-mes - rm -f gcc-lib/libc+gnu.c - rm -f gcc-lib/.log gcc-lib/build.log - rm -rf mescc-lib/*.o mescc-lib/*.s mescc-lib/*.a mescc-lib/*-mes - rm -f mescc-lib/libc+gnu.c - rm -f mescc-lib/.log mescc-lib/build.log - rm -rf mescc/bin - rm -f scaffold/boot/*.log scaffold/boot/*.trs - rm -f test-suite.log tests/*.log tests/*.trs - rm -f scaffold/*.s scaffold/*.o - rm -f doc/images/gcc-mesboot-graph.{eps,pdf,png} - rm -f doc/mes.1 doc/mesar.1 doc/mescc.1 - rm -f .config .config.E .config.o - -distclean: clean - rm -f GNUmakefile bootstrap.sh build.sh check.sh install.sh uninstall.sh - rm -f include/mes/config.h - rm -f .config.make config.sh mescc-lib/config.sh gcc-lib/config.sh - rm -f scripts/mesar scripts/mescc scripts/mescc.scm scripts/m2-merge - rm -f TAGS - -mostlyclean: clean - -maintainer-clean: distclean - rm -f doc/mes.info - rm -f doc/version.texi - -TAGS: - etags ${srcdest}lib/*.c ${srcdest}lib/*/*.c ${srcdest}src/*.c ${srcdest}include/*.h ${srcdest}include/sys/*.h - -all-go: - ${srcdest}build-aux/build-guile.sh - -clean-go: - rm -f $(shell find . -name '*.go') - -check: - $(SHELL) check.sh - -check-mescc: - $(SHELL) pre-inst-env build-aux/check-mescc.sh - -# Mes does not feature post-install checks yet, so we're great! -installcheck: - true - -install: - $(SHELL) install.sh - -uninstall: - $(SHELL) uninstall.sh - -doc/version.texi: ${srcdest}doc/mes.texi GNUmakefile - @mkdir -p $(@D) - (set `LANG= date -r $< +'%d %B %Y'`;\ - echo "@set UPDATED $$1 $$2 $$3"; \ - echo "@set UPDATED-MONTH $$2 $$3"; \ - echo "@set EDITION $(VERSION)"; \ - echo "@set VERSION $(VERSION)") > $@ - -doc: doc/version.texi -ifdef MAKEINFO -doc: info -else -$(warning skipping info: no makeinfo) -endif - -ifdef HELP2MAN -doc: man -else -$(warning skipping man: no help2man) -endif - -info: doc/mes.info - -doc/mes.info: ${srcdest}doc/mes.texi doc/version.texi ${srcdest}doc/images/gcc-mesboot-graph.png GNUmakefile - $(MAKEINFO) -o $@ -I doc -I doc $< - -doc/images/%.eps: ${srcdest}doc/images/%.dot -ifdef DOT - $(DOT) -T eps $< > $@ -else - touch $@ -endif - -doc/images/%.pdf: ${srcdest}doc/images/%.dot -ifdef DOT - $(DOT) -T pdf $< > $@ -else - touch $@ -endif - -doc/images/%.png: ${srcdest}doc/images/%.dot -ifdef DOT - $(DOT) -T png $< > $@ -else - touch $@ -$(warning info: graphvis missing: no images) -endif - -man: doc/mes.1 doc/mescc.1 doc/mesar.1 - -# disable builtin-rules -%.o: %.s -%.s: %.S -%.o: %.S -%.o: %.c -%: %.S -%: %.o -%: %.c - -doc/mes.1: src/${program_prefix}mes | build - MES_ARENA=10000000 ./pre-inst-env $(HELP2MAN) \ - --name="Scheme interpreter for bootstrapping the GNU system" \ - $( $@ - -doc/mescc.1: scripts/mescc src/${program_prefix}mes | build - MES_ARENA=10000000 ./pre-inst-env $(HELP2MAN) \ - --name="C99 compiler in Scheme for bootstrapping the GNU system" \ - $( $@ - -doc/mesar.1: scripts/mescc src/${program_prefix}mes | build - MES_ARENA=10000000 ./pre-inst-env $(HELP2MAN) \ - --name="Archiver for MesCC" \ - $( $@ - -html: doc/html/index.html - -doc/html/index.html: ${srcdest}doc/mes.texi doc/version.texi doc/images/gcc-mesboot-graph.png - $(MAKEINFO) --html -o $(@D) -I ${srcdest}doc -I doc $< - -dvi: doc/mes.dvi - -doc/mes.dvi: ${srcdest}doc/mes.texi - $(MAKEINFO) --dvi -I ${srcdest}doc -I doc -o doc/mes.dvi $< - -pdf: doc/mes.pdf - -doc/mes.pdf: ${srcdest}doc/mes.texi - $(MAKEINFO) --pdf -I ${srcdest}doc -I doc -o doc/mes.pdf $< - -ps: doc/mes.ps - -doc/mes.ps: ${srcdest}doc/mes.texi - $(MAKEINFO) --ps -I ${srcdest}doc -I doc -o doc/mes.ps $< - -WEB_IMAGES:=\ - doc/images/gcc-mesboot-graph.eps\ - doc/images/gcc-mesboot-graph.pdf\ - doc/images/gcc-mesboot-graph.png - -web: info $(WEB_IMAGES) - GENDOCS_TEMPLATE_DIR=doc build-aux/gendocs.sh -I doc -s ${srcdest}doc/mes.texi -o doc/web/manual --email bug-mes@gnu.org mes "GNU Mes manual" - -### dist -COMMIT=$(shell test -e ${srcdest}.git && (cd ${srcdir} && git describe --dirty 2>/dev/null) || cat ${srcdest}.tarball-version) -TARBALL_VERSION=$(COMMIT:v%=%) -TARBALL_DIR:=$(PACKAGE)-$(TARBALL_VERSION) -TARBALL:=$(TARBALL_DIR).tar.gz -# Be friendly to Debian; avoid using EPOCH -MTIME=$(shell git show HEAD --format=%ct --no-patch 2>/dev/null) -# Reproducible tarball -TAR_FLAGS=--sort=name --mtime=@$(MTIME) --owner=0 --group=0 --numeric-owner --mode=go=rX,u+rw,a-s - -.tarball-version: - echo $(COMMIT) > $@ - -GIT_ARCHIVE_HEAD:=git archive HEAD -- -GIT_LS_FILES:=git ls-files -ifeq ($(wildcard .git),) -GIT_ARCHIVE_HEAD:=tar -cf- -GIT_LS_FILES:=find -MTIME:=0 -endif - -dist: $(TARBALL) - -sign-dist: $(TARBALL) - gpg -a --output $(TARBALL).sig --detach-sig $(TARBALL) - git checkout ChangeLog - -tree-clean-p: - test ! -d .git || git diff --exit-code > /dev/null - test ! -d .git || git diff --cached --exit-code > /dev/null - @echo commit:$(COMMIT) - -generate-ChangeLog: - $(PERL) ${srcdest}build-aux/gitlog-to-changelog --srcdir=${srcdir} > $@ - cat ChangeLog >> generate-ChangeLog - mv generate-ChangeLog ChangeLog - -$(TARBALL): .tarball-version | generate-ChangeLog - ($(GIT_LS_FILES) \ - --exclude=$(TARBALL_DIR); \ - echo $^ | tr ' ' '\n') \ - | tar $(TAR_FLAGS) \ - --transform=s,^,$(TARBALL_DIR)/,S -T- -cf- \ - | gzip -c --no-name > $@ - git checkout ChangeLog - -ifdef GUIX -update-hash: $(TARBALL) - $(GUIX) download file://$(PWD)/$< - sed -i -e 's,(base32 #!mes!# "[^"]*"),(base32 #!mes!# "$(shell $(GUIX) hash $<)"),' guix/git/mes.scm - -else -$(warning update-hash: no guix) -endif - -tag: - git tag -s v$(VERSION) -m "GNU Mes $(VERSION)." - -# Release process -# 0. Prepare git, see history: -# - doc: Release update -# + NEWS, etc. -# + doc/announce/ANNOUNCE-0.22, using xxx for checksums -# - Release 0.22 -# 1. make tag VERSION=0.22 -# 2. make sign-dist -# 3. make release -# - Update doc/announce/ANNOUNCE-0.22 -# - doc: Post-release update. -# 4. verify bootstrap - -guix-build: - ./pre-inst-env $(GUIX) build mes@$(VERSION) --with-source=$(TARBALL) - -release: update-hash | gen-announce guix-build - -GPG_KEY_ID:=1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273 -GEN_ANNOUNCE=$(GNULIB)/build-aux/announce-gen -GNULIB=../../gnulib -gen-announce: - $(GEN_ANNOUNCE)\ - --release-type=beta\ - --package-name=mes\ - --previous-version='0.21 '\ - --current-version=$(VERSION)\ - --gpg-key-id=$(GPG_KEY_ID)\ - --url-directory=https://ftp.gnu.org/gnu/mes\ - --news=NEWS\ - > doc/announce/ANNOUNCE-$(VERSION)- - -installdirs: mkinstalldirs - mkdir -p\ - $(DESTDIR)$(bindir)\ - $(DESTDIR)$(datadir)\ - $(DESTDIR)$(libdir)\ - $(DESTDIR)$(infodir)\ - $(DESTDIR)$(mandir) - -install-dvi: dvi - mkdir -p $(DESTDIR)${docdir} - cp doc/mes.dvi $(DESTDIR)${docdir} - -install-html: html - mkdir -p $(DESTDIR)${docdir} - tar -cf- -C doc html | tar -xf- -C $(DESTDIR)${docdir} - -install-pdf: pdf - mkdir -p $(DESTDIR)${docdir} - cp doc/mes.pdf $(DESTDIR)${docdir} - -install-ps: ps - mkdir -p $(DESTDIR)${docdir} - cp doc/mes.ps $(DESTDIR)${docdir} - -# We do not strip binaries, binutils' strip corrupts M1+hex2-generated ELFs -install-strip: install - - -define HELP_TOP -Usage: make [OPTION]... [TARGET]... - -Main and non-standard targets: - all update everything - all-go update .go files - dist update $(TARBALL) - doc update documentation - check run unit tests - clean run git clean -dfx - clean-go clean .go files - info update info documentation - install install in $(prefix) - install-info install info docs in $(prefix)/share/info - release dist and tag - uninstall uninstall from $(prefix) -endef -export HELP_TOP -help: - @echo "$$HELP_TOP" - -include ${srcdest}build-aux/export.make diff --git a/sysa/mes-0.22/build-aux/bootstrap.sh.in b/sysa/mes-0.22/build-aux/bootstrap.sh.in deleted file mode 100644 index 1fbd38df..00000000 --- a/sysa/mes-0.22/build-aux/bootstrap.sh.in +++ /dev/null @@ -1,114 +0,0 @@ -#! @SHELL@ - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2019 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -LANG= -MES_ARENA=${MES_ARENA-20000000} -export MES_ARENA -MES_MAX_ARENA=${MES_MAX_ARENA-${MES_ARENA}} -export MES_MAX_ARENA -MES_STACK=${MES_STACK-5000000} -export MES_STACK -MES_PREFIX=${MES_PREFIX-$PWD} - -. ./config.sh -. ${srcdest}build-aux/configure-lib.sh -. ${srcdest}build-aux/cflags.sh - -CPPFLAGS="-D HAVE_CONFIG_H=1 -I include" -AM_CFLAGS="" -mkdir -p mescc-lib -cp config.sh mescc-lib/config.sh -cd mescc-lib -srcdest=../${srcdest} -ln -sf ${srcdest}mes . -ln -sf ${srcdest}module . -ln -sf ${srcdest}src . -AM_CPPFLAGS="-D HAVE_CONFIG_H=1 -I ${srcdest}include -I ${srcdest}include/$mes_kernel/$mes_cpu" - -mkdir -p $mes_cpu-mes -$CC -c $AM_CPPFLAGS $CPPFLAGS $AM_CFLAGS $CFLAGS ${srcdest}lib/$mes_kernel/$mes_cpu-mes-$compiler/crt1.c -cp crt1.o $mes_cpu-mes -cp crt1.s $mes_cpu-mes - -objects= -for c in $libc_mini_SOURCES; do - o=$(basename $c .c).o - if test ! -e $o -o ${srcdest}$c -nt $o; then - echo " CC $c" - $CC -c $AM_CPPFLAGS $CPPFLAGS $AM_CFLAGS $CFLAGS ${srcdest}$c - fi - objects="$objects $o" -done -echo " AR $mes_cpu-mes/libc-mini.a" -$AR crD $mes_cpu-mes/libc-mini.a $objects - -objects= -for c in $libc_SOURCES; do - o=$(basename $c .c).o - if test ! -e $o -o ${srcdest}$c -nt $o; then - echo " CC $c" - $CC -c $AM_CPPFLAGS $CPPFLAGS $AM_CFLAGS $CFLAGS ${srcdest}$c - fi - objects="$objects $o" -done -echo " AR $mes_cpu-mes/libc.a" -$AR crD $mes_cpu-mes/libc.a $objects - -objects= -for c in $libc_tcc_SOURCES; do - o=$(basename $c .c).o - if test ! -e $o -o ${srcdest}$c -nt $o; then - echo " CC $c" - $CC -c $AM_CPPFLAGS $CPPFLAGS $AM_CFLAGS $CFLAGS ${srcdest}$c - fi - objects="$objects $o" -done -echo " AR $mes_cpu-mes/libc+tcc.a" -$AR crD $mes_cpu-mes/libc+tcc.a $objects - -cd .. -srcdest= -CPPFLAGS="-D HAVE_CONFIG_H=1 -I ${srcdest}include -I ${srcdest}include/$mes_kernel/$mes_cpu" - -objects= -for c in $mes_SOURCES; do - o=$(basename $c .c).o - if test ! -e $o -o ${srcdest}$c -nt $o; then - echo " CC $c" - $CC -c $AM_CPPFLAGS $CPPFLAGS $AM_CFLAGS $CFLAGS ${srcdest}$c - fi - objects="$objects $o" -done -echo " CCLD bin/mes-mescc" -mkdir -p bin -$CC -nostdlib -o bin/mes-mescc -L mescc-lib mescc-lib/crt1.o $objects -lc -cp bin/mes-mescc bin/mes - -( - mkdir -p gcc-lib - cp config.sh gcc-lib - cd gcc-lib - compiler=gcc - if test -z "$srcdest"; then - srcdest=../ - srcdir=../ - fi - @SHELL@ ${srcdest}build-aux/build-source-lib.sh -) diff --git a/sysa/mes-0.22/build-aux/build-guile.sh b/sysa/mes-0.22/build-aux/build-guile.sh deleted file mode 100755 index bd304509..00000000 --- a/sysa/mes-0.22/build-aux/build-guile.sh +++ /dev/null @@ -1,65 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -set -e - -. ./config.sh - -. ${srcdest}build-aux/trace.sh -GUILE_AUTO_COMPILE=0 - -SCM_FILES=" -module/mes/getopt-long.scm -module/mes/guile.scm -module/mes/misc.scm -module/mes/test.scm -module/mescc/M1.scm -module/mescc/as.scm -module/mescc/bytevectors.scm -module/mescc/compile.scm -module/mescc/i386/as.scm -module/mescc/i386/info.scm -module/mescc/x86_64/as.scm -module/mescc/x86_64/info.scm -module/mescc/info.scm -module/mescc.scm -module/mescc/mescc.scm -module/mescc/preprocess.scm -" - -SCRIPTS=" -build-aux/mes-snarf.scm -" - -export host=$($GUILE -c "(display %host-type)") - -abs=$srcdest -if [ "$GUILE_EFFECTIVE_VERSION" = "2.0" ]; then - srcdest=$abs_top_srcdir/ -fi - -for i in $SCM_FILES $SCRIPTS; do - b=$(basename $i) - go=${i%%.scm}.go - f=${srcdest}$i - if test $f -nt $go; then - trace "GUILEC $f" $GUILD compile -L ${srcdest}module -L ${srcdest}build-aux -L ${srcdest}scripts -o $go $f - fi -done diff --git a/sysa/mes-0.22/build-aux/build-lib.sh b/sysa/mes-0.22/build-aux/build-lib.sh deleted file mode 100755 index 4ef701c3..00000000 --- a/sysa/mes-0.22/build-aux/build-lib.sh +++ /dev/null @@ -1,81 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2019 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -. ./config.sh -. ${srcdest}build-aux/configure-lib.sh -. ${srcdest}build-aux/trace.sh -. ${srcdest}build-aux/cc.sh - -trap 'test -f .log && cat .log' EXIT - -mkdir -p $mes_cpu-mes -compile lib/$mes_kernel/$mes_cpu-mes-$compiler/crt1.c -cp crt1.o $mes_cpu-mes -if test -e crt1.s; then - cp crt1.s $mes_cpu-mes -fi - -archive libc-mini.a $libc_mini_SOURCES -cp libc-mini.a $mes_cpu-mes -if test -e libc-mini.s; then - cp libc-mini.s $mes_cpu-mes -fi - -archive libmes.a $libmes_SOURCES -cp libmes.a $mes_cpu-mes -if test -e libmes.s; then - cp libmes.s $mes_cpu-mes -fi - -if test $mes_libc = mes; then - archive libc.a $libc_SOURCES - cp libc.a $mes_cpu-mes - if test -e libc.s; then - cp libc.s $mes_cpu-mes - fi -fi - -archive libc+tcc.a $libc_tcc_SOURCES -cp libc+tcc.a $mes_cpu-mes -if test -e libc+tcc.s; then - cp libc+tcc.s $mes_cpu-mes -fi - -if $courageous; then - exit 0 -fi - -archive libc+gnu.a $libc_gnu_SOURCES -cp libc+gnu.a $mes_cpu-mes -if test -e libc+gnu.s; then - cp libc+gnu.s $mes_cpu-mes -fi - -archive libtcc1.a $libtcc1_SOURCES -cp libtcc1.a $mes_cpu-mes -if test -e libtcc1.s; then - cp libtcc1.s $mes_cpu-mes -fi - -archive libgetopt.a lib/posix/getopt.c -cp libgetopt.a $mes_cpu-mes -if test -e libgetopt.s; then - cp libgetopt.s $mes_cpu-mes -fi diff --git a/sysa/mes-0.22/build-aux/build-mes.sh b/sysa/mes-0.22/build-aux/build-mes.sh deleted file mode 100755 index 4e388c4f..00000000 --- a/sysa/mes-0.22/build-aux/build-mes.sh +++ /dev/null @@ -1,57 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2019 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -set -e -set -u - -V=${V-} - -if [ "$V" = 2 ]; then - set -x -fi - -. ./config.sh -. ${srcdest}build-aux/trace.sh -. ${srcdest}build-aux/cc.sh - -trap 'test -f .log && cat .log' EXIT - -mes_sources=" -src/gc.c -src/hash.c -src/lib.c -src/math.c -src/mes.c -src/module.c -src/posix.c -src/reader.c -src/string.c -src/struct.c -src/vector.c -" - -for c in $mes_sources; do - compile $c -done -if test $mes_libc = system; then - LIBS=-lmes -fi -link bin/mes-$compiler -cp bin/mes-$compiler bin/mes diff --git a/sysa/mes-0.22/build-aux/build-scaffold.sh b/sysa/mes-0.22/build-aux/build-scaffold.sh deleted file mode 100755 index 911e8cde..00000000 --- a/sysa/mes-0.22/build-aux/build-scaffold.sh +++ /dev/null @@ -1,149 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -set -e -set -u - -V=${V-1} - -if [ "$V" = 2 ]; then - set -x -fi - -. ./config.sh -. ${srcdest}build-aux/trace.sh - -if $courageous; then - set +e - set_min_e () { - echo "Applying courage" - } - set_min_e -else - set_min_e () { - set -e - } -fi - -case "$mes_cpu" in - arm) - stage0_arch=40 - stage0_cpu=armv7l - ;; - x86_64) - stage0_arch=2 - stage0_cpu=amd64 - ;; - x86) - stage0_arch=1 - stage0_cpu=x86 - ;; - *) - stage0_arch=1 - stage0_cpu=$mes_cpu - ;; -esac - -trace "CCLD ${srcdest}lib/$mes_kernel/$mes_cpu-mes-$compiler/exit-42.S" $CC\ - -nostdlib\ - -g\ - ${srcdest}lib/$mes_kernel/$mes_cpu-mes-$compiler/exit-42.S\ - -o exit-42 - -trace "TEST exit-42" -{ set +e; ./exit-42; r=$?; set_min_e; } -[ $r != 42 ] && echo " => $r" -[ $r = 42 ] - -if $numbered_arch; then - stage0_cpu_flag="--Architecture $stage0_arch"; -else - stage0_cpu_flag="--architecture $stage0_cpu"; -fi - -trace "HEX2 ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-0exit-42.hex2" $HEX2\ - --LittleEndian\ - $stage0_cpu_flag\ - --BaseAddress 0x1000000\ - -f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-0header.hex2\ - -f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-0exit-42.hex2\ - --exec_enable\ - -o 0exit-42 - -trace "TEST 0exit-42" -{ set +e; ./0exit-42; r=$?; set_min_e; } -[ $r != 42 ] && echo " => $r" -[ $r = 42 ] - -trace "HEX2 ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-body-exit-42.hex2" $HEX2\ - --LittleEndian\ - $stage0_cpu_flag\ - --BaseAddress 0x1000000\ - -f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-header.hex2\ - -f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-body-exit-42.hex2\ - -f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-footer-single-main.hex2\ - --exec_enable\ - -o body-exit-42 - -trace "TEST body-exit-42" -{ set +e; ./body-exit-42; r=$?; set_min_e; } -[ $r != 42 ] && echo " => $r" -[ $r = 42 ] - -### FIXME: c&p from exit-42 -trace "CCLD ${srcdest}lib/$mes_kernel/$mes_cpu-mes-$compiler/hello-mes.S" $CC\ - -nostdlib\ - -g\ - ${srcdest}lib/$mes_kernel/$mes_cpu-mes-$compiler/hello-mes.S\ - -o hello-mes - -trace "TEST hello-mes" -{ set +e; ./hello-mes; r=$?; set_min_e; } -[ $r != 0 ] && echo " => $r" -[ $r = 0 ] - -trace "HEX2 ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-0hello-mes.hex2" $HEX2\ - --LittleEndian\ - $stage0_cpu_flag\ - --BaseAddress 0x1000000\ - -f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-0header.hex2\ - -f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-0hello-mes.hex2\ - --exec_enable\ - -o 0hello-mes - -trace "TEST 0hello-mes" -{ set +e; ./0hello-mes; r=$?; set_min_e; } -[ $r != 0 ] && echo " => $r" -[ $r = 0 ] - -trace "HEX2 ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-body-hello-mes.hex2" $HEX2\ - --LittleEndian\ - $stage0_cpu_flag\ - --BaseAddress 0x1000000\ - -f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-header.hex2\ - -f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-body-hello-mes.hex2\ - -f ${srcdest}lib/$mes_kernel/$mes_cpu-mes/elf$mes_bits-footer-single-main.hex2\ - --exec_enable\ - -o body-hello-mes - -trace "TEST body-hello-mes" -{ set +e; ./body-hello-mes; r=$?; set_min_e; } -[ $r != 0 ] && echo " => $r" -[ $r = 0 ] diff --git a/sysa/mes-0.22/build-aux/build-source-lib.sh b/sysa/mes-0.22/build-aux/build-source-lib.sh deleted file mode 100644 index 91805679..00000000 --- a/sysa/mes-0.22/build-aux/build-source-lib.sh +++ /dev/null @@ -1,53 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2019 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -set -e - -if test "$V" = 2; then - set -x -fi - -set -u -srcdest=${srcdest-} -. ${srcdest}build-aux/configure-lib.sh - -mkdir -p $mes_cpu-mes -cp ${srcdest}lib/$mes_kernel/$mes_cpu-mes-$compiler/crt*.c $mes_cpu-mes - -rm -f libc+gnu.c -cat > libc+gnu.c <> libc+gnu.c - cat ${srcdest}$c >> libc+gnu.c - echo >> libc+gnu.c -done -cp libc+gnu.c $mes_cpu-mes - -cp ${srcdest}lib/libtcc1.c $mes_cpu-mes -cp ${srcdest}lib/posix/getopt.c $mes_cpu-mes/libgetopt.c diff --git a/sysa/mes-0.22/build-aux/build.sh.in b/sysa/mes-0.22/build-aux/build.sh.in deleted file mode 100644 index db6184b5..00000000 --- a/sysa/mes-0.22/build-aux/build.sh.in +++ /dev/null @@ -1,141 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -set -e - -if test "$1" = "help"; then - cat < -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -objects= -compile () { - c=${srcdest}$1 - b=$(basename $c .c) - o=$b.o - objects="$objects $o" - if test ! -e $o -o $c -nt $o; then - trace "CC $c" $CC -c $AM_CPPFLAGS $CPPFLAGS $AM_CFLAGS $CFLAGS -o $o $c - $CC -c $AM_CPPFLAGS $CPPFLAGS $AM_CFLAGS $CFLAGS -o $o $c - fi -} - -archive () { - archive=$1 - shift - sources="$@" - objects= - for c in $sources; do - b=$(basename $c .c) - o=$b.o - compile $c - done - trace "AR $archive" $AR crD $archive $objects - objects= -} - -link () { - out=$1 - d=$(dirname $out) - mkdir -p $d - if test $mes_libc = system; then - crt1= - else - crt1=crt1.o - fi - trace "CCLD $out" $CC $AM_CFLAGS $CFLAGS $AM_LDFLAGS $LDFLAGS -o $out $crt1 $objects $LIBS - objects= -} diff --git a/sysa/mes-0.22/build-aux/cflags.sh b/sysa/mes-0.22/build-aux/cflags.sh deleted file mode 100644 index 2ce778a7..00000000 --- a/sysa/mes-0.22/build-aux/cflags.sh +++ /dev/null @@ -1,56 +0,0 @@ -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -AM_CPPFLAGS=" --D HAVE_CONFIG_H=1 --I ${srcdest}include --I ${srcdest}include/$mes_kernel/$mes_cpu -" - -if test $mes_kernel = gnu; then - AM_CPPFLAGS="$AM_CPPFLAGS --I /usr/include -" -fi - -AM_CFLAGS= - -if test $mes_libc = mes; then - AM_CFLAGS="$AM_CFLAGS --static --nostdinc --nostdlib --fno-builtin -" -fi - -AM_LDFLAGS=" --L . -" -if test $mes_libc = mes; then - AM_LDFLAGS="$AM_LDFLAGS --static --nostdlib -" -fi -LIBS=-lc - -export AM_CFLAGS CFLAGS -export AM_CPPFLAGS CPPFLAGS -export AM_LDFLAGS LDFLAGS -export LIBS diff --git a/sysa/mes-0.22/build-aux/check-boot.sh b/sysa/mes-0.22/build-aux/check-boot.sh deleted file mode 100755 index 1f1686a5..00000000 --- a/sysa/mes-0.22/build-aux/check-boot.sh +++ /dev/null @@ -1,121 +0,0 @@ -#! /bin/bash - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -set -e -. ./config.sh -set -u - -TESTS=" - -scaffold/boot/00-zero.scm -scaffold/boot/01-true.scm -scaffold/boot/02-symbol.scm -scaffold/boot/03-string.scm -scaffold/boot/04-quote.scm -scaffold/boot/05-list.scm -scaffold/boot/06-tick.scm -scaffold/boot/07-if.scm -scaffold/boot/08-if-if.scm - -scaffold/boot/10-cons.scm -scaffold/boot/11-list.scm -scaffold/boot/11-vector.scm -scaffold/boot/12-car.scm -scaffold/boot/13-cdr.scm -scaffold/boot/14-exit.scm -scaffold/boot/15-display.scm - -scaffold/boot/16-if-eq-quote.scm - -scaffold/boot/17-memq.scm -scaffold/boot/17-memq-keyword.scm -scaffold/boot/17-string-equal.scm -scaffold/boot/17-equal2.scm -scaffold/boot/17-string-append.scm -scaffold/boot/17-open-input-string.scm - -scaffold/boot/20-define.scm -scaffold/boot/20-define-quoted.scm -scaffold/boot/20-define-quote.scm - -scaffold/boot/21-define-procedure.scm -scaffold/boot/22-define-procedure-2.scm -scaffold/boot/23-begin.scm -scaffold/boot/24-begin-define.scm -scaffold/boot/25-begin-define-2.scm -scaffold/boot/26-begin-define-later.scm -scaffold/boot/27-lambda-define.scm -scaffold/boot/28-define-define.scm -scaffold/boot/29-lambda-define.scm -scaffold/boot/2a-lambda-lambda.scm -scaffold/boot/2b-define-lambda.scm -scaffold/boot/2c-define-lambda-recurse.scm -scaffold/boot/2d-define-lambda-set.scm -scaffold/boot/2d-compose.scm -scaffold/boot/2e-define-first.scm -scaffold/boot/2f-define-second.scm -scaffold/boot/2f-define-second-lambda.scm -scaffold/boot/2g-vector.scm - -scaffold/boot/30-capture.scm -scaffold/boot/31-capture-define.scm -scaffold/boot/32-capture-modify-close.scm -scaffold/boot/33-procedure-override-close.scm -scaffold/boot/34-cdr-override-close.scm -scaffold/boot/35-closure-modify.scm -scaffold/boot/36-closure-override.scm -scaffold/boot/37-closure-lambda.scm -scaffold/boot/38-simple-format.scm -scaffold/boot/39-global-define-override.scm -scaffold/boot/3a-global-define-lambda-override.scm - -scaffold/boot/40-define-macro.scm -scaffold/boot/41-when.scm -scaffold/boot/42-if-when.scm -scaffold/boot/43-or.scm -scaffold/boot/44-or-if.scm -scaffold/boot/45-pass-if.scm -scaffold/boot/46-report.scm -scaffold/boot/47-pass-if-eq.scm -scaffold/boot/48-let.scm -scaffold/boot/49-macro-override.scm -scaffold/boot/4a-define-macro-define-macro.scm -scaffold/boot/4b-define-macro-define.scm -scaffold/boot/4c-quasiquote.scm -scaffold/boot/4d-let-map.scm -scaffold/boot/4e-let-global.scm -scaffold/boot/4f-string-split.scm - -scaffold/boot/50-keyword.scm -scaffold/boot/50-make-string.scm -scaffold/boot/50-string-join.scm -scaffold/boot/50-primitive-load.scm -scaffold/boot/53-closure-display.scm -scaffold/boot/60-let-syntax.scm -scaffold/boot/call-cc.scm -scaffold/boot/memory.scm -scaffold/boot/numbers.scm -" - -XFAIL_TESTS= - -test_ext=.scm -log_compiler="${SHELL} ${srcdest}build-aux/test-boot.sh" -. ${srcdest}build-aux/test-suite.sh diff --git a/sysa/mes-0.22/build-aux/check-mes.sh b/sysa/mes-0.22/build-aux/check-mes.sh deleted file mode 100755 index b6f92b7a..00000000 --- a/sysa/mes-0.22/build-aux/check-mes.sh +++ /dev/null @@ -1,62 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -set -e -. ./config.sh -set -u - -TESTS=" -tests/boot.test -tests/read.test -tests/srfi-0.test -tests/macro.test -tests/perform.test -tests/base.test -tests/quasiquote.test -tests/let.test -tests/closure.test -tests/scm.test -tests/display.test -tests/cwv.test -tests/math.test -tests/vector.test -tests/srfi-1.test -tests/srfi-9.test -tests/srfi-13.test -tests/srfi-14.test -tests/srfi-43.test -tests/optargs.test -tests/fluids.test -tests/catch.test -tests/getopt-long.test -tests/guile.test -tests/syntax.test -tests/let-syntax.test -tests/pmatch.test -tests/posix.test -tests/match.test -tests/psyntax.test -" - -XFAIL_TESTS= - -test_ext=.test -log_compiler=${SHELL} -. ${srcdest}build-aux/test-suite.sh diff --git a/sysa/mes-0.22/build-aux/check-mescc.sh b/sysa/mes-0.22/build-aux/check-mescc.sh deleted file mode 100755 index 15204d35..00000000 --- a/sysa/mes-0.22/build-aux/check-mescc.sh +++ /dev/null @@ -1,290 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -set -e -. ./config.sh -set -u - -TESTS=" -lib/tests/scaffold/t.c -lib/tests/scaffold/01-return-0.c -lib/tests/scaffold/02-return-1.c -lib/tests/scaffold/03-call.c -lib/tests/scaffold/04-call-0.c -lib/tests/scaffold/05-call-1.c -lib/tests/scaffold/06-call-not-1.c -lib/tests/scaffold/06-not-call-1.c -lib/tests/scaffold/06-call-2.c -lib/tests/scaffold/06-call-string.c -lib/tests/scaffold/06-call-variable.c -lib/tests/scaffold/06-return-void.c -lib/tests/scaffold/07-include.c -lib/tests/scaffold/08-assign.c -lib/tests/scaffold/08-assign-negative.c -lib/tests/scaffold/08-assign-global.c -lib/tests/scaffold/10-if-0.c -lib/tests/scaffold/11-if-1.c -lib/tests/scaffold/12-if-eq.c -lib/tests/scaffold/13-if-neq.c -lib/tests/scaffold/14-if-goto.c -lib/tests/scaffold/15-if-not-f.c -lib/tests/scaffold/16-if-t.c -lib/tests/scaffold/17-compare-char.c -lib/tests/scaffold/17-compare-ge.c -lib/tests/scaffold/17-compare-gt.c -lib/tests/scaffold/17-compare-le.c -lib/tests/scaffold/17-compare-lt.c -lib/tests/scaffold/17-compare-unsigned-ge.c -lib/tests/scaffold/17-compare-unsigned-gt.c -lib/tests/scaffold/17-compare-unsigned-le.c -lib/tests/scaffold/17-compare-unsigned-lt.c -lib/tests/scaffold/17-compare-unsigned-char-le.c -lib/tests/scaffold/17-compare-unsigned-short-le.c -lib/tests/scaffold/17-compare-unsigned-long-le.c -lib/tests/scaffold/17-compare-and.c -lib/tests/scaffold/17-compare-or.c -lib/tests/scaffold/17-compare-and-or.c -lib/tests/scaffold/17-compare-assign.c -lib/tests/scaffold/17-compare-call.c -lib/tests/scaffold/18-assign-shadow.c -lib/tests/scaffold/20-while.c -lib/tests/scaffold/21-char-array-simple.c -lib/tests/scaffold/21-char-array.c -lib/tests/scaffold/22-while-char-array.c -lib/tests/scaffold/23-global-pointer-init-null.c -lib/tests/scaffold/23-global-pointer-init.c -lib/tests/scaffold/23-global-pointer-ref.c -lib/tests/scaffold/23-global-pointer-pointer-ref.c -lib/tests/scaffold/23-pointer-sub.c -lib/tests/scaffold/23-pointer.c -lib/tests/mes/30-oputs.c -lib/tests/mes/30-eputs.c -lib/tests/string/30-strlen.c -lib/tests/scaffold/30-exit-0.c -lib/tests/scaffold/30-exit-42.c -lib/tests/scaffold/32-call-wrap.c -lib/tests/scaffold/32-compare.c -lib/tests/scaffold/33-and-or.c -lib/tests/scaffold/34-pre-post.c -lib/tests/scaffold/35-compare-char.c -lib/tests/scaffold/36-compare-arithmetic.c -lib/tests/scaffold/37-compare-assign.c -lib/tests/scaffold/38-compare-call-2.c -lib/tests/scaffold/38-compare-call-3.c -lib/tests/scaffold/38-compare-call.c -lib/tests/scaffold/40-if-else.c -lib/tests/scaffold/41-ternary.c -lib/tests/scaffold/42-goto-label.c -lib/tests/scaffold/43-for-do-while.c -lib/tests/scaffold/44-switch.c -lib/tests/scaffold/44-switch-fallthrough.c -lib/tests/scaffold/44-switch-body-fallthrough.c -lib/tests/scaffold/45-void-call.c -lib/tests/scaffold/46-function-static.c -lib/tests/scaffold/47-function-expression.c -lib/tests/scaffold/48-global-static.c -lib/tests/assert/50-assert.c -lib/tests/mes/50-itoa.c -lib/tests/posix/50-getenv.c -lib/tests/stdlib/50-malloc.c -lib/tests/string/50-strcmp.c -lib/tests/string/50-strcpy.c -lib/tests/string/50-strncmp.c -lib/tests/posix/50-open-read.c -lib/tests/scaffold/51-pointer-sub.c -lib/tests/scaffold/54-argc.c -lib/tests/scaffold/54-argv.c -lib/tests/scaffold/55-char-array.c -lib/tests/scaffold/60-math.c -lib/tests/scaffold/61-array.c -lib/tests/scaffold/62-array.c -lib/tests/scaffold/63-struct.c -lib/tests/scaffold/63-struct-pointer.c -lib/tests/scaffold/63-struct-local.c -lib/tests/scaffold/63-struct-function.c -lib/tests/scaffold/63-struct-assign.c -lib/tests/scaffold/63-struct-array.c -lib/tests/scaffold/63-struct-array-assign.c -lib/tests/scaffold/63-struct-array-compare.c -lib/tests/scaffold/63-struct-cell.c -lib/tests/scaffold/64-make-cell.c -lib/tests/scaffold/65-read.c -lib/tests/scaffold/66-local-char-array.c -lib/tests/scaffold/70-stdarg.c -lib/tests/stdio/70-printf-hello.c -lib/tests/stdio/70-printf-simple.c -lib/tests/stdio/70-printf.c -lib/tests/stdlib/70-strtoull.c -lib/tests/string/70-strchr.c -lib/tests/scaffold/71-struct-array.c -lib/tests/scaffold/72-typedef-struct-def.c -lib/tests/scaffold/72-typedef-struct-def-local.c -lib/tests/scaffold/73-union-hello.c -lib/tests/scaffold/73-union.c -lib/tests/scaffold/74-multi-line-string.c -lib/tests/scaffold/75-struct-union.c -lib/tests/scaffold/76-pointer-arithmetic-pp.c -lib/tests/scaffold/76-pointer-arithmetic.c -lib/tests/scaffold/77-pointer-assign.c -lib/tests/scaffold/78-union-struct.c -lib/tests/scaffold/79-int-array-simple.c -lib/tests/scaffold/79-int-array.c -lib/tests/scaffold/7a-struct-char-array.c -lib/tests/scaffold/7b-struct-int-array-hello.c -lib/tests/scaffold/7b-struct-int-array-pointer.c -lib/tests/scaffold/7b-struct-int-array.c -lib/tests/scaffold/7c-dynarray.c -lib/tests/scaffold/7d-cast-char.c -lib/tests/scaffold/7e-struct-array-access.c -lib/tests/scaffold/7f-struct-pointer-arithmetic.c -lib/tests/scaffold/7g-struct-byte-word-field.c -lib/tests/scaffold/7h-struct-assign.c -lib/tests/scaffold/7i-struct-struct-simple.c -lib/tests/scaffold/7i-struct-struct.c -lib/tests/scaffold/7k-empty-for.c -lib/tests/scaffold/7k-for-each-elem-simple.c -lib/tests/scaffold/7k-for-each-elem.c -lib/tests/scaffold/7l-struct-any-size-array-simple.c -lib/tests/scaffold/7l-struct-any-size-array.c -lib/tests/scaffold/7m-struct-char-array-assign.c -lib/tests/scaffold/7n-struct-struct-array.c -lib/tests/scaffold/7o-struct-pre-post-simple.c -lib/tests/scaffold/7o-struct-pre-post.c -lib/tests/scaffold/7p-struct-cast.c -lib/tests/scaffold/7q-bit-field-simple.c -lib/tests/scaffold/7q-bit-field.c -lib/tests/scaffold/7r-sign-extend.c -lib/tests/scaffold/7s-struct-short.c -lib/tests/scaffold/7s-unsigned-compare.c -lib/tests/scaffold/7t-function-destruct.c -lib/tests/scaffold/7u-double.c -lib/tests/scaffold/7u-long-long.c -lib/tests/scaffold/7u-ternary-expression.c -lib/tests/scaffold/7u-call-ternary.c -lib/tests/scaffold/7u-inc-byte-word.c -lib/tests/scaffold/7u-struct-func.c -lib/tests/scaffold/7u-struct-size10.c -lib/tests/scaffold/7u-vstack.c -lib/tests/scaffold/70-array-in-struct-init.c -lib/tests/scaffold/70-struct-short-enum-init.c -lib/tests/scaffold/70-struct-post.c -lib/tests/scaffold/70-extern.c -lib/tests/setjmp/80-setjmp.c -lib/tests/stdio/80-sscanf.c -lib/tests/stdlib/80-qsort.c -lib/tests/stdlib/80-qsort-dupes.c -lib/tests/string/80-strncpy.c -lib/tests/string/80-strrchr.c -lib/tests/scaffold/82-define.c -lib/tests/scaffold/83-heterogenoous-init.c -lib/tests/scaffold/84-struct-field-list.c -lib/tests/scaffold/85-sizeof.c -" - -if test -z "$bootstrap"; then - TESTS="$TESTS -lib/tests/dirent/90-readdir.c -lib/tests/io/90-stat.c -lib/tests/mes/90-abtod.c -lib/tests/mes/90-dtoab.c -lib/tests/posix/90-execlp.c -lib/tests/posix/90-unsetenv.c -lib/tests/signal/90-signal.c -lib/tests/stdio/90-fopen.c -lib/tests/stdio/90-fopen-append.c -lib/tests/stdio/90-fread-fwrite.c -lib/tests/stdio/90-fseek.c -lib/tests/stdio/90-sprintf.c -lib/tests/stdlib/90-strtol.c -lib/tests/string/90-snprintf.c -lib/tests/string/90-strpbrk.c -lib/tests/string/90-strspn.c -lib/tests/scaffold/90-goto-var.c -lib/tests/scaffold/91-goto-array.c -lib/tests/scaffold/a0-call-trunc-char.c -lib/tests/scaffold/a0-call-trunc-short.c -lib/tests/scaffold/a0-call-trunc-int.c -lib/tests/scaffold/a0-math-divide-signed-negative.c -lib/tests/scaffold/a1-global-no-align.c -lib/tests/scaffold/a1-global-no-clobber.c -" -fi - -XFAIL_TESTS=" -lib/tests/stdio/90-sprintf.c -" - -if test $compiler = mescc; then - XFAIL_TESTS="$XFAIL_TESTS -lib/tests/scaffold/17-compare-unsigned-char-le.c -lib/tests/scaffold/17-compare-unsigned-short-le.c -lib/tests/scaffold/66-local-char-array.c -lib/tests/scaffold/72-typedef-struct-def-local.c -lib/tests/mes/90-abtod.c -lib/tests/mes/90-dtoab.c -lib/tests/scaffold/90-goto-var.c -lib/tests/scaffold/91-goto-array.c -" - - if test $mes_cpu = x86; then - XFAIL_TESTS="$XFAIL_TESTS -" - fi - - if test $mes_cpu = x86_64; then - XFAIL_TESTS="$XFAIL_TESTS -lib/tests/scaffold/a0-call-trunc-int.c -" - fi -fi - -if test $mes_cpu = x86_64; then - XFAIL_TESTS="$XFAIL_TESTS -lib/tests/stdio/70-printf-stdarg.c -" -fi - -if test $compiler = gcc; then - XFAIL_TESTS="$XFAIL_TESTS -" - - if test $mes_cpu = x86; then - XFAIL_TESTS="$XFAIL_TESTS -lib/tests/mes/90-dtoab.c -" - fi - - if test $mes_cpu = x86_64; then - XFAIL_TESTS="$XFAIL_TESTS -lib/tests/stdio/70-printf-hello.c -lib/tests/stdio/70-printf-simple.c -lib/tests/stdio/70-printf.c -lib/tests/scaffold/70-extern.c -lib/tests/stdio/80-sscanf.c -lib/tests/posix/90-execlp.c -lib/tests/string/90-snprintf.c -" - fi -fi - -recheck=${recheck-false} -test_ext=.c -log_compiler="${SHELL} ${srcdest}build-aux/test-c.sh" -. ${srcdest}build-aux/test-suite.sh diff --git a/sysa/mes-0.22/build-aux/check.sh.in b/sysa/mes-0.22/build-aux/check.sh.in deleted file mode 100644 index eaf1674a..00000000 --- a/sysa/mes-0.22/build-aux/check.sh.in +++ /dev/null @@ -1,101 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -set -e - -MES_ARENA=${MES_ARENA-20000000} -export MES_ARENA -MES_MAX_ARENA=${MES_MAX_ARENA-${MES_ARENA}} -export MES_MAX_ARENA -MES_STACK=${MES_STACK-5000000} -export MES_STACK - -. ./config.sh - -if $courageous; then - echo "Applying courage" - set +e -fi - -CFLAGS= -if test $mes_libc = mes; then - CFLAGS="${CFLAGS} --static --nostdinc --nostdlib --fno-builtin -" -fi - -CPPFLAGS=" --D HAVE_CONFIG_H=1 --I ../include --I ${srcdir}/include --I ${srcdir}/include/$mes_kernel/$mes_cpu -" - -LIBS= -LDFLAGS= -if test $mes_libc = mes; then - LDFLAGS=" --nostdlib -" - LIBS=-lc -fi - -export CFLAGS -export CPPFLAGS -export LDFLAGS -#export LIBS - -recheck=${recheck-false} -export recheck - -./pre-inst-env ${SHELL} ${srcdest}build-aux/check-boot.sh -./pre-inst-env ${SHELL} ${srcdest}build-aux/check-mes.sh - -if test $compiler = gcc; then - ( - cd gcc-lib - srcdest=$srcdir/../ - srcdir=../$srcdir - ../pre-inst-env ${SHELL} ${srcdest}build-aux/check-mescc.sh - ) -fi - -( - cd mescc-lib - srcdest=$srcdir/../ - srcdir=../$srcdir - compiler=mescc - mes_lib=mes - CFLAGS=" --nostdinc --nostdlib --fno-builtin -" - LDFLAGS=" --nostdlib -" - LIBS=-lc - AR="${srcdest}pre-inst-env mesar" - CC="${srcdest}pre-inst-env mescc" - ../pre-inst-env ${SHELL} ${srcdest}build-aux/check-mescc.sh -) diff --git a/sysa/mes-0.22/build-aux/config.make.in b/sysa/mes-0.22/build-aux/config.make.in deleted file mode 100644 index 1e250e5e..00000000 --- a/sysa/mes-0.22/build-aux/config.make.in +++ /dev/null @@ -1,82 +0,0 @@ -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -AR:=@AR@ -BASH:=@BASH@ -BLOOD_ELF:=@BLOOD_ELF@ -CC:=@CC@ -CFLAGS:=@CFLAGS@ -CPPFLAGS:=@CPPFLAGS@ -DIFF:=@DIFF@ -DOT:=@DOT@ -GIT:=@GIT@ -GUILD:=@GUILD@ -GUILE:=@GUILE@ -GUILE_EFFECTIVE_VERSION:=@GUILE_EFFECTIVE_VERSION@ -GUILE_LOAD_PATH:=@GUILE_LOAD_PATH@ -GUIX:=@GUIX@ -HELP2MAN:=@HELP2MAN@ -HEX2:=@HEX2@ -LDFLAGS:=@LDFLAGS@ -MAKEINFO:=@MAKEINFO@ -M1:=@M1@ -MES_FOR_BUILD:=@MES_FOR_BUILD@ -NYACC:=@NYACC@ -PACKAGE:=@PACKAGE@ -PACKAGE_NAME:=@PACKAGE_NAME@ -PACKAGE_BUGREPORT:=@PACKAGE_BUGREPORT@ -PERL:=@PERL@ -SCHEME:=@SCHEME@ -SHELL:=@SHELL@ -VERSION:=@VERSION@ -V:=@V@ -colors:=@colors@ - -abs_top_builddir:=@abs_top_builddir@ -abs_top_srcdir:=@abs_top_srcdir@ -arch:=@arch@ -build:=@build@ -host:=@host@ - -bootstrap:=@bootstrap@ -compiler:=@compiler@ -courageous:=@courageous@ -mes_system:=@mes_system@ -mes_cpu:=@mes_cpu@ -mes_bits:=@mes_bits@ -mes_libc:=@mes_libc@ -mes_kernel:=@mes_kernel@ - -prefix:=@prefix@ - -bindir:=@bindir@ -datadir:=@datadir@ -docdir:=@docdir@ -guile_site_ccache_dir:=@guile_site_ccache_dir@ -guile_site_dir:=@guile_site_dir@ -includedir:=@includedir@ -infodir:=@infodir@ -libdir:=@libdir@ -mandir:=@mandir@ -moduledir:=@moduledir@ -with_glibc_p:=@with_glibc_p@ -program_prefix:=@program_prefix@ -srcdest:=@srcdest@ -srcdir:=@srcdir@ -sysconfdir:=@sysconfdir@ -top_builddir:=@top_builddir@ diff --git a/sysa/mes-0.22/build-aux/config.sh.in b/sysa/mes-0.22/build-aux/config.sh.in deleted file mode 100644 index 4e2953e5..00000000 --- a/sysa/mes-0.22/build-aux/config.sh.in +++ /dev/null @@ -1,104 +0,0 @@ -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -config_sh=1 -AR=${AR-"@AR@"} -BASH="@BASH@" -BLOOD_ELF="@BLOOD_ELF@" -CC=${CC-"@CC@"} -CFLAGS=${CFLAGS-"@CFLAGS@"} -CPPFLAGS=${CPPFLAGS-"@CPPFLAGS@"} -DIFF=${DIFF-@DIFF@} -DOT="@DOT@" -GIT="@GIT@" -GUILD="@GUILD@" -GUILE="@GUILE@" -GUILE_EFFECTIVE_VERSION="@GUILE_EFFECTIVE_VERSION@" -GUILE_LOAD_PATH="@GUILE_LOAD_PATH@" -GUIX="@GUIX@" -HELP2MAN="@HELP2MAN@" -HEX2="@HEX2@" -LDFLAGS=${LDFLAGS-"@LDFLAGS@"} -MAKEINFO="@MAKEINFO@" -M1="@M1@" -MES_FOR_BUILD="@MES_FOR_BUILD@" -NYACC="@NYACC@" -PACKAGE="@PACKAGE@" -PACKAGE_NAME="@PACKAGE_NAME@" -PACKAGE_BUGREPORT="@PACKAGE_BUGREPORT@" -PERL="@PERL@" -#SCHEME="@SCHEME@" -SHELL="@SHELL@" -TINYCC_PREFIX="@TINYCC_PREFIX@" -VERSION="@VERSION@" -V=${V-"@V@"} -colors=${colors-@colors@} - -abs_top_builddir="@abs_top_builddir@" -abs_top_srcdir="@abs_top_srcdir@" -arch="@arch@" -build="@build@" -host="@host@" -numbered_arch=${numbered_arch-"@numbered_arch@"} - -bootstrap=${bootstrap-@bootstrap@} -compiler=${compiler-@compiler@} -courageous=${courageous-@courageous@} -mes_system=@mes_system@ -mes_cpu=@mes_cpu@ -mes_bits=@mes_bits@ -mes_libc=@mes_libc@ -mes_kernel=@mes_kernel@ - -prefix="@prefix@" - -bindir="@bindir@" -datadir="@datadir@" -pkgdatadir="@pkgdatadir@" -docdir="@docdir@" -guile_site_ccache_dir="@guile_site_ccache_dir@" -guile_site_dir="@guile_site_dir@" -includedir="@includedir@" -infodir="@infodir@" -libdir="@libdir@" -mandir="@mandir@" -moduledir="@moduledir@" -with_glibc_p="@with_glibc_p@" -program_prefix="@program_prefix@" -srcdest=${srcdest-"@srcdest@"} -srcdir=${srcdir-"@srcdir@"} -sysconfdir="@sysconfdir@" -top_builddir="@top_builddir@" - -MES_PREFIX=${MES_PREFIX-$abs_top_srcdir} - -export PACKAGE -export PACKAGE_NAME -export PACKAGE_BUGREPORT -export AR -export CC -export DIFF -export SHELL -export V -export colors -export compiler -export courageous -export srcdest -export srcdir -export GUILE_AUTO_COMPILE -export MES_PREFIX diff --git a/sysa/mes-0.22/build-aux/configure-lib.sh b/sysa/mes-0.22/build-aux/configure-lib.sh deleted file mode 100644 index ed0e23bb..00000000 --- a/sysa/mes-0.22/build-aux/configure-lib.sh +++ /dev/null @@ -1,422 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2019 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -set -e -set -u - -V=${V-1} - -if [ "$V" = 2 ]; then - set -x -fi - -. ./config.sh - -libc_mini_shared_SOURCES=" -lib/mes/eputs.c -lib/mes/oputs.c -" - -if test $mes_libc = mes; then - libc_mini_shared_SOURCES="$libc_mini_shared_SOURCES -lib/$mes_kernel/$mes_cpu-mes-$compiler/mini.c -lib/stdlib/exit.c -lib/stdlib/puts.c -lib/string/strlen.c -" - - if test $mes_kernel = gnu; then - libc_mini_shared_SOURCES="$libc_mini_shared_SOURCES -lib/gnu/_exit.c -lib/gnu/exec-startup-get-data.c -lib/gnu/fd-get.c -lib/gnu/fd-write.c -lib/gnu/io-write.c -lib/gnu/_write.c -lib/gnu/hurd-start.c -lib/gnu/proc-mark-exit.c -lib/gnu/syscall.c -lib/gnu/task-get-special-port.c -lib/gnu/task-terminate.c -lib/gnu/vm-statistics.c -lib/mach/mach-init.c -lib/mach/mach_host_self.S -lib/mach/mach_msg_trap.S -lib/mach/mach_reply_port.S -lib/mach/mach_task_self.S -lib/mach/mach_thread_self.S -lib/mach/msg.c -lib/string/argz-extract.c -" - fi -fi - -libc_mini_SOURCES="$libc_mini_shared_SOURCES" - -if test $mes_libc = mes; then - libc_mini_SOURCES="$libc_mini_SOURCES -lib/mes/mini-write.c -" -fi - -libmes_SOURCES=" -$libc_mini_shared_SOURCES -lib/ctype/isnumber.c -lib/mes/abtol.c -lib/mes/div.c -lib/mes/eputc.c -lib/mes/fdgetc.c -lib/mes/fdputc.c -lib/mes/fdputs.c -lib/mes/fdungetc.c -lib/mes/itoa.c -lib/mes/ltoa.c -lib/mes/ltoab.c -lib/mes/mes_open.c -lib/mes/ntoab.c -lib/mes/oputc.c -lib/mes/ultoa.c -lib/mes/utoa.c -" - -if test $mes_libc = mes; then - libmes_SOURCES="$libmes_SOURCES -lib/ctype/isdigit.c -lib/ctype/isspace.c -lib/ctype/isxdigit.c -lib/posix/write.c -lib/stdlib/atoi.c -" - if test $mes_kernel = gnu; then - libmes_SOURCES="$libmes_SOURCES -lib/stub/lseek.c -" - fi - if test $mes_kernel = linux; then - libmes_SOURCES="$libmes_SOURCES -lib/linux/lseek.c -" - fi -else - libmes_SOURCES="$libmes_SOURCES -lib/mes/abtod.c -lib/mes/dtoab.c -" -fi - -libc_SOURCES=" -$libmes_SOURCES -lib/mes/__assert_fail.c -lib/mes/__buffered_read.c -lib/mes/__mes_debug.c -lib/posix/execv.c -lib/posix/getcwd.c -lib/posix/getenv.c -lib/posix/isatty.c -lib/posix/open.c -lib/posix/buffered-read.c -lib/posix/setenv.c -lib/posix/wait.c -lib/stdio/fgetc.c -lib/stdio/fputc.c -lib/stdio/fputs.c -lib/stdio/getc.c -lib/stdio/getchar.c -lib/stdio/putc.c -lib/stdio/putchar.c -lib/stdio/ungetc.c -lib/stdlib/free.c -lib/stdlib/malloc.c -lib/stdlib/realloc.c -lib/string/memchr.c -lib/string/memcmp.c -lib/string/memcpy.c -lib/string/memmove.c -lib/string/memset.c -lib/string/strcmp.c -lib/string/strcpy.c -lib/string/strncmp.c -" - -if test $mes_kernel = gnu; then - libc_SOURCES="$libc_SOURCES -lib/gnu/_open3.c -lib/gnu/_read.c -lib/gnu/dir-lookup.c -lib/gnu/fd-read.c -lib/gnu/io-read.c -lib/gnu/malloc.c -lib/gnu/vm-allocate.c -lib/stub/access.c -lib/stub/brk.c -lib/stub/chmod.c -lib/stub/clock_gettime.c -lib/stub/dup2.c -lib/stub/dup.c -lib/stub/execve.c -lib/stub/fork.c -lib/stub/_getcwd.c -lib/stub/gettimeofday.c -lib/stub/ioctl.c -lib/stub/time.c -lib/stub/unlink.c -lib/stub/waitpid.c -" -fi - -if test $mes_kernel = linux; then - libc_SOURCES="$libc_SOURCES -lib/linux/access.c -lib/linux/brk.c -lib/linux/chmod.c -lib/linux/clock_gettime.c -lib/linux/dup.c -lib/linux/dup2.c -lib/linux/execve.c -lib/linux/fork.c -lib/linux/fsync.c -lib/linux/_getcwd.c -lib/linux/gettimeofday.c -lib/linux/ioctl.c -lib/linux/_open3.c -lib/linux/_read.c -lib/linux/time.c -lib/linux/unlink.c -lib/linux/waitpid.c -lib/linux/$mes_cpu-mes-$compiler/syscall.c -" -fi - -libtcc1_SOURCES=" -lib/libtcc1.c -" - -libc_tcc_SOURCES=" -$libc_SOURCES -lib/ctype/islower.c -lib/ctype/isupper.c -lib/ctype/tolower.c -lib/ctype/toupper.c -lib/mes/abtod.c -lib/mes/dtoab.c -lib/mes/search-path.c -lib/posix/execvp.c -lib/stdio/fclose.c -lib/stdio/fdopen.c -lib/stdio/ferror.c -lib/stdio/fflush.c -lib/stdio/fopen.c -lib/stdio/fprintf.c -lib/stdio/fread.c -lib/stdio/fseek.c -lib/stdio/ftell.c -lib/stdio/fwrite.c -lib/stdio/printf.c -lib/stdio/remove.c -lib/stdio/snprintf.c -lib/stdio/sprintf.c -lib/stdio/sscanf.c -lib/stdio/vfprintf.c -lib/stdio/vprintf.c -lib/stdio/vsnprintf.c -lib/stdio/vsprintf.c -lib/stdio/vsscanf.c -lib/stdlib/calloc.c -lib/stdlib/qsort.c -lib/stdlib/strtod.c -lib/stdlib/strtof.c -lib/stdlib/strtol.c -lib/stdlib/strtold.c -lib/stdlib/strtoll.c -lib/stdlib/strtoul.c -lib/stdlib/strtoull.c -lib/string/memmem.c -lib/string/strcat.c -lib/string/strchr.c -lib/string/strlwr.c -lib/string/strncpy.c -lib/string/strrchr.c -lib/string/strstr.c -lib/string/strupr.c -lib/stub/sigaction.c -lib/stub/ldexp.c -lib/stub/mprotect.c -lib/stub/localtime.c -lib/stub/sigemptyset.c -lib/$mes_cpu-mes-$compiler/setjmp.c -" - -if test $mes_kernel = linux; then - libc_tcc_SOURCES="$libc_tcc_SOURCES -lib/linux/close.c -lib/linux/rmdir.c -lib/linux/stat.c -" -fi - -if test $mes_kernel = gnu; then - libc_tcc_SOURCES="$libc_tcc_SOURCES -lib/stub/close.c -lib/stub/rmdir.c -lib/stub/stat.c -" -fi - -libc_gnu_SOURCES=" -$libc_tcc_SOURCES -lib/ctype/isalnum.c -lib/ctype/isalpha.c -lib/ctype/isascii.c -lib/ctype/iscntrl.c -lib/ctype/isgraph.c -lib/ctype/isprint.c -lib/ctype/ispunct.c -lib/dirent/__getdirentries.c -lib/dirent/closedir.c -lib/dirent/opendir.c -lib/dirent/readdir.c -lib/math/ceil.c -lib/math/fabs.c -lib/math/floor.c -lib/mes/fdgets.c -lib/posix/alarm.c -lib/posix/execl.c -lib/posix/execlp.c -lib/posix/mktemp.c -lib/posix/raise.c -lib/posix/sbrk.c -lib/posix/sleep.c -lib/posix/unsetenv.c -lib/stdio/clearerr.c -lib/stdio/feof.c -lib/stdio/fgets.c -lib/stdio/fileno.c -lib/stdio/freopen.c -lib/stdio/fscanf.c -lib/stdio/perror.c -lib/stdio/vfscanf.c -lib/stdlib/__exit.c -lib/stdlib/abort.c -lib/stdlib/abs.c -lib/stdlib/alloca.c -lib/stdlib/atexit.c -lib/stdlib/atof.c -lib/stdlib/atol.c -lib/stdlib/mbstowcs.c -lib/string/bcmp.c -lib/string/bcopy.c -lib/string/bzero.c -lib/string/index.c -lib/string/rindex.c -lib/string/strcspn.c -lib/string/strdup.c -lib/string/strerror.c -lib/string/strncat.c -lib/string/strpbrk.c -lib/string/strspn.c -lib/stub/__cleanup.c -lib/stub/atan2.c -lib/stub/bsearch.c -lib/stub/chown.c -lib/stub/cos.c -lib/stub/ctime.c -lib/stub/exp.c -lib/stub/fpurge.c -lib/stub/freadahead.c -lib/stub/frexp.c -lib/stub/getgrgid.c -lib/stub/getgrnam.c -lib/stub/getlogin.c -lib/stub/getpgid.c -lib/stub/getpgrp.c -lib/stub/getpwnam.c -lib/stub/getpwuid.c -lib/stub/gmtime.c -lib/stub/log.c -lib/stub/mktime.c -lib/stub/modf.c -lib/stub/pclose.c -lib/stub/popen.c -lib/stub/pow.c -lib/stub/rand.c -lib/stub/rewind.c -lib/stub/setbuf.c -lib/stub/setgrent.c -lib/stub/setlocale.c -lib/stub/setvbuf.c -lib/stub/sigaddset.c -lib/stub/sigblock.c -lib/stub/sigdelset.c -lib/stub/sigsetmask.c -lib/stub/sin.c -lib/stub/sqrt.c -lib/stub/strftime.c -lib/stub/sys_siglist.c -lib/stub/system.c -lib/stub/times.c -lib/stub/ttyname.c -lib/stub/umask.c -lib/stub/utime.c -" - -if test $mes_kernel = linux; then - libc_gnu_SOURCES="$libc_gnu_SOURCES -lib/linux/chdir.c -lib/linux/fcntl.c -lib/linux/fstat.c -lib/linux/getdents.c -lib/linux/getegid.c -lib/linux/geteuid.c -lib/linux/getgid.c -lib/linux/getpid.c -lib/linux/getppid.c -lib/linux/getrusage.c -lib/linux/getuid.c -lib/linux/kill.c -lib/linux/link.c -lib/linux/lstat.c -lib/linux/mkdir.c -lib/linux/mknod.c -lib/linux/nanosleep.c -lib/linux/pipe.c -lib/linux/readlink.c -lib/linux/rename.c -lib/linux/setgid.c -lib/linux/settimer.c -lib/linux/setuid.c -lib/linux/signal.c -lib/linux/sigprogmask.c -lib/linux/symlink.c -" -fi - -mes_SOURCES=" -src/gc.c -src/hash.c -src/lib.c -src/math.c -src/mes.c -src/module.c -src/posix.c -src/reader.c -src/string.c -src/struct.c -src/vector.c -" diff --git a/sysa/mes-0.22/build-aux/export.make b/sysa/mes-0.22/build-aux/export.make deleted file mode 100644 index d8ca89e0..00000000 --- a/sysa/mes-0.22/build-aux/export.make +++ /dev/null @@ -1,160 +0,0 @@ -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018 Jan (janneke) Nieuwenhuizen -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see . - -export PACKAGE -export PACKAGE_NAME -export PACKAGE_BUGREPORT -export VERSION - -export abs_top_builddir -export abs_top_srcdir -export top_builddir -export config.make -export srcdest -export srcdir - -export prefix - -export datadir -export docdir - -export bindir -export guile_site_ccache_dir -export guile_site_dir -export infodir -export libdir -export mandir -export moduledir -export sysconfdir - -export bootstrap -export compiler -export courageous -export mes_system -export mes_cpu -export mes_bits -export mes_libc -export mes_kernel - -ifdef V -export V -endif - -ifdef DESTDIR -export DESTDIR -endif - -ifdef CC -export CC -endif - -ifdef BLOOD_ELF -export BLOOD_ELF -endif - -ifdef DOT -export DOT -endif - -ifdef M1 -export M1 -endif - -ifdef MES -export MES -endif - -ifdef MES_FOR_BUILD -export MES_FOR_BUILD -endif - -ifdef MESCC -export MESCC -endif - -ifdef HEX2 -export HEX2 -endif - -ifdef HELP2MAN -export HELP2MAN -endif - -ifdef GUILE -export GUILE -endif - -ifdef GUILD -export GUILD -endif - -ifdef GUIX -export GUIX -endif - -ifdef PERL -export PERL -endif - -ifdef SCHEME -export SCHEME -endif - -ifdef SHELL -export SHELL -endif - -ifdef GUILE_LOAD_PATH -export GUILE_LOAD_PATH -endif - -ifdef GUILE_LOAD_COMPILED_PATH -export GUILE_LOAD_COMPILED_PATH -endif - -ifdef AM_CFLAGS -export AM_CFLAGS -endif - -ifdef AM_CPPFLAGS -export AM_CPPFLAGS -endif - -ifdef AM_LDFLAGS -export AM_LDFLAGS -endif - -ifdef CFLAGS -export CFLAGS -endif - -ifdef CPPFLAGS -export CPPFLAGS -endif - -ifdef LDFLAGS -export LDFLAGS -endif - -ifdef HEX2FLAGS -export HEX2FLAGS -endif - -ifdef M1FLAGS -export M1FLAGS -endif diff --git a/sysa/mes-0.22/build-aux/gendocs.sh b/sysa/mes-0.22/build-aux/gendocs.sh deleted file mode 100755 index 91c058dc..00000000 --- a/sysa/mes-0.22/build-aux/gendocs.sh +++ /dev/null @@ -1,510 +0,0 @@ -#!/bin/sh -e -# gendocs.sh -- generate a GNU manual in many formats. This script is -# mentioned in maintain.texi. See the help message below for usage details. - -scriptversion=2018-03-06.19 - -# Copyright 2003-2018 Free Software Foundation, Inc. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -# Original author: Mohit Agarwal. -# Send bug reports and any other correspondence to bug-gnulib@gnu.org. -# -# The latest version of this script, and the companion template, is -# available from the Gnulib repository: -# -# https://git.savannah.gnu.org/cgit/gnulib.git/tree/build-aux/gendocs.sh -# https://git.savannah.gnu.org/cgit/gnulib.git/tree/doc/gendocs_template - -# TODO: -# - image importing was only implemented for HTML generated by -# makeinfo. But it should be simple enough to adjust. -# - images are not imported in the source tarball. All the needed -# formats (PDF, PNG, etc.) should be included. - -prog=`basename "$0"` -srcdir=`pwd` - -scripturl="https://git.savannah.gnu.org/cgit/gnulib.git/plain/build-aux/gendocs.sh" -templateurl="https://git.savannah.gnu.org/cgit/gnulib.git/plain/doc/gendocs_template" - -: ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="} -: ${MAKEINFO="makeinfo"} -: ${TEXI2DVI="texi2dvi"} -: ${DOCBOOK2HTML="docbook2html"} -: ${DOCBOOK2PDF="docbook2pdf"} -: ${DOCBOOK2TXT="docbook2txt"} -: ${GENDOCS_TEMPLATE_DIR="."} -: ${PERL='perl'} -: ${TEXI2HTML="texi2html"} -unset CDPATH -unset use_texi2html - -MANUAL_TITLE= -PACKAGE= -EMAIL=webmasters@gnu.org # please override with --email -commonarg= # passed to all makeinfo/texi2html invcations. -dirargs= # passed to all tools (-I dir). -dirs= # -I directories. -htmlarg="--css-ref=/software/gnulib/manual.css -c TOP_NODE_UP_URL=/manual" -default_htmlarg=true -infoarg=--no-split -generate_ascii=true -generate_html=true -generate_info=true -generate_tex=true -outdir=manual -source_extra= -split=node -srcfile= -texarg="-t @finalout" - -version="gendocs.sh $scriptversion - -Copyright 2018 Free Software Foundation, Inc. -There is NO warranty. You may redistribute this software -under the terms of the GNU General Public License. -For more information about these matters, see the files named COPYING." - -usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE - -Generate output in various formats from PACKAGE.texinfo (or .texi or -.txi) source. See the GNU Maintainers document for a more extensive -discussion: - https://www.gnu.org/prep/maintain_toc.html - -Options: - --email ADR use ADR as contact in generated web pages; always give this. - - -s SRCFILE read Texinfo from SRCFILE, instead of PACKAGE.{texinfo|texi|txi} - -o OUTDIR write files into OUTDIR, instead of manual/. - -I DIR append DIR to the Texinfo search path. - --common ARG pass ARG in all invocations. - --html ARG pass ARG to makeinfo or texi2html for HTML targets, - instead of '$htmlarg'. - --info ARG pass ARG to makeinfo for Info, instead of --no-split. - --no-ascii skip generating the plain text output. - --no-html skip generating the html output. - --no-info skip generating the info output. - --no-tex skip generating the dvi and pdf output. - --source ARG include ARG in tar archive of sources. - --split HOW make split HTML by node, section, chapter; default node. - --tex ARG pass ARG to texi2dvi for DVI and PDF, instead of -t @finalout. - - --texi2html use texi2html to make HTML target, with all split versions. - --docbook convert through DocBook too (xml, txt, html, pdf). - - --help display this help and exit successfully. - --version display version information and exit successfully. - -Simple example: $prog --email bug-gnu-emacs@gnu.org emacs \"GNU Emacs Manual\" - -Typical sequence: - cd PACKAGESOURCE/doc - wget \"$scripturl\" - wget \"$templateurl\" - $prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\" - -Output will be in a new subdirectory \"manual\" (by default; -use -o OUTDIR to override). Move all the new files into your web CVS -tree, as explained in the Web Pages node of maintain.texi. - -Please use the --email ADDRESS option so your own bug-reporting -address will be used in the generated HTML pages. - -MANUAL-TITLE is included as part of the HTML of the overall -manual/index.html file. It should include the name of the package being -documented. manual/index.html is created by substitution from the file -$GENDOCS_TEMPLATE_DIR/gendocs_template. (Feel free to modify the -generic template for your own purposes.) - -If you have several manuals, you'll need to run this script several -times with different MANUAL values, specifying a different output -directory with -o each time. Then write (by hand) an overall index.html -with links to them all. - -If a manual's Texinfo sources are spread across several directories, -first copy or symlink all Texinfo sources into a single directory. -(Part of the script's work is to make a tar.gz of the sources.) - -As implied above, by default monolithic Info files are generated. -If you want split Info, or other Info options, use --info to override. - -You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML, -and PERL to control the programs that get executed, and -GENDOCS_TEMPLATE_DIR to control where the gendocs_template file is -looked for. With --docbook, the environment variables DOCBOOK2HTML, -DOCBOOK2PDF, and DOCBOOK2TXT are also consulted. - -By default, makeinfo and texi2dvi are run in the default (English) -locale, since that's the language of most Texinfo manuals. If you -happen to have a non-English manual and non-English web site, see the -SETLANG setting in the source. - -Email bug reports or enhancement requests to bug-gnulib@gnu.org. -" - -while test $# -gt 0; do - case $1 in - -s) shift; srcfile=$1;; - -o) shift; outdir=$1;; - -I) shift; dirargs="$dirargs -I '$1'"; dirs="$dirs $1";; - --common) shift; commonarg=$1;; - --docbook) docbook=yes;; - --email) shift; EMAIL=$1;; - --html) shift; default_htmlarg=false; htmlarg=$1;; - --info) shift; infoarg=$1;; - --no-ascii) generate_ascii=false;; - --no-html) generate_ascii=false;; - --no-info) generate_info=false;; - --no-tex) generate_tex=false;; - --source) shift; source_extra=$1;; - --split) shift; split=$1;; - --tex) shift; texarg=$1;; - --texi2html) use_texi2html=1;; - - --help) echo "$usage"; exit 0;; - --version) echo "$version"; exit 0;; - -*) - echo "$0: Unknown option \`$1'." >&2 - echo "$0: Try \`--help' for more information." >&2 - exit 1;; - *) - if test -z "$PACKAGE"; then - PACKAGE=$1 - elif test -z "$MANUAL_TITLE"; then - MANUAL_TITLE=$1 - else - echo "$0: extra non-option argument \`$1'." >&2 - exit 1 - fi;; - esac - shift -done - -# makeinfo uses the dirargs, but texi2dvi doesn't. -commonarg=" $dirargs $commonarg" - -# For most of the following, the base name is just $PACKAGE -base=$PACKAGE - -if $default_htmlarg && test -n "$use_texi2html"; then - # The legacy texi2html doesn't support TOP_NODE_UP_URL - htmlarg="--css-ref=/software/gnulib/manual.css" -fi - -if test -n "$srcfile"; then - # but here, we use the basename of $srcfile - base=`basename "$srcfile"` - case $base in - *.txi|*.texi|*.texinfo) base=`echo "$base"|sed 's/\.[texinfo]*$//'`;; - esac - PACKAGE=$base -elif test -s "$srcdir/$PACKAGE.texinfo"; then - srcfile=$srcdir/$PACKAGE.texinfo -elif test -s "$srcdir/$PACKAGE.texi"; then - srcfile=$srcdir/$PACKAGE.texi -elif test -s "$srcdir/$PACKAGE.txi"; then - srcfile=$srcdir/$PACKAGE.txi -else - echo "$0: cannot find .texinfo or .texi or .txi for $PACKAGE in $srcdir." >&2 - exit 1 -fi - -if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then - echo "$0: cannot read $GENDOCS_TEMPLATE_DIR/gendocs_template." >&2 - echo "$0: it is available from $templateurl." >&2 - exit 1 -fi - -# Function to return size of $1 in something resembling kilobytes. -calcsize() -{ - size=`ls -ksl $1 | awk '{print $1}'` - echo $size -} - -# copy_images OUTDIR HTML-FILE... -# ------------------------------- -# Copy all the images needed by the HTML-FILEs into OUTDIR. -# Look for them in . and the -I directories; this is simpler than what -# makeinfo supports with -I, but hopefully it will suffice. -copy_images() -{ - local odir - odir=$1 - shift - $PERL -n -e " -BEGIN { - \$me = '$prog'; - \$odir = '$odir'; - @dirs = qw(. $dirs); -} -" -e ' -/<img src="(.*?)"/g && ++$need{$1}; - -END { - #print "$me: @{[keys %need]}\n"; # for debugging, show images found. - FILE: for my $f (keys %need) { - for my $d (@dirs) { - if (-f "$d/$f") { - use File::Basename; - my $dest = dirname ("$odir/$f"); - # - use File::Path; - -d $dest || mkpath ($dest) - || die "$me: cannot mkdir $dest: $!\n"; - # - use File::Copy; - copy ("$d/$f", $dest) - || die "$me: cannot copy $d/$f to $dest: $!\n"; - next FILE; - } - } - die "$me: $ARGV: cannot find image $f\n"; - } -} -' -- "$@" || exit 1 -} - -case $outdir in - /*) abs_outdir=$outdir;; - *) abs_outdir=$srcdir/$outdir;; -esac - -echo "Making output for $srcfile" -echo " in `pwd`" -mkdir -p "$outdir/" - -# -if $generate_info; then - cmd="$SETLANG $MAKEINFO -o $PACKAGE.info $commonarg $infoarg \"$srcfile\"" - echo "Generating info... ($cmd)" - rm -f $PACKAGE.info* # get rid of any strays - eval "$cmd" - tar czf "$outdir/$PACKAGE.info.tar.gz" $PACKAGE.info* - ls -l "$outdir/$PACKAGE.info.tar.gz" - info_tgz_size=`calcsize "$outdir/$PACKAGE.info.tar.gz"` - # do not mv the info files, there's no point in having them available - # separately on the web. -fi # end info - -# -if $generate_tex; then - cmd="$SETLANG $TEXI2DVI $dirargs $texarg \"$srcfile\"" - printf "\nGenerating dvi... ($cmd)\n" - eval "$cmd" - # compress/finish dvi: - gzip -f -9 $PACKAGE.dvi - dvi_gz_size=`calcsize $PACKAGE.dvi.gz` - mv $PACKAGE.dvi.gz "$outdir/" - ls -l "$outdir/$PACKAGE.dvi.gz" - - cmd="$SETLANG $TEXI2DVI --pdf $dirargs $texarg \"$srcfile\"" - printf "\nGenerating pdf... ($cmd)\n" - eval "$cmd" - pdf_size=`calcsize $PACKAGE.pdf` - mv $PACKAGE.pdf "$outdir/" - ls -l "$outdir/$PACKAGE.pdf" -fi # end tex (dvi + pdf) - -# -if $generate_ascii; then - opt="-o $PACKAGE.txt --no-split --no-headers $commonarg" - cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" - printf "\nGenerating ascii... ($cmd)\n" - eval "$cmd" - ascii_size=`calcsize $PACKAGE.txt` - gzip -f -9 -c $PACKAGE.txt >"$outdir/$PACKAGE.txt.gz" - ascii_gz_size=`calcsize "$outdir/$PACKAGE.txt.gz"` - mv $PACKAGE.txt "$outdir/" - ls -l "$outdir/$PACKAGE.txt" "$outdir/$PACKAGE.txt.gz" -fi - -# - -if $generate_html; then -# Split HTML at level $1. Used for texi2html. -html_split() -{ - opt="--split=$1 --node-files $commonarg $htmlarg" - cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\"" - printf "\nGenerating html by $1... ($cmd)\n" - eval "$cmd" - split_html_dir=$PACKAGE.html - ( - cd ${split_html_dir} || exit 1 - ln -sf ${PACKAGE}.html index.html - tar -czf "$abs_outdir/${PACKAGE}.html_$1.tar.gz" -- *.html - ) - eval html_$1_tgz_size=`calcsize "$outdir/${PACKAGE}.html_$1.tar.gz"` - rm -f "$outdir"/html_$1/*.html - mkdir -p "$outdir/html_$1/" - mv ${split_html_dir}/*.html "$outdir/html_$1/" - rmdir ${split_html_dir} -} - -if test -z "$use_texi2html"; then - opt="--no-split --html -o $PACKAGE.html $commonarg $htmlarg" - cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" - printf "\nGenerating monolithic html... ($cmd)\n" - rm -rf $PACKAGE.html # in case a directory is left over - eval "$cmd" - html_mono_size=`calcsize $PACKAGE.html` - gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz" - html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"` - copy_images "$outdir/" $PACKAGE.html - mv $PACKAGE.html "$outdir/" - ls -l "$outdir/$PACKAGE.html" "$outdir/$PACKAGE.html.gz" - - # Before Texinfo 5.0, makeinfo did not accept a --split=HOW option, - # it just always split by node. So if we're splitting by node anyway, - # leave it out. - if test "x$split" = xnode; then - split_arg= - else - split_arg=--split=$split - fi - # - opt="--html -o $PACKAGE.html $split_arg $commonarg $htmlarg" - cmd="$SETLANG $MAKEINFO $opt \"$srcfile\"" - printf "\nGenerating html by $split... ($cmd)\n" - eval "$cmd" - split_html_dir=$PACKAGE.html - copy_images $split_html_dir/ $split_html_dir/*.html - ( - cd $split_html_dir || exit 1 - tar -czf "$abs_outdir/$PACKAGE.html_$split.tar.gz" -- * - ) - eval \ - html_${split}_tgz_size=`calcsize "$outdir/$PACKAGE.html_$split.tar.gz"` - rm -rf "$outdir/html_$split/" - mv $split_html_dir "$outdir/html_$split/" - du -s "$outdir/html_$split/" - ls -l "$outdir/$PACKAGE.html_$split.tar.gz" - -else # use texi2html: - opt="--output $PACKAGE.html $commonarg $htmlarg" - cmd="$SETLANG $TEXI2HTML $opt \"$srcfile\"" - printf "\nGenerating monolithic html with texi2html... ($cmd)\n" - rm -rf $PACKAGE.html # in case a directory is left over - eval "$cmd" - html_mono_size=`calcsize $PACKAGE.html` - gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz" - html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"` - mv $PACKAGE.html "$outdir/" - - html_split node - html_split chapter - html_split section -fi -fi # end html - -# -printf "\nMaking .tar.gz for sources...\n" -d=`dirname $srcfile` -( - cd "$d" - srcfiles=`ls -d *.texinfo *.texi *.txi *.eps $source_extra 2>/dev/null` || true - tar czfh "$abs_outdir/$PACKAGE.texi.tar.gz" $srcfiles - ls -l "$abs_outdir/$PACKAGE.texi.tar.gz" -) -texi_tgz_size=`calcsize "$outdir/$PACKAGE.texi.tar.gz"` - -# -# Do everything again through docbook. -if test -n "$docbook"; then - opt="-o - --docbook $commonarg" - cmd="$SETLANG $MAKEINFO $opt \"$srcfile\" >${srcdir}/$PACKAGE-db.xml" - printf "\nGenerating docbook XML... ($cmd)\n" - eval "$cmd" - docbook_xml_size=`calcsize $PACKAGE-db.xml` - gzip -f -9 -c $PACKAGE-db.xml >"$outdir/$PACKAGE-db.xml.gz" - docbook_xml_gz_size=`calcsize "$outdir/$PACKAGE-db.xml.gz"` - mv $PACKAGE-db.xml "$outdir/" - - split_html_db_dir=html_node_db - opt="$commonarg -o $split_html_db_dir" - cmd="$DOCBOOK2HTML $opt \"${outdir}/$PACKAGE-db.xml\"" - printf "\nGenerating docbook HTML... ($cmd)\n" - eval "$cmd" - ( - cd ${split_html_db_dir} || exit 1 - tar -czf "$abs_outdir/${PACKAGE}.html_node_db.tar.gz" -- *.html - ) - html_node_db_tgz_size=`calcsize "$outdir/${PACKAGE}.html_node_db.tar.gz"` - rm -f "$outdir"/html_node_db/*.html - mkdir -p "$outdir/html_node_db" - mv ${split_html_db_dir}/*.html "$outdir/html_node_db/" - rmdir ${split_html_db_dir} - - cmd="$DOCBOOK2TXT \"${outdir}/$PACKAGE-db.xml\"" - printf "\nGenerating docbook ASCII... ($cmd)\n" - eval "$cmd" - docbook_ascii_size=`calcsize $PACKAGE-db.txt` - mv $PACKAGE-db.txt "$outdir/" - - cmd="$DOCBOOK2PDF \"${outdir}/$PACKAGE-db.xml\"" - printf "\nGenerating docbook PDF... ($cmd)\n" - eval "$cmd" - docbook_pdf_size=`calcsize $PACKAGE-db.pdf` - mv $PACKAGE-db.pdf "$outdir/" -fi - -# -printf "\nMaking index.html for $PACKAGE...\n" -if test -z "$use_texi2html"; then - CONDS="/%%IF *HTML_SECTION%%/,/%%ENDIF *HTML_SECTION%%/d;\ - /%%IF *HTML_CHAPTER%%/,/%%ENDIF *HTML_CHAPTER%%/d" -else - # should take account of --split here. - CONDS="/%%ENDIF.*%%/d;/%%IF *HTML_SECTION%%/d;/%%IF *HTML_CHAPTER%%/d" -fi - -curdate=`$SETLANG date '+%B %d, %Y'` -sed \ - -e "s!%%TITLE%%!$MANUAL_TITLE!g" \ - -e "s!%%EMAIL%%!$EMAIL!g" \ - -e "s!%%PACKAGE%%!$PACKAGE!g" \ - -e "s!%%DATE%%!$curdate!g" \ - -e "s!%%HTML_MONO_SIZE%%!$html_mono_size!g" \ - -e "s!%%HTML_MONO_GZ_SIZE%%!$html_mono_gz_size!g" \ - -e "s!%%HTML_NODE_TGZ_SIZE%%!$html_node_tgz_size!g" \ - -e "s!%%HTML_SECTION_TGZ_SIZE%%!$html_section_tgz_size!g" \ - -e "s!%%HTML_CHAPTER_TGZ_SIZE%%!$html_chapter_tgz_size!g" \ - -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \ - -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \ - -e "s!%%PDF_SIZE%%!$pdf_size!g" \ - -e "s!%%ASCII_SIZE%%!$ascii_size!g" \ - -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \ - -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \ - -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \ - -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \ - -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \ - -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \ - -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \ - -e "s,%%SCRIPTURL%%,$scripturl,g" \ - -e "s!%%SCRIPTNAME%%!$prog!g" \ - -e "$CONDS" \ -$GENDOCS_TEMPLATE_DIR/gendocs_template >"$outdir/index.html" - -echo "Done, see $outdir/ subdirectory for new files." - -# Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/sysa/mes-0.22/build-aux/gitlog-to-changelog b/sysa/mes-0.22/build-aux/gitlog-to-changelog deleted file mode 100755 index b9e0fd44..00000000 --- a/sysa/mes-0.22/build-aux/gitlog-to-changelog +++ /dev/null @@ -1,499 +0,0 @@ -eval '(exit $?0)' && eval 'exec perl -wS "$0" "$@"' - & eval 'exec perl -wS "$0" $argv:q' - if 0; -# Convert git log output to ChangeLog format. - -my $VERSION = '2019-12-08 20:13'; # UTC -# The definition above must lie within the first 8 lines in order -# for the Emacs time-stamp write hook (at end) to update it. -# If you change this file with Emacs, please let the write hook -# do its job. Otherwise, update this string manually. - -# Copyright (C) 2008-2016 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# Written by Jim Meyering - -use strict; -use warnings; -use Getopt::Long; -use POSIX qw(strftime); - -(my $ME = $0) =~ s|.*/||; - -# use File::Coda; # http://meyering.net/code/Coda/ -END { - defined fileno STDOUT or return; - close STDOUT and return; - warn "$ME: failed to close standard output: $!\n"; - $? ||= 1; -} - -sub usage ($) -{ - my ($exit_code) = @_; - my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR); - if ($exit_code != 0) - { - print $STREAM "Try '$ME --help' for more information.\n"; - } - else - { - print $STREAM <<EOF; -Usage: $ME [OPTIONS] [ARGS] - -Convert git log output to ChangeLog format. If present, any ARGS -are passed to "git log". To avoid ARGS being parsed as options to -$ME, they may be preceded by '--'. - -OPTIONS: - - --amend=FILE FILE maps from an SHA1 to perl code (i.e., s/old/new/) that - makes a change to SHA1's commit log text or metadata. - --append-dot append a dot to the first line of each commit message if - there is no other punctuation or blank at the end. - --no-cluster never cluster commit messages under the same date/author - header; the default is to cluster adjacent commit messages - if their headers are the same and neither commit message - contains multiple paragraphs. - --srcdir=DIR the root of the source tree, from which the .git/ - directory can be derived. - --since=DATE convert only the logs since DATE; - the default is to convert all log entries. - --until=DATE convert only the logs older than DATE. - --ignore-matching=PAT ignore commit messages whose first lines match PAT. - --ignore-line=PAT ignore lines of commit messages that match PAT. - --format=FMT set format string for commit subject and body; - see 'man git-log' for the list of format metacharacters; - the default is '%s%n%b%n' - --strip-tab remove one additional leading TAB from commit message lines. - --strip-cherry-pick remove data inserted by "git cherry-pick"; - this includes the "cherry picked from commit ..." line, - and the possible final "Conflicts:" paragraph. - --help display this help and exit - --version output version information and exit - -EXAMPLE: - - $ME --since=2008-01-01 > ChangeLog - $ME -- -n 5 foo > last-5-commits-to-branch-foo - -SPECIAL SYNTAX: - -The following types of strings are interpreted specially when they appear -at the beginning of a log message line. They are not copied to the output. - - Copyright-paperwork-exempt: Yes - Append the "(tiny change)" notation to the usual "date name email" - ChangeLog header to mark a change that does not require a copyright - assignment. - Co-authored-by: Joe User <user\@example.com> - List the specified name and email address on a second - ChangeLog header, denoting a co-author. - Signed-off-by: Joe User <user\@example.com> - These lines are simply elided. - -In a FILE specified via --amend, comment lines (starting with "#") are ignored. -FILE must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1 (alone on -a line) referring to a commit in the current project, and CODE refers to one -or more consecutive lines of Perl code. Pairs must be separated by one or -more blank line. - -Here is sample input for use with --amend=FILE, from coreutils: - -3a169f4c5d9159283548178668d2fae6fced3030 -# fix typo in title: -s/all tile types/all file types/ - -1379ed974f1fa39b12e2ffab18b3f7a607082202 -# Due to a bug in vc-dwim, I mis-attributed a patch by Paul to myself. -# Change the author to be Paul. Note the escaped "@": -s,Jim .*>,Paul Eggert <eggert\\\@cs.ucla.edu>, - -EOF - } - exit $exit_code; -} - -# If the string $S is a well-behaved file name, simply return it. -# If it contains white space, quotes, etc., quote it, and return the new string. -sub shell_quote($) -{ - my ($s) = @_; - if ($s =~ m![^\w+/.,-]!) - { - # Convert each single quote to '\'' - $s =~ s/\'/\'\\\'\'/g; - # Then single quote the string. - $s = "'$s'"; - } - return $s; -} - -sub quoted_cmd(@) -{ - return join (' ', map {shell_quote $_} @_); -} - -# Parse file F. -# Comment lines (starting with "#") are ignored. -# F must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1 -# (alone on a line) referring to a commit in the current project, and -# CODE refers to one or more consecutive lines of Perl code. -# Pairs must be separated by one or more blank line. -sub parse_amend_file($) -{ - my ($f) = @_; - - open F, '<', $f - or die "$ME: $f: failed to open for reading: $!\n"; - - my $fail; - my $h = {}; - my $in_code = 0; - my $sha; - while (defined (my $line = <F>)) - { - $line =~ /^\#/ - and next; - chomp $line; - $line eq '' - and $in_code = 0, next; - - if (!$in_code) - { - $line =~ /^([0-9a-fA-F]{40})$/ - or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"), - $fail = 1, next; - $sha = lc $1; - $in_code = 1; - exists $h->{$sha} - and (warn "$ME: $f:$.: duplicate SHA1\n"), - $fail = 1, next; - } - else - { - $h->{$sha} ||= ''; - $h->{$sha} .= "$line\n"; - } - } - close F; - - $fail - and exit 1; - - return $h; -} - -# git_dir_option $SRCDIR -# -# From $SRCDIR, the --git-dir option to pass to git (none if $SRCDIR -# is undef). Return as a list (0 or 1 element). -sub git_dir_option($) -{ - my ($srcdir) = @_; - my @res = (); - if (defined $srcdir) - { - my $qdir = shell_quote $srcdir; - my $cmd = "cd $qdir && git rev-parse --show-toplevel"; - my $qcmd = shell_quote $cmd; - my $git_dir = qx($cmd); - defined $git_dir - or die "$ME: cannot run $qcmd: $!\n"; - $? == 0 - or die "$ME: $qcmd had unexpected exit code or signal ($?)\n"; - chomp $git_dir; - push @res, "--git-dir=$git_dir/.git"; - } - @res; -} - -{ - my $since_date; - my $until_date; - my $format_string = '%s%n%b%n'; - my $amend_file; - my $append_dot = 0; - my $cluster = 1; - my $ignore_matching; - my $ignore_line; - my $strip_tab = 0; - my $strip_cherry_pick = 0; - my $srcdir; - GetOptions - ( - help => sub { usage 0 }, - version => sub { print "$ME version $VERSION\n"; exit }, - 'since=s' => \$since_date, - 'until=s' => \$until_date, - 'format=s' => \$format_string, - 'amend=s' => \$amend_file, - 'append-dot' => \$append_dot, - 'cluster!' => \$cluster, - 'ignore-matching=s' => \$ignore_matching, - 'ignore-line=s' => \$ignore_line, - 'strip-tab' => \$strip_tab, - 'strip-cherry-pick' => \$strip_cherry_pick, - 'srcdir=s' => \$srcdir, - ) or usage 1; - - defined $since_date - and unshift @ARGV, "--since=$since_date"; - defined $until_date - and unshift @ARGV, "--until=$until_date"; - - # This is a hash that maps an SHA1 to perl code (i.e., s/old/new/) - # that makes a correction in the log or attribution of that commit. - my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {}; - - my @cmd = ('git', - git_dir_option $srcdir, - qw(log --log-size), - '--pretty=format:%H:%ct %an <%ae>%n%n'.$format_string, @ARGV); - open PIPE, '-|', @cmd - or die ("$ME: failed to run '". quoted_cmd (@cmd) ."': $!\n" - . "(Is your Git too old? Version 1.5.1 or later is required.)\n"); - - my $prev_multi_paragraph; - my $prev_date_line = ''; - my @prev_coauthors = (); - my @skipshas = (); - while (1) - { - defined (my $in = <PIPE>) - or last; - $in =~ /^log size (\d+)$/ - or die "$ME:$.: Invalid line (expected log size):\n$in"; - my $log_nbytes = $1; - - my $log; - my $n_read = read PIPE, $log, $log_nbytes; - $n_read == $log_nbytes - or die "$ME:$.: unexpected EOF\n"; - - # Extract leading hash. - my ($sha, $rest) = split ':', $log, 2; - defined $sha - or die "$ME:$.: malformed log entry\n"; - $sha =~ /^[0-9a-fA-F]{40}$/ - or die "$ME:$.: invalid SHA1: $sha\n"; - - my $skipflag = 0; - if (@skipshas) - { - foreach(@skipshas) - { - if ($sha =~ /^$_/) - { - $skipflag = $_; - last; - } - } - } - - # If this commit's log requires any transformation, do it now. - my $code = $amend_code->{$sha}; - if (defined $code) - { - eval 'use Safe'; - my $s = new Safe; - # Put the unpreprocessed entry into "$_". - $_ = $rest; - - # Let $code operate on it, safely. - my $r = $s->reval("$code") - or die "$ME:$.:$sha: failed to eval \"$code\":\n$@\n"; - - # Note that we've used this entry. - delete $amend_code->{$sha}; - - # Update $rest upon success. - $rest = $_; - } - - # Remove lines inserted by "git cherry-pick". - if ($strip_cherry_pick) - { - $rest =~ s/^\s*Conflicts:\n.*//sm; - $rest =~ s/^\s*\(cherry picked from commit [\da-f]+\)\n//m; - } - - my @line = split /[ \t]*\n/, $rest; - my $author_line = shift @line; - defined $author_line - or die "$ME:$.: unexpected EOF\n"; - $author_line =~ /^(\d+) (.*>)$/ - or die "$ME:$.: Invalid line " - . "(expected date/author/email):\n$author_line\n"; - - # Format 'Copyright-paperwork-exempt: Yes' as a standard ChangeLog - # `(tiny change)' annotation. - my $tiny = (grep (/^(?:Copyright-paperwork-exempt|Tiny-change):\s+[Yy]es$/, @line) - ? ' (tiny change)' : ''); - - my $date_line = sprintf "%s %s$tiny\n", - strftime ("%Y-%m-%d", gmtime ($1)), $2; - - my @coauthors = grep /^Co-authored-by:.*$/, @line; - # Omit meta-data lines we've already interpreted. - @line = grep !/^(?:Signed-off-by:[ ].*>$ - |Co-authored-by:[ ] - |Copyright-paperwork-exempt:[ ] - |Tiny-change:[ ] - )/x, @line; - - # Remove leading and trailing blank lines. - if (@line) - { - while ($line[0] =~ /^\s*$/) { shift @line; } - while ($line[$#line] =~ /^\s*$/) { pop @line; } - } - - # Handle Emacs gitmerge.el "skipped" commits. - # Yes, this should be controlled by an option. So sue me. - if ( grep /^(; )?Merge from /, @line ) - { - my $found = 0; - foreach (@line) - { - if (grep /^The following commit.*skipped:$/, $_) - { - $found = 1; - ## Reset at each merge to reduce chance of false matches. - @skipshas = (); - next; - } - if ($found && $_ =~ /^([0-9a-fA-F]{7,}) [^ ]/) - { - push ( @skipshas, $1 ); - } - } - } - - # Ignore commits that match the --ignore-matching pattern, if specified. - if (defined $ignore_matching && @line && $line[0] =~ /$ignore_matching/) - { - $skipflag = 1; - } - elsif ($skipflag) - { - ## Perhaps only warn if a pattern matches more than once? - warn "$ME: warning: skipping $sha due to $skipflag\n"; - } - - if (! $skipflag) - { - if (defined $ignore_line && @line) - { - @line = grep ! /$ignore_line/, @line; - while ($line[$#line] =~ /^\s*$/) { pop @line; } - } - - # Record whether there are two or more paragraphs. - my $multi_paragraph = grep /^\s*$/, @line; - - # Format 'Co-authored-by: A U Thor <email@example.com>' lines in - # standard multi-author ChangeLog format. - for (@coauthors) - { - s/^Co-authored-by:\s*/\t /; - s/\s*</ </; - - /<.*?@.*\..*>/ - or warn "$ME: warning: missing email address for " - . substr ($_, 5) . "\n"; - } - - # If clustering of commit messages has been disabled, if this header - # would be different from the previous date/name/etc. header, - # or if this or the previous entry consists of two or more paragraphs, - # then print the header. - if ( ! $cluster - || $date_line ne $prev_date_line - || "@coauthors" ne "@prev_coauthors" - || $multi_paragraph - || $prev_multi_paragraph) - { - $prev_date_line eq '' - or print "\n"; - print $date_line; - @coauthors - and print join ("\n", @coauthors), "\n"; - } - $prev_date_line = $date_line; - @prev_coauthors = @coauthors; - $prev_multi_paragraph = $multi_paragraph; - - # If there were any lines - if (@line == 0) - { - warn "$ME: warning: empty commit message:\n $date_line\n"; - } - else - { - if ($append_dot) - { - # If the first line of the message has enough room, then - if (length $line[0] < 72) - { - # append a dot if there is no other punctuation or blank - # at the end. - $line[0] =~ /[[:punct:]\s]$/ - or $line[0] .= '.'; - } - } - - # Remove one additional leading TAB from each line. - $strip_tab - and map { s/^\t// } @line; - - # Prefix each non-empty line with a TAB. - @line = map { length $_ ? "\t$_" : '' } @line; - - print "\n", join ("\n", @line), "\n"; - } - } - - defined ($in = <PIPE>) - or last; - $in ne "\n" - and die "$ME:$.: unexpected line:\n$in"; - } - - close PIPE - or die "$ME: error closing pipe from " . quoted_cmd (@cmd) . "\n"; - # FIXME-someday: include $PROCESS_STATUS in the diagnostic - - # Complain about any unused entry in the --amend=F specified file. - my $fail = 0; - foreach my $sha (keys %$amend_code) - { - warn "$ME:$amend_file: unused entry: $sha\n"; - $fail = 1; - } - - exit $fail; -} - -# Local Variables: -# mode: perl -# indent-tabs-mode: nil -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "my $VERSION = '" -# time-stamp-format: "%:y-%02m-%02d %02H:%02M" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "'; # UTC" -# End: diff --git a/sysa/mes-0.22/build-aux/indent.sh b/sysa/mes-0.22/build-aux/indent.sh deleted file mode 100755 index 130416c3..00000000 --- a/sysa/mes-0.22/build-aux/indent.sh +++ /dev/null @@ -1,21 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -for i in $(find . -name '*.c' -o -name '*.h' -o -name '*.i'); do indent $i --no-tabs --line-length 110 --honour-newlines; done diff --git a/sysa/mes-0.22/build-aux/install.sh.in b/sysa/mes-0.22/build-aux/install.sh.in deleted file mode 100644 index db4c6436..00000000 --- a/sysa/mes-0.22/build-aux/install.sh.in +++ /dev/null @@ -1,133 +0,0 @@ -#! @SHELL@ - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -set -e - -. ./config.sh - -v= -_v= -if test "$V" = 2; then - set -x -fi -if test -n "$V"; then - if test "$V" -gt 0; then - v=v - _v=-v - fi -fi - -set -u - -# Use bash or lose if pipes fail -if test -n "$BASHOPTS"; then - set -o pipefail -fi - -DESTDIR=${DESTDIR-} -mkdir -p ${DESTDIR}${bindir} -cp $_v bin/mes ${DESTDIR}${bindir}/mes -if test -f bin/mes-gcc; then - cp $_v bin/mes-gcc ${DESTDIR}${bindir}/mes-gcc -fi -if test -f bin/mes-mescc; then - cp $_v bin/mes-mescc ${DESTDIR}${bindir}/mes-mescc -fi -cp $_v scripts/mesar ${DESTDIR}${bindir}/mesar -cp $_v scripts/mescc.scm ${DESTDIR}${bindir}/mescc.scm -cp $_v scripts/mescc ${DESTDIR}${bindir}/mescc - -sed \ - -e "s,^#! /bin/sh,#! ${SHELL}," \ - scripts/diff.scm > ${DESTDIR}${bindir}/diff.scm -chmod +x ${DESTDIR}${bindir}/diff.scm - -mkdir -p ${DESTDIR}${docdir} - -if test -n "${PERL}"\ - && test -n "${GIT}"\ - && ${PERL} -v > /dev/null\ - && ! test -f .git-for-build; then - ${PERL} ${srcdest}build-aux/gitlog-to-changelog --srcdir=. > ChangeLog+ -fi - -cp\ - AUTHORS\ - BOOTSTRAP\ - COPYING\ - HACKING\ - NEWS\ - README\ - ROADMAP\ - ${DESTDIR}${docdir} - -if test -f ChangeLog+; then - cp $_v ChangeLog+ ${DESTDIR}${docdir}/ChangeLog - rm -f ChangeLog+ -else - cp $_v ChangeLog ${DESTDIR}${docdir} -fi - -__exclude_go= -__exclude_scm= -if test -f module/mescc.go; then - __exclude_go=--exclude='*.go' - __exclude_scm=--exclude='*.scm' -fi - -mkdir -p $DESTDIR$includedir -mkdir -p $DESTDIR$libdir -mkdir -p $DESTDIR$pkgdatadir -tar -cf- -C ${srcdir}/include . | tar -${v}xf- -C $DESTDIR$includedir -tar -cf- -C ${srcdir}/lib $mes_cpu-mes | tar -${v}xf- -C $DESTDIR$libdir -tar -cf- -C ${srcdir}/lib $mes_kernel/$mes_cpu-mes | tar -${v}xf- -C $DESTDIR$libdir -if test -z "$srcdest"; then - tar -cf- $__exclude_go module | tar -${v}xf- -C $DESTDIR$pkgdatadir -else - tar -cf- -C ${srcdest} module | tar -${v}xf- -C $DESTDIR$pkgdatadir -fi -tar -cf- -C ${srcdest}mes module | tar -${v}xf- -C $DESTDIR$pkgdatadir -if test -d gcc-lib/$mes_cpu-mes; then - tar -cf- -C gcc-lib/$mes_cpu-mes . | tar -${v}xf- -C $DESTDIR$libdir -fi -if test -d mescc-lib/$mes_cpu-mes; then - tar -cf- -C mescc-lib $mes_cpu-mes | tar -${v}xf- -C $DESTDIR$libdir -fi - -mkdir -p ${DESTDIR}${guile_site_dir} -mkdir -p ${DESTDIR}${guile_site_ccache_dir} -tar -cf- -C ${srcdest}module $__exclude_go . | tar -${v}xf- -C ${DESTDIR}${guile_site_dir} -tar -cf- -C module $__exclude_scm . | tar -${v}xf- -C ${DESTDIR}${guile_site_ccache_dir} - -if test -f doc/mes.info; then - mkdir -p ${DESTDIR}${infodir} - tar -cf- doc/mes.info* doc/images | tar -${v}xf- --strip-components=1 -C ${DESTDIR}${infodir} - install-info --info-dir=${DESTDIR}${infodir} doc/mes.info -fi - -if test -f doc/mes.1; then - mkdir -p ${DESTDIR}${mandir}/man1 - cp $_v doc/mes.1 ${DESTDIR}${mandir}/man1/ -fi - -if test -f doc/mescc.1; then - mkdir -p ${DESTDIR}${mandir}/man1 - cp $_v doc/mescc.1 ${DESTDIR}${mandir}/man1/ -fi diff --git a/sysa/mes-0.22/build-aux/manifest.scm b/sysa/mes-0.22/build-aux/manifest.scm deleted file mode 100644 index 5f6ec98d..00000000 --- a/sysa/mes-0.22/build-aux/manifest.scm +++ /dev/null @@ -1,23 +0,0 @@ -;;; GNU Mes --- Maxwell Equations of Software -;;; Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> - -;;; This file is part of GNU Mes. -;;; -;;; GNU Mes is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Mes is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -(use-modules (guix packages)) -(define %source-dir (dirname (dirname (current-filename)))) -(add-to-load-path (string-append %source-dir "/guix")) -(use-modules (git mes)) -(packages->manifest (map cadr (package-direct-inputs mes))) diff --git a/sysa/mes-0.22/build-aux/mes-snarf.scm b/sysa/mes-0.22/build-aux/mes-snarf.scm deleted file mode 100755 index 9dcac71d..00000000 --- a/sysa/mes-0.22/build-aux/mes-snarf.scm +++ /dev/null @@ -1,205 +0,0 @@ -#! /bin/sh -# -*-scheme-*- -exec ${GUILE-guile} --no-auto-compile -L $(dirname $0) -C $(dirname $0) -e '(mes-snarf)' -s "$0" "$@" -!# - -;;; GNU Mes --- Maxwell Equations of Software -;;; Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -;;; -;;; mes-snarf.scm: This file is part of GNU Mes. -;;; -;;; GNU Mes is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Mes is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -(define-module (mes-snarf) - #:use-module (srfi srfi-1) - #:use-module (srfi srfi-8) - #:use-module (srfi srfi-9) - #:use-module (srfi srfi-26) - #:use-module (ice-9 rdelim) - #:export (main)) - -(cond-expand - (mes - (define %scheme "mes")) - (guile-2 - (define %scheme "guile") - (define-macro (mes-use-module . rest) #t)) - (guile - (use-modules (ice-9 syncase)) - (define %scheme "guile") - (define-macro (mes-use-module . rest) #t))) - -(mes-use-module (mes guile)) -(mes-use-module (srfi srfi-1)) -(mes-use-module (srfi srfi-8)) -(mes-use-module (srfi srfi-9)) -(mes-use-module (srfi srfi-26)) - -(when (and=> (getenv "V") (lambda (v) (> (string->number v) 1))) - (format (current-error-port) "mes-snarf[~a]...\n" %scheme)) - -(define (char->char from to char) - (if (eq? char from) to char)) - -(define (string-replace-char string from to) - (string-map (cut char->char from to <>) string)) - -(define (string-replace-suffix string from to) - (if (string-suffix? from string) - (string-replace string to (- (string-length string) (string-length from))) - string)) - -(define (string-replace-string string from to) - (cond ((string-contains string from) => (lambda (i) (string-replace string to i (+ i (string-length from))))) - (else string))) - -(define %gcc? #t) - -(define-record-type <file> (make-file name content) - file? - (name file.name) - (content file.content)) - -(define-record-type <function> (make-function name formals annotation) - function? - (name function.name) - (formals function.formals) - (annotation function.annotation)) - -(define (function-scm-name f) - (or (assoc-ref (function.annotation f) 'name) - (let ((name ((compose - identity - (cut string-replace-char <> #\_ #\-) - (cut string-replace-string <> "_to_" "->") - (cut string-replace-suffix <> "_x" "!") - (cut string-replace-suffix <> "_x_" "!-") - (cut string-replace-suffix <> "_p" "?") - ) - (function.name f)))) - (if (not (string-suffix? "-" name)) name - (string-append "core:" (string-drop-right name 1)))))) - -(define %builtin-prefix% "scm_") -(define (function-builtin-name f) - (string-append %builtin-prefix% (function.name f))) - -(define %cell-prefix% "cell_") -(define (function-cell-name f) - (string-append %cell-prefix% (function.name f))) - -(define %start 1) -(define (symbol->header s i) - (string-append - (format #f "// CONSTANT ~a ~a\n" s i) - (format #f "#define ~a ~a\n" s i))) - -(define (function->header f i) - (let* ((arity (or (assoc-ref (function.annotation f) 'arity) - (if (string-null? (function.formals f)) 0 - (length (string-split (function.formals f) #\,))))) - (n (if (eq? arity 'n) -1 arity))) - (format #f "SCM ~a (~a);\n" (function.name f) (function.formals f)))) - -(define (function->source f i) - (let* ((arity (or (assoc-ref (function.annotation f) 'arity) - (if (string-null? (function.formals f)) 0 - (length (string-split (function.formals f) #\,))))) - (n (if (eq? arity 'n) -1 arity))) - (format #f " a = init_builtin (builtin_type, ~s, ~a, &~a, a);\n" (function.name f) n (function.name f)))) - -(define (disjoin . predicates) - (lambda (. arguments) - (any (cut apply <> arguments) predicates))) - -(define (snarf-symbols string) - (let* ((lines (string-split string #\newline)) - (symbols (filter (cut string-prefix? " init_symbol (" <>) lines))) - (define (line->symbol line) - ((compose - (lambda (s) (string-take s (string-index s #\,))) - (cut string-drop <> (string-length " init_symbol ("))) - line)) - (map line->symbol symbols))) - -(define (string-split-string string sep) - (cond ((string-contains string sep) => (lambda (i) (list (string-take string i) (string-drop string (+ i (string-length sep)))))) - (else (list string #f)))) - -(define (snarf-functions string) - (let ((lines (string-split string #\newline))) - (filter-map - (lambda (line previous) - (receive (function rest) - (apply values (string-split-string line " ")) - (and function - (equal? (string-trim previous) "SCM") - (not (string-null? function)) - (not (string-prefix? "#" function)) - (not (string-prefix? "/" function)) - rest - (receive (parameter-list annotation) - (apply values (string-split-string rest " ///")) - (let* ((parameters (string-drop parameter-list 1)) - (parameters (string-drop-right parameters 1)) - (formals (if (string-null? parameters) '() - (string-split parameters #\,))) - (formals (map string-trim formals))) - (and parameters - (let* ((non-SCM (filter (negate (cut string-prefix? "SCM" <>)) formals))) - (and (null? non-SCM) - (let ((annotation (and annotation (with-input-from-string annotation read)))) - (make-function function parameters annotation)))))))))) - lines (cons "\n" lines)))) - -(define (content? f) - ((compose not string-null? file.content) f)) - -(define (internal? f) - ((compose (cut assoc-ref <> 'internal) function.annotation) f)) - -(define (no-environment? f) - ((compose (cut assoc-ref <> 'no-environment) function.annotation) f)) - -(define (generate-includes file-name) - (let* ((srcdest (or (getenv "srcdest") "")) - (string (with-input-from-file (string-append srcdest file-name) read-string)) - (functions (snarf-functions string)) - (functions (delete-duplicates functions (lambda (a b) (equal? (function.name a) (function.name b))))) - (functions (filter (negate internal?) functions)) - (symbols (snarf-symbols string)) - (base-name (basename file-name ".c")) - (dir (string-append (dirname file-name))) - (base-name (string-append dir "/" base-name)) - (base-name (if %gcc? base-name - (string-append base-name ".mes"))) - (header (make-file - (string-append base-name ".h") - (string-join (map function->header functions (iota (length functions) (+ %start (length symbols)))) ""))) - (source (make-file - (string-append base-name ".i") - (string-join (map function->source (filter (negate no-environment?) functions) (iota (length functions) (+ (length symbols) %start))) ""))) - (symbols.h (make-file - (string-append base-name ".symbols.h") - (string-join (map symbol->header symbols (iota (length symbols) %start)) "")))) - (list header source symbols.h))) - -(define (file-write file) - (system* "mkdir" "-p" (dirname (file.name file))) - (with-output-to-file (file.name file) (lambda () (display (file.content file))))) - -(define (main args) - (let* ((files (cdr args)) - (files (append-map generate-includes files))) - (for-each file-write (filter content? files)))) diff --git a/sysa/mes-0.22/build-aux/pre-inst-env.in b/sysa/mes-0.22/build-aux/pre-inst-env.in deleted file mode 100644 index b8ef1151..00000000 --- a/sysa/mes-0.22/build-aux/pre-inst-env.in +++ /dev/null @@ -1,54 +0,0 @@ -#! @BASH@ - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -abs_top_srcdir="@abs_top_srcdir@" -export abs_top_srcdir -abs_top_builddir="@abs_top_builddir@" -export abs_top_builddir -prefix=${prefix-@prefix@} -export prefix -program_prefix=${program_prefix-@program_prefix@} - -MES_PREFIX=${MES_PREFIX-${abs_top_srcdir}} -export MES_PREFIX - -GUILE_LOAD_COMPILED_PATH="$abs_top_builddir/scripts:$abs_top_builddir/module${GUILE_LOAD_COMPILED_PATH:+:}$GUILE_LOAD_COMPILED_PATH" -GUILE_LOAD_PATH="$abs_top_srcdir/module:$abs_top_srcdir/mes:$abs_top_srcdir/guix${GUILE_LOAD_PATH:+:}$GUILE_LOAD_PATH" -if [ -n "$srcdest" ]; then - GUILE_LOAD_PATH="${srcdest}module:${srcdest}mes:$GUILE_LOAD_PATH" -fi -export GUILE_LOAD_COMPILED_PATH GUILE_LOAD_PATH - -PATH="$abs_top_builddir/scripts:$abs_top_builddir/scripts:$abs_top_builddir/bin:$abs_top_builddir/build-aux:$PATH" -export PATH - -MES=${MES-${abs_top_builddir}/bin/${program_prefix}mes} -export MES - -bindir=${abs_top_builddir}/scripts -export bindir - -GUIX_PACKAGE_PATH="$abs_top_srcdir/guix${GUIX_PACKAGE_PATH:+:}$GUIX_PACKAGE_PATH" -export GUIX_PACKAGE_PATH - -LANG= -LC_ALL= - -exec "$@" diff --git a/sysa/mes-0.22/build-aux/setup-mes.sh b/sysa/mes-0.22/build-aux/setup-mes.sh deleted file mode 100644 index 18cc637b..00000000 --- a/sysa/mes-0.22/build-aux/setup-mes.sh +++ /dev/null @@ -1,90 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -set -e - -if [ -n "$BUILD_DEBUG" ]; then - set -x -fi - -mkdir -p src -cd src - - -for GUILE_EFFECTIVE_VERSION in 2.2 2.0; do - if sudo apt-get install --no-install-recommends guile-$GUILE_EFFECTIVE_VERSION-dev; then - break - fi -done - -guile_site_dir=/usr/local/share/guile/site/$GUILE_EFFECTIVE_VERSION -guile_site_ccache_dir=/usr/local/lib/guile/$GUILE_EFFECTIVE_VERSION/site-ccache -GUILE_LOAD_PATH=$guile_site_dir -GUILE_LOAD_COMPILED_PATH=$guile_site_ccache_dir -export GUILE_LOAD_PATH -export GUILE_LOAD_COMPILED_PATH - -sudo apt-get install --no-install-recommends build-essential ca-certificates help2man texinfo - -# Nice to have -sudo apt-get install --no-install-recommends gcc-i686-linux-gnu || true - -echo checking for M1 -if ! command -v M1; then - if sudo apt-get install mescc-tools; then - echo yay - else - wget -O mescc-tools-Release_0.5.1.tar.gz https://github.com/oriansj/mescc-tools/archive/Release_0.5.1.tar.gz - tar xf mescc-tools-Release_0.5.1.tar.gz - cd mescc-tools-Release_0.5.1 - make - make check - sudo make install - cd .. - fi -fi - -echo checking for Nyacc -if ! guile -c '(use-modules (nyacc lalr)) (display *nyacc-version*) (newline)'; then - if sudo apt-get install --no-install-recommends nyacc; then - echo yay - else - wget -O nyacc-v0.80.43.tar.gz https://gitlab.com/janneke/nyacc/-/archive/v0.80.43/nyacc-v0.80.43.tar.gz - tar xf nyacc-v0.80.43.tar.gz - cd nyacc-v0.80.43 - ./configure --prefix=/usr/local - make - make check - sudo make install - cd .. - fi -fi - -echo checking for mes -if ! command -v mes; then - sudo apt-get install --no-install-recommends git - git clone git://git.savannah.gnu.org/mes.git - cd mes - git checkout wip-gnu - ./configure - make - make check - make install -fi diff --git a/sysa/mes-0.22/build-aux/snarf.sh b/sysa/mes-0.22/build-aux/snarf.sh deleted file mode 100755 index ceb90c39..00000000 --- a/sysa/mes-0.22/build-aux/snarf.sh +++ /dev/null @@ -1,36 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -set -e - -. ${srcdest}build-aux/config.sh -. ${srcdest}build-aux/trace.sh - -trace "SNARF$snarf gc.c" ${srcdest}build-aux/mes-snarf.scm src/gc.c -trace "SNARF$snarf hash.c" ${srcdest}build-aux/mes-snarf.scm src/hash.c -trace "SNARF$snarf lib.c" ${srcdest}build-aux/mes-snarf.scm src/lib.c -trace "SNARF$snarf math.c" ${srcdest}build-aux/mes-snarf.scm src/math.c -trace "SNARF$snarf mes.c" ${srcdest}build-aux/mes-snarf.scm src/mes.c -trace "SNARF$snarf module.c" ${srcdest}build-aux/mes-snarf.scm src/module.c -trace "SNARF$snarf posix.c" ${srcdest}build-aux/mes-snarf.scm src/posix.c -trace "SNARF$snarf reader.c" ${srcdest}build-aux/mes-snarf.scm src/reader.c -trace "SNARF$snarf strings.c" ${srcdest}build-aux/mes-snarf.scm src/string.c -trace "SNARF$snarf struct.c" ${srcdest}build-aux/mes-snarf.scm src/struct.c -trace "SNARF$snarf vector.c" ${srcdest}build-aux/mes-snarf.scm src/vector.c diff --git a/sysa/mes-0.22/build-aux/test-boot.sh b/sysa/mes-0.22/build-aux/test-boot.sh deleted file mode 100755 index a189a3ea..00000000 --- a/sysa/mes-0.22/build-aux/test-boot.sh +++ /dev/null @@ -1,38 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -set -e - -if [ "$V" = 2 ]; then - set -x -fi - -t=${1-scaffold/boot/00-zero.scm} -b=$(basename "$t" .scm) - -if [ "$(basename $MES)" = guile ]; then - $MES -L ${srcdest}module -C module -L . -c '(begin (use-modules (mes guile)) (include-from-path "'"$t"'"))' -elif [ -z "${b/5[0-9]-*/}" ]; then - cat "$t" | MES_BOOT=boot-00.scm $MES -elif [ -z "${b/6[0-9]-*/}" ]; then - cat "$t" | MES_BOOT=boot-01.scm $MES -else - MES_BOOT=$t $MES; -fi diff --git a/sysa/mes-0.22/build-aux/test-c.sh b/sysa/mes-0.22/build-aux/test-c.sh deleted file mode 100755 index 00844075..00000000 --- a/sysa/mes-0.22/build-aux/test-c.sh +++ /dev/null @@ -1,85 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -set -e - -if test -z "$config_sh"; then - . ./config.sh -fi - -if [ "$V" = 2 ]; then - set -x -fi - -t=${1-lib/tests/scaffold/t.c} -b=$(dirname "$t")/$(basename "$t" .c) -o="$b" -o=lib/tests/${b#*lib/tests/} -if [ "$o" = "$b" ]; then - o=./$(basename "$t" .c) -fi - -rm -f "$o" -CC=${CC-gcc} - -i=$(basename "$t" .c) -if [ -z "${i/[012][0-9]-*/}" ]; then - LIBS= -elif [ -z "${i/[34][0-9]-*/}" ]; then - LIBS='-l c-mini' -elif [ -z "${i/[78][0-9a-z]-*/}" ]; then - LIBS='-l c+tcc' -elif [ -z "${i/9[0-9a-z]-*/}" ]; then - LIBS='-l c+gnu' -else - LIBS='-l c' -fi - -if test $mes_kernel = gnu\ - && test -z "$LIBS"; then - LIBS="-l c-mini" -fi - -if test $mes_libc = system; then - crt1= - LIBS='-l mes' -else - crt1=crt1.o -fi - -$CC -g -c $AM_CPPFLAGS $CPPFLAGS $AM_CFLAGS $CFLAGS -o "$o".o "$t" -$CC -g $AM_CFLAGS $CFLAGS $AM_LDFLAGS $LDFLAGS -L . -o "$o" $crt1 "$o".o $LIBS - -set +e -timeout 10 "$o" -s --long file0 file1 > "$o".1 2> "$o".2 -r=$? -set -e -if [ -f "$b".exit ]; then - e=$(cat "$b".exit) -else - e=0 -fi -[ $r = $e ] || exit 1 -if [ -f "$b".stdout ]; then - $DIFF -ub "$b".stdout "$o".1 -fi -if [ -f "$b".stderr ]; then - $DIFF -ub "$b".stderr "$o".2 -fi diff --git a/sysa/mes-0.22/build-aux/test-driver b/sysa/mes-0.22/build-aux/test-driver deleted file mode 100755 index 2930e80b..00000000 --- a/sysa/mes-0.22/build-aux/test-driver +++ /dev/null @@ -1,148 +0,0 @@ -#!/bin/sh -# test-driver - basic testsuite driver script. - -scriptversion=2018-03-07.03; # UTC - -# Copyright (C) 2011-2018 Free Software Foundation, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <https://www.gnu.org/licenses/>. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# This file is maintained in Automake, please report -# bugs to <bug-automake@gnu.org> or send patches to -# <automake-patches@gnu.org>. - -# Make unconditional expansion of undefined variables an error. This -# helps a lot in preventing typo-related bugs. -set -u - -usage_error () -{ - echo "$0: $*" >&2 - print_usage >&2 - exit 2 -} - -print_usage () -{ - cat <<END -Usage: - test-driver --test-name=NAME --log-file=PATH --trs-file=PATH - [--expect-failure={yes|no}] [--color-tests={yes|no}] - [--enable-hard-errors={yes|no}] [--] - TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS] -The '--test-name', '--log-file' and '--trs-file' options are mandatory. -END -} - -test_name= # Used for reporting. -log_file= # Where to save the output of the test script. -trs_file= # Where to save the metadata of the test run. -expect_failure=no -color_tests=no -enable_hard_errors=yes -while test $# -gt 0; do - case $1 in - --help) print_usage; exit $?;; - --version) echo "test-driver $scriptversion"; exit $?;; - --test-name) test_name=$2; shift;; - --log-file) log_file=$2; shift;; - --trs-file) trs_file=$2; shift;; - --color-tests) color_tests=$2; shift;; - --expect-failure) expect_failure=$2; shift;; - --enable-hard-errors) enable_hard_errors=$2; shift;; - --) shift; break;; - -*) usage_error "invalid option: '$1'";; - *) break;; - esac - shift -done - -missing_opts= -test x"$test_name" = x && missing_opts="$missing_opts --test-name" -test x"$log_file" = x && missing_opts="$missing_opts --log-file" -test x"$trs_file" = x && missing_opts="$missing_opts --trs-file" -if test x"$missing_opts" != x; then - usage_error "the following mandatory options are missing:$missing_opts" -fi - -if test $# -eq 0; then - usage_error "missing argument" -fi - -if test $color_tests = yes; then - # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'. - red='' # Red. - grn='' # Green. - lgn='' # Light green. - blu='' # Blue. - mgn='' # Magenta. - std='' # No color. -else - red= grn= lgn= blu= mgn= std= -fi - -do_exit='rm -f $log_file $trs_file; (exit $st); exit $st' -trap "st=129; $do_exit" 1 -trap "st=130; $do_exit" 2 -trap "st=141; $do_exit" 13 -trap "st=143; $do_exit" 15 - -# Test script is run here. -"$@" >$log_file 2>&1 -estatus=$? - -if test $enable_hard_errors = no && test $estatus -eq 99; then - tweaked_estatus=1 -else - tweaked_estatus=$estatus -fi - -case $tweaked_estatus:$expect_failure in - 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; - 0:*) col=$grn res=PASS recheck=no gcopy=no;; - 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; - 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; - *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; - *:*) col=$red res=FAIL recheck=yes gcopy=yes;; -esac - -# Report the test outcome and exit status in the logs, so that one can -# know whether the test passed or failed simply by looking at the '.log' -# file, without the need of also peaking into the corresponding '.trs' -# file (automake bug#11814). -echo "$res $test_name (exit status: $estatus)" >>$log_file - -# Report outcome to console. -echo "${col}${res}${std}: $test_name" - -# Register the test result, and other relevant metadata. -echo ":test-result: $res" > $trs_file -echo ":global-test-result: $res" >> $trs_file -echo ":recheck: $recheck" >> $trs_file -echo ":copy-in-global-log: $gcopy" >> $trs_file - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff --git a/sysa/mes-0.22/build-aux/test-suite.sh b/sysa/mes-0.22/build-aux/test-suite.sh deleted file mode 100644 index e7767704..00000000 --- a/sysa/mes-0.22/build-aux/test-suite.sh +++ /dev/null @@ -1,143 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2011-2018 Free Software Foundation, Inc. -# Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -# Adapted from GNU Automake - -TEST_SUITE_LOG=test-suite.log -dry_run=false -create_global_log=cat -subdir=$(basename $(pwd)) - -TEST_LOGS= -for t in $TESTS; do - b=$(dirname $t)/$(basename $t $test_ext) - TEST_LOGS="$TEST_LOGS $b.log" - if test -e $b.log \ - && test -e $b.trs\ - && ! $recheck; then - echo `grep :test-result $b.trs | cut -d' ' -f 2`: $b - continue - fi - d=$(dirname $t) - case " `echo $XFAIL_TESTS` " in - *[\ \ ]$t[\ \ ]*) - fail=yes;; - *) - fail=no;; - esac - mkdir -p $d - ${SHELL} ${srcdest}build-aux/test-driver\ - --test-name $t \ - --log-file $b.log\ - --trs-file $b.trs\ - --color-tests $colors\ - --enable-hard-errors no\ - --expect-failure $fail\ - -- $log_compiler\ - ${srcdest}$t -done - -if test $colors = yes; then - red='' - grn='' - lgn='' - blu='' - mgn='' - brg='' - std='' -else - mgn= red= grn= lgn= blu= brg= std= -fi -bases="$TEST_LOGS" -bases=`for i in $bases; do echo $i; done | sed 's/\.log$//'` -bases=`echo $bases` -ws='[ ]' -results=`for b in $bases; do echo $b.trs; done` -test -n "$results" || results=/dev/null -all=` grep "^$ws*:test-result:" $results | wc -l` -pass=` grep "^$ws*:test-result:$ws*PASS" $results | wc -l` -fail=` grep "^$ws*:test-result:$ws*FAIL" $results | wc -l` -skip=` grep "^$ws*:test-result:$ws*SKIP" $results | wc -l` -xfail=`grep "^$ws*:test-result:$ws*XFAIL" $results | wc -l` -xpass=`grep "^$ws*:test-result:$ws*XPASS" $results | wc -l` -error=`grep "^$ws*:test-result:$ws*ERROR" $results | wc -l` -if test `expr $fail + $xpass + $error` -eq 0; then - success=true -else - success=false -fi -br='==================='; br=$br$br$br$br -result_count () -{ - if test x"$1" = x"--maybe-color"; then - maybe_colorize=yes - elif test x"$1" = x"--no-color"; then - maybe_colorize=no - else - echo "$@: invalid 'result_count' usage" >&2; exit 4 - fi - shift - desc=$1 count=$2 - if test $maybe_colorize = yes && test $count -gt 0; then - color_start=$3 color_end=$std - else - color_start= color_end= - fi - echo "${color_start}# $desc $count${color_end}" -} -create_testsuite_report () -{ - result_count $1 "TOTAL:" $all "$brg" - result_count $1 "PASS: " $pass "$grn" - result_count $1 "SKIP: " $skip "$blu" - result_count $1 "XFAIL:" $xfail "$lgn" - result_count $1 "FAIL: " $fail "$red" - result_count $1 "XPASS:" $xpass "$red" - result_count $1 "ERROR:" $error "$mgn" -} -{ - echo "${PACKAGE}: ${subdir}/${TEST_SUITE_LOG}" - create_testsuite_report --no-color - echo - echo - for b in $bases; do echo $b; done\ - | $create_global_log -} >${TEST_SUITE_LOG}.tmp || exit 1 -mv ${TEST_SUITE_LOG}.tmp ${TEST_SUITE_LOG} -if $success; then - col="$grn" - else - col="$red" - test x"$V" = x0 || cat ${TEST_SUITE_LOG} -fi -echo "${col}$br${std}" -echo "${col}Testsuite summary for ${PACKAGE_NAME}${std}" -echo "${col}$br${std}" -create_testsuite_report --maybe-color -echo "$col$br$std" -if $success; then :; else - echo "${col}See ${subdir}/${TEST_SUITE_LOG}${std}" - if test -n "${PACKAGE_BUGREPORT}"; then - echo "${col}Please report to ${PACKAGE_BUGREPORT}${std}" - fi - echo "$col$br$std" -fi -$success || exit 1 diff --git a/sysa/mes-0.22/build-aux/trace.sh b/sysa/mes-0.22/build-aux/trace.sh deleted file mode 100644 index d8477845..00000000 --- a/sysa/mes-0.22/build-aux/trace.sh +++ /dev/null @@ -1,49 +0,0 @@ -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -LOG= -if [ -z "$V" -o "$V" = 0 ]; then - trace () { - echo " $1" - shift - echo "$@" >> build.log - eval "$@ $LOG" - cat .log 1>&2 - cat .log >> build.log - } - LOG=" >.log 2>&1" -fi -if [ "$V" = 1 ]; then - trace () { - shift - echo "$@" - echo "$@" >> build.log - eval "$@ $LOG" - cat .log 1>&2 - cat .log >> build.log - } - LOG=" >.log 2>&1" -fi -if [ "$V" = 2 ]; then - set -x - trace () { - shift - echo "$@" >> build.log - eval "$@" - } -fi diff --git a/sysa/mes-0.22/build-aux/uninstall.sh.in b/sysa/mes-0.22/build-aux/uninstall.sh.in deleted file mode 100644 index e1815d81..00000000 --- a/sysa/mes-0.22/build-aux/uninstall.sh.in +++ /dev/null @@ -1,96 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -#set -e - -. ./config.sh - -v= -_v= -if test "$V" = 2; then - set -x -fi -if test "$V" -gt 0; then - v=v - _v=-v -fi - -set -u - -rm ${DESTDIR}${bindir}/mes -rm ${DESTDIR}${bindir}/ar -rm ${DESTDIR}${bindir}/mescc -rm ${DESTDIR}${bindir}/mescc.scm -rm ${DESTDIR}${bindir}/diff.scm -rmdir ${DESTDIR}${bindir} || : - -rm -r ${DESTDIR}${libdir}/$mes_cpu-mes -rm ${DESTDIR}${libdir}/libc-mini.a -rm ${DESTDIR}${libdir}/libmes.a -if cmp gcc-lib/libc.a ${DESTDIR}${libdir}/libc.a; then - rm ${DESTDIR}${libdir}/libc.a -fi -if cmp gcc-lib/libtcc1.a ${DESTDIR}${libdir}/libtcc1.a; then - rm ${DESTDIR}${libdir}/libtcc1.a -fi -rm ${DESTDIR}${libdir}/libc+tcc.a -rm ${DESTDIR}${libdir}/libc+gnu.a - -rm -r ${DESTDIR}${includedir}/mes -rm $(grep -lr _MES_ ${DESTDIR}${includedir}) -rmdir ${DESTDIR}${includedir}/linux/x86 -rmdir ${DESTDIR}${includedir}/linux/x86_64 -rmdir ${DESTDIR}${includedir}/linux -rmdir -p ${DESTDIR}${includedir}/sys - -for i in\ - AUTHORS\ - BOOTSTRAP\ - COPYING\ - ChangeLog\ - HACKING\ - INSTALL\ - NEWS\ - README\ - ;do - rm ${DESTDIR}${docdir}/$i || :; -done - -rm -r ${DESTDIR}${pkgdatadir} -rm -r ${DESTDIR}${guile_site_ccache_dir}/mes -rm -r ${DESTDIR}${guile_site_ccache_dir}/mescc - -rm -r ${DESTDIR}${guile_site_dir}/mes -rm ${DESTDIR}${guile_site_dir}/mescc.scm -rm -r ${DESTDIR}${guile_site_dir}/mescc - -rm ${DESTDIR}${infodir}/dir -rm ${DESTDIR}${infodir}/mes.info* -rm ${DESTDIR}${infodir}/images/gcc-mesboot* -rm ${DESTDIR}${infodir}/images/README -rm ${DESTDIR}${mandir}/man1/mes.1 -rm ${DESTDIR}${mandir}/man1/mescc.1 - -rmdir -p ${DESTDIR}${docdir} -rmdir -p ${DESTDIR}${infodir}/images -rmdir -p ${DESTDIR}${guile_site_dir} -rmdir -p ${DESTDIR}${guile_site_ccache_dir} -rmdir -p ${DESTDIR}${mandir}/man1 -true diff --git a/sysa/mes-0.22/configure b/sysa/mes-0.22/configure deleted file mode 100755 index 7e59b5a9..00000000 --- a/sysa/mes-0.22/configure +++ /dev/null @@ -1,715 +0,0 @@ -#! /bin/sh -# -*-scheme-*- -MES_ARENA=100000000 exec ${SCHEME-guile} -L . --no-auto-compile -e '(configure)' -s "$0" ${1+"$@"} -!# - -;;; GNU Mes --- Maxwell Equations of Software -;;; Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -;;; -;;; configure: This file is part of GNU Mes. -;;; -;;; GNU Mes is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Mes is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -(define-module (configure) - #:use-module (srfi srfi-1) - #:use-module (srfi srfi-9) - #:use-module (srfi srfi-9 gnu) - #:use-module (srfi srfi-26) - #:use-module (ice-9 getopt-long) - #:use-module (ice-9 optargs) - #:use-module (ice-9 popen) - #:use-module (ice-9 rdelim) - #:export (main)) - -(define *shell* "sh") -(define PACKAGE "mes") -(define PACKAGE-NAME "GNU Mes") -(define PACKAGE-BUGREPORT "bug-mes@gnu.org") -(define VERSION "0.22") - -(cond-expand - (guile) - (mes (mes-use-module (srfi srfi-1)) - (mes-use-module (srfi srfi-9)) - (mes-use-module (srfi srfi-9 gnu)) - (mes-use-module (srfi srfi-26)) - (mes-use-module (mes getopt-long)) - (mes-use-module (mes guile)) - (mes-use-module (mes misc)) - (mes-use-module (mes optargs)) - (define %host-type "x86_64-unknown-linux-gnu") - (define OPEN_READ "r") - (define (canonicalize-path o) - (if (string-prefix? "/" o) o - (string-append (getcwd) "/" o))) - (define (sort lst less) - lst) - (define (close-pipe o) 0) - (define (open-pipe* OPEN_READ . commands) - (let ((fake-pipe ".pipe")) - (with-output-to-file fake-pipe - (lambda _ - (let ((status (apply system* (append commands)))) - (set! close-pipe (lambda _ status))))) - (open-input-file fake-pipe))))) - -(define* (PATH-search-path name #:key (default name) warn?) - (or (search-path (string-split (getenv "PATH") #\:) name) - (and (and warn? (format (current-error-port) "warning: not found: ~a\n" name)) - default))) - -;;; Utility -(define (logf port string . rest) - (apply format (cons* port string rest)) - (force-output port) - #t) - -(define (stderr string . rest) - (apply logf (cons* (current-error-port) string rest))) - -(define (stdout string . rest) - (apply logf (cons* (current-output-port) string rest))) - -(define %verbose? #f) - -(define (verbose string . rest) - (if %verbose? (apply stderr (cons string rest)))) - -(define (gulp-pipe command) - (let* ((err (current-error-port)) - (foo (set-current-error-port (open-output-file ".error"))) - (port (open-pipe command "r")) - (output (read-string port)) - (status (close-pipe port)) - (error (with-input-from-file ".error" read-string))) - (when (file-exists? ".error") - (delete-file ".error")) - (set-current-error-port err) - (verbose "command[~a]: ~s => ~a [~a]\n" status command output error) - (if (not (zero? status)) "" - (string-trim-right (string-append output error))))) - -(define (gulp-pipe* . command) - (gulp-pipe (string-join command))) - -(define (tuple< a b) - (cond - ((and (null? a) (null? b)) #t) - ((null? a) (not (null? b))) - ((null? b) #f) - ((and (not (< (car a) (car b))) - (not (< (car b) (car a)))) - (tuple< (cdr a) (cdr b))) - (else (< (car a) (car b))))) - -(define (tuple<= a b) - (or (equal? a b) (tuple< a b))) - -(define (conjoin . predicates) - (lambda (. arguments) - (every (cut apply <> arguments) predicates))) - -(define (char->char from to char) - (if (eq? char from) to char)) - -(define (string-replace-char string from to) - (string-map (cut char->char from to <>) string)) - -(define (string-replace-string string from to) - (cond ((string-contains string from) - => (lambda (i) (string-replace string to i (+ i (string-length from))))) - (else string))) - -(define (string-replace-string/all string from to) - (or (and=> (string-contains string from) - (lambda (i) - (string-append - (substring string 0 i) - to - (string-replace-string/all - (substring string (+ i (string-length from))) from to)))) - string)) - -;;; Configure - -(define-immutable-record-type <dependency> - (make-dependency name version-expected optional? version-option commands file-name data version-found) - dependency? - (name dependency-name) - (version-expected dependency-version-expected) - (optional? dependency-optional?) - (version-option dependency-version-option) - (commands dependency-commands) - (file-name dependency-file-name) - (data dependency-data) - (version-found dependency-version-found)) - -(define* (make-dep name #:key (version '()) optional? (version-option "--version") (commands (list name)) file-name data) - (let* ((env-var (getenv (name->shell-name name))) - (commands (if env-var (cons env-var commands) commands))) - (make-dependency name version optional? version-option commands file-name data #f))) - -(define (find-dep name deps) - (find (compose (cut equal? <> name) dependency-name) deps)) - -(define (file-name name deps) - (and=> (find-dep name deps) dependency-file-name)) - -(define (variable-name dependency) - (and=> - (dependency-name dependency) - name->shell-name)) - -(define (name->shell-name name) - (string-upcase (string-replace-char name #\- #\_))) - -(define (->string o) - (cond ((number? o) (number->string o)) - ((string? o) o) - (else (format #f "~a" o)))) - -(define (version->string version) - (and version (string-join (map ->string version) "."))) - -(define (string->version string) - (let ((split (string-tokenize string - (char-set-adjoin char-set:digit #\.)))) - (and (pair? split) - (let* ((version (sort split (lambda (a b) - (let ((len-a (length (string-split a #\.))) - (len-b (length (string-split b #\.)))) - (cond ((> len-a len-b) #t) - ((< len-a len-b) #f) - (else (> (string-length a) (string-length b)))))))) - (version (car version)) - (version (string-tokenize version - (char-set-complement (char-set #\.))))) - (map string->number version))))) - -(define (check-program-version dependency) - (let ((name (dependency-name dependency)) - (expected (dependency-version-expected dependency)) - (version-option (dependency-version-option dependency)) - (commands (dependency-commands dependency))) - (let loop ((commands commands)) - (if (or (null? commands) - (not (car commands))) dependency - (let ((command (car commands))) - (stdout "checking for ~a~a... " (if (string-index command #\space) name command) - (if (null? expected) "" - (format #f " [~a]" (version->string expected)))) - (let* ((output (gulp-pipe (string-append command " " (if version-option version-option "")))) - (actual (string->version output)) - (pass? (and actual (tuple< expected actual))) - (dependency (set-field dependency (dependency-version-found) actual))) - (stdout "~a ~a\n" (if pass? (if (pair? actual) "" "yes") - (if actual " no, found" "no")) - (or (version->string actual) "")) - (if pass? (let ((file-name (or (PATH-search-path command) - (dependency-file-name dependency)))) - (set-field dependency (dependency-file-name) file-name)) - (loop (cdr commands))))))))) - -(define (check-file dependency) - (stdout "checking for ~a... " (dependency-name dependency)) - (let ((file-name (and (file-exists? (dependency-file-name dependency)) - (dependency-file-name dependency)))) - (stdout "~a\n" (or file-name "")) - (set-field dependency (dependency-file-name) file-name))) - -(define* (check-header-c cc dependency #:optional (check check-preprocess-header-c)) - (let ((name (dependency-name dependency))) - (stderr "checking for ~a..." name) - (let ((result (check cc name))) - (when (file-exists? ".config.c") - (delete-file ".config.c")) - (stderr " ~a\n" (if result "yes" "no")) - (if result (set-field dependency (dependency-file-name) name) - dependency)))) - -(define* (check-compile-c cc dependency #:optional (check check-compile-string-c)) - (let ((name (dependency-name dependency))) - (stderr "checking for ~a..." name) - (let ((result (check cc (dependency-data dependency)))) - (when (file-exists? ".config.c") - (delete-file ".config.c")) - (stderr " ~a\n" (if result "yes" "no")) - (if result (set-field dependency (dependency-file-name) name) - dependency)))) - -(define* (check-link-c cc dependency #:optional (check check-link-string-c)) - (let ((name (dependency-name dependency))) - (stderr "checking for ~a..." name) - (let ((result (check cc (dependency-data dependency)))) - (when (file-exists? ".config.c") - (delete-file ".config.c")) - (stderr " ~a\n" (if result "yes" "no")) - (if result (set-field dependency (dependency-file-name) name) - dependency)))) - -(define (cflags-list) - (let ((cflags (getenv "CFLAGS"))) - (if cflags (list cflags) - '()))) - -(define (ldflags-list) - (let ((ldflags (getenv "LDFLAGS"))) - (if ldflags (list ldflags) - '()))) - -(define (check-preprocess-header-c cc header) - (with-output-to-file ".config.c" - (cut format #t "#include \"~a\"" header)) - (let ((test (lambda _ (apply system* `(,cc "-E" "-o" ".config.E" ,@(cflags-list) ".config.c"))))) - (zero? (if %verbose? (test) - (with-error-to-file "/dev/null" - test))))) - -(define (check-compile-string-c cc string) - (with-output-to-file ".config.c" - (cut display string)) - (let ((test (lambda _ (apply system* `(,cc "-std=gnu99" "-c" "-o" ".config.o" ,@(cflags-list) ".config.c"))))) - (zero? (if %verbose? (test) - (with-error-to-file "/dev/null" - test))))) - -(define (check-link-string-c cc string) - (with-output-to-file ".config.c" - (cut display string)) - (let ((test (lambda _ (apply system* `(,cc "-std=gnu99" "-o" ".config" ,@(cflags-list) ,@(ldflags-list) ".config.c"))))) - (zero? (if %verbose? (test) - (with-error-to-file "/dev/null" - test))))) - -(define (parse-opts args) - (let* ((option-spec - '((build (value #t)) - (host (value #t)) - - (prefix (value #t)) - (program-prefix (value #t)) - (bindir (value #t)) - (datadir (value #t)) - (docdir (value #t)) - (includedir (value #t)) - (libdir (value #t)) - (srcdir (value #t)) - (sysconfdir (value #t)) - - (mes) - (help (single-char #\h)) - (verbose (single-char #\v)) - (with-bootstrap) - (with-cheating) - (with-courage) - (infodir (value #t)) - (mandir (value #t)) - (disable-colors) - (enable-colors) - (disable-silent-rules) - (enable-silent-rules) - (with-system-libc) - - (enable-fast-install) ; Ignored for Guix - (mandir (value #t)) ; Ignored for Debian - (localstatedir (value #t)) ; Ignored for Debian - (libexecdir (value #t)) ; Ignored for Debian - (runstatedir (value #t)) ; Ignored for Debian - (disable-maintainer-mode) ; Ignored for Debian - (disable-dependency-tracking) ; Ignored for Debian - ))) - - (getopt-long args option-spec))) - -(define* (print-help #:optional (port (current-output-port))) - (format port "\ -`configure' configures ~a ~a to adapt to many kinds of systems. - -Usage: ./configure [OPTION]... [VAR=VALUE] - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Options: - -h, --help display this help - --build=BUILD configure for building on BUILD [guessed] - --colors no colorized output - --disable-silent-rules - verbose build output [V=1] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - -v, --verbose be verbose - --with-bootstrap After building mes with CC, build mes with MesCC - --with-courage Assert that even if this platform is unsupported, - you will be courageous and port GNU Mes to it - (see \"Porting GNU Mes\" in the manual.) - --with-cheating cheat using Guile instead of Mes - --with-system-libc use system libc - -Installation directories: - --prefix=DIR install in prefix DIR [~a] - - --bindir=DIR user executables [PREFIX/bin] - --includedir=DIR C header files [PREFIX/include] - --infodir=DIR info documentation [PREFIX/share/info] - --libdir=DIR object code libraries [EPREFIX/lib] - --mandir=DIR man pages [PREFIX/share/man] - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - -Ignored for Guix: - --enable-fast-install - -Ignored for Debian: - --disable-dependency-tracking - --disable-maintainer-mode - --libexecdir=DIR - --localstatedir=DIR - --runstatedir=DIR - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - CPPFLAGS C preprocessor flags - LDFLAGS C linker flags - GUILE guile command - GUILD guild command - GUILE_LOAD_PATH guile load path; where to find Nyacc - MES_FOR_BUILD build system MES [can be mes or guile] -" PACKAGE VERSION (getenv "prefix"))) - -(define (main args) - (let* ((options (parse-opts args)) - (build-type (option-ref options 'build %host-type)) - (host-type (option-ref options 'host build-type)) - - (prefix "/usr/local") - (prefix (option-ref options 'prefix prefix)) - (program-prefix (option-ref options 'program-prefix "")) - (program-suffix (option-ref options 'program-suffix "")) - (infodir (option-ref options 'infodir "${prefix}/share/info")) - (mandir (option-ref options 'mandir "${prefix}/share/man")) - (sysconfdir (option-ref options 'sysconfdir "${prefix}/etc")) - - (bindir (option-ref options 'bindir "${prefix}/bin")) - (datadir (option-ref options 'datadir "${prefix}/share")) - (docdir (option-ref options 'docdir "${datadir}/doc/mes")) - (includedir (option-ref options 'includedir "${prefix}/include")) - (libdir (option-ref options 'libdir "${prefix}/lib")) - (pkgdatadir (string-append datadir "/mes")) - (guile-load-path (if (and (pair? %load-path) (equal? (car %load-path) ".")) (cdr %load-path) - %load-path)) - (guile-effective-version (effective-version)) - (guile-site-dir (if (equal? prefix ".") (canonicalize-path ".") - (string-append prefix "/share/guile/site/" guile-effective-version))) - (guile-site-ccache-dir (if (equal? prefix ".") (canonicalize-path ".") - (string-append prefix "/lib/guile/" guile-effective-version "/site-ccache"))) - - (srcdir (dirname (car (command-line)))) - (srcdest (if (equal? srcdir ".") "" - (string-append srcdir "/"))) - (abs-top-srcdir (canonicalize-path srcdir)) - (abs-top-builddir (canonicalize-path (getcwd))) - (top-builddir (if (equal? srcdir ".") "." - abs-top-builddir)) - - (with-bootstrap? (option-ref options 'with-bootstrap #f)) - (with-cheating? (option-ref options 'with-cheating #f)) - (with-courage? (option-ref options 'with-courage #f)) - (disable-colors? (option-ref options 'disable-colors #f)) - (enable-colors? (option-ref options 'enable-colors #f)) - (disable-silent-rules? (option-ref options 'disable-silent-rules #f)) - (enable-silent-rules? (option-ref options 'enable-silent-rules #f)) - (with-system-libc? (option-ref options 'with-system-libc #f)) - (vars (filter (cut string-index <> #\=) (option-ref options '() '()))) - (help? (option-ref options 'help #f)) - (mes? (option-ref options 'mes #f))) - (when help? - (print-help) - (exit 0)) - (set! %verbose? (option-ref options 'verbose #f)) - (when %verbose? - (stderr "configure args=~s\n" args)) - (for-each (lambda (v) (apply setenv (string-split v #\=))) vars) - (let* ((cross? (not (equal? host-type build-type))) - (gcc (if cross? (string-append host-type "-" "gcc") "gcc")) - (tcc (if cross? (string-append host-type "-" "tcc") "tcc")) - (mescc (if cross? (string-append host-type "-" "mescc") "mescc")) - (deps (fold (lambda (program results) - (cons (check-program-version program) results)) - '() - (list (make-dep "hex2") - (make-dep "M1") - (make-dep "blood-elf") - (make-dep "diff" #:optional? #t) - (make-dep "guile" #:version '(2 0) #:commands '("guile-2.2" "guile-2.0" "guile-2" "guile") #:optional? #t) - (make-dep "mes" #:version '(0 20) #:optional? #t) - (make-dep "guix" #:version '() #:optional? #t) - (make-dep "ar" #:version '(2 10) #:optional? #t) - (make-dep "sh" #:optional? #t) - (make-dep "bash" #:version '(2 0) #:optional? #t) - (make-dep "guild" #:version '(2 0) #:commands '("guild" "guile-tools" "true")) - (make-dep "CC" #:commands `(,(getenv "CC")) #:optional? #t) - (make-dep "CC-v" #:commands `(,(getenv "CC")) #:optional? #t #:version-option "-v") - (make-dep "cc" #:commands '("cc") #:optional? #t) - (make-dep "gcc" #:commands `(,gcc "gcc") #:optional? #t) - (make-dep "mescc" #:commands `(,mescc "mescc") #:optional? #t) - (make-dep "tcc" #:commands `(,tcc "tcc") #:optional? #t #:version-option "-v") - (make-dep "cc-v" #:commands '("cc") #:optional? #t #:version-option "-v") - (make-dep "make" #:optional? #t #:commands '("gmake" "make")) - (make-dep "makeinfo" #:version '(6) #:optional? #t) - (make-dep "dot" #:version-option "-V" #:optional? #t) - (make-dep "help2man" #:version '(1 47) #:optional? #t) - (make-dep "perl" #:version '(5) #:optional? #t)))) - (guile (file-name "guile" deps)) - (deps (if guile (cons (check-program-version (make-dep "nyacc" #:version '(0 99 0) #:commands (list (string-append guile " -c '(use-modules (nyacc lalr)) (display *nyacc-version*)'")) #:file-name #t #:version-option #f)) - deps) - deps)) - (guile (or guile "guile")) - (cc (or (file-name "CC" deps) - (file-name "CC-v" deps) - (file-name "tcc" deps) - (file-name "gcc" deps) - (file-name "cc" deps) - (file-name "cc-v" deps) - (file-name "mescc" deps))) - (deps (if cc - (cons* (check-header-c cc (make-dep "limits.h")) - (check-header-c cc (make-dep "stdio.h" #:optional? #t)) - deps) - deps)) - (missing (filter (conjoin (negate dependency-file-name) - (negate dependency-optional?)) deps)) - (deps (if cc - (cons (check-compile-c cc (make-dep "cc is GNU C" #:data "#if !defined (__GNUC__) -#error no gnuc -#endif -")) - deps) - deps)) - (gcc? (file-name "cc is GNU C" deps)) - (deps (if cc - (cons (check-compile-c cc (make-dep "cc is Mes C" #:data "#if !defined (__MESC__) -#error no mesc -#endif -")) - deps) - deps)) - (mesc? (file-name "cc is MES C" deps)) - (deps (if cc - (cons (check-compile-c cc (make-dep "cc is Tiny C" #:data "#if !defined (__TINYC__) -#error no tinycc -#endif -")) - deps) - deps)) - (tcc? (file-name "cc is Tiny C" deps)) - (deps (if cc - (cons (check-link-c cc (make-dep "whether cc can create executables" #:data "int main () {return 0;}")) - deps) - deps)) - (system-libc? (and with-system-libc? (file-name "if cc can create executables" deps))) - (host-type (or (and cc (let ((dump (gulp-pipe* cc "-dumpmachine"))) - (and (not (string-null? dump)) dump))) host-type)) - (host-type-list (string-split host-type #\-)) - (mes-cpu (car host-type-list)) - (mes-cpu (cond ((member mes-cpu '("i386" "i486" "i586" "i686")) "x86") - ((member mes-cpu '("arm" "armv4" "armv7l")) "arm") - (else mes-cpu))) - (mes-bits (if (member mes-cpu '("x86_64")) "64" - "32")) - (mes-libc (if system-libc? "system" "mes")) - (mes-kernel (car (filter - (compose not - (cut member <> '("pc" "portbld" "unknown"))) - (cdr host-type-list)))) - (mes-kernel (if (string-prefix? "freebsd" mes-kernel) "freebsd" mes-kernel)) - (mes-compiler (cond (gcc? "gcc") (tcc? "gcc") (else "mescc"))) - (mes-system (string-join (list mes-cpu mes-kernel "mes") "-")) - (bash (or (and (file-exists? "/bin/bash") "/bin/bash") - (file-name "bash" deps) - "")) - (shell (or (and (file-exists? "/bin/bash") "/bin/bash") - (file-name "bash" deps) - (and (file-exists? "/bin/sh") "/bin/sh") - (file-name "sh" deps) - "sh")) - (hex2 (file-name "hex2" deps)) - (numbered-arch? (begin - (stdout "checking for stage0 architecture flag... ") - (let ((numbered? (and hex2 (string-contains (gulp-pipe (string-append hex2 " --help 2>&1" )) "--Architecture 12345")))) - (stdout (if numbered? "numbered\n" "named\n")) - numbered?)))) - - (define* (substitute file-name pairs - #:key (target (if (string-suffix? ".in" file-name) - (string-drop-right file-name 3) file-name))) - (system* "mkdir" "-p" (dirname target)) - (with-output-to-file target - (lambda _ - (let ((in (open-input-file file-name))) - (let loop ((line (read-line in 'concat))) - (when (not (eof-object? line)) - (display (fold (lambda (o result) - (string-replace-string/all result (car o) (cdr o))) - line pairs)) - (loop (read-line in 'concat)))))))) - - (when (and (not (member mes-system '("arm-linux-mes" - "x86-linux-mes" - "x86_64-linux-mes"))) - (not with-courage?)) - (stderr "platform not supported: ~a -See \"Porting GNU Mes\" in the manual, or try --with-courage\n" mes-system) - (exit 1)) - (when (pair? missing) - (stderr "\nMissing dependencies: ~a\n" (string-join (map dependency-name missing))) - (exit 1)) - (let ((pairs `(("@PACKAGE@" . ,PACKAGE) - ("@PACKAGE_NAME@" . ,PACKAGE-NAME) - ("@PACKAGE_BUGREPORT@" . ,PACKAGE-BUGREPORT) - ("@VERSION@" . ,VERSION) - - ("@build@" . ,build-type) - ("@host@" . ,host-type) - - ("@bootstrap@" . ,(if with-bootstrap? "true" "false")) - ("@courageous@" . ,(if with-courage? "true" "false")) - ("@compiler@" . ,mes-compiler) - ("@mes_bits@" . ,mes-bits) - ("@mes_kernel@" . ,mes-kernel) - ("@mes_cpu@" . ,mes-cpu) - ("@mes_libc@" . ,mes-libc) - ("@mes_system@" . ,mes-system) - - ("@abs_top_srcdir@" . ,abs-top-srcdir) - ("@abs_top_builddir@" . ,abs-top-builddir) - ("@top_builddir@" . ,top-builddir) - - ("@srcdest@" . ,srcdest) - ("@srcdir@" . ,srcdir) - - ("@prefix@" . ,prefix) - ("@program_prefix@" . ,program-prefix) - ("@bindir@" . ,bindir) - ("@datadir@" . ,datadir) - ("@pkgdatadir@" . ,pkgdatadir) - ("@docdir@" . ,docdir) - ("@guile_site_ccache_dir@" . ,guile-site-ccache-dir) - ("@guile_site_dir@" . ,guile-site-dir) - ("@infodir@" . ,infodir) - ("@includedir@" . ,includedir) - ("@libdir@" . ,libdir) - ("@mandir@" . ,mandir) - ("@sysconfdir@" . ,sysconfdir) - - ("@colors@" . ,(if disable-colors? "no" "yes")) - ("@V@" . ,(if disable-silent-rules? "1" "0")) - - ("@AR@" . ,(or (file-name "ar" deps) "")) - ("@BASH@" . ,bash) - ("@CC@" . ,cc) - ("@DIFF@" . ,(or (file-name "diff" deps) (string-append abs-top-builddir "/pre-inst-env diff.scm"))) - ("@DOT@" . ,(or (file-name "dot" deps) "")) - ("@GIT@" . ,(or (file-name "git" deps) "")) - ("@GUILE@" . ,guile) - ("@GUILE_EFFECTIVE_VERSION@" . ,(effective-version)) - ("@GUILE_LOAD_PATH@" . ,(string-join guile-load-path ":")) - ("@GUIX@" . ,(or (file-name "guix" deps) "")) - ("@HELP2MAN@" . ,(or (file-name "help2man" deps) "")) - ("@MAKEINFO@" . ,(or (file-name "makeinfo" deps) "")) - ("@MES_FOR_BUILD@" . ,(or (file-name "mes" deps) - guile)) - ("@PERL@" . ,(or (file-name "perl" deps) "")) - ("#SCHEME=\"@SCHEME@\"" . ,(if with-cheating? (string-append "\nSCHEME=\"" guile "\"") "")) - ("@SCHEME@" . ,(if with-cheating? guile "")) - ("@SHELL@" . ,shell) - - ("@CFLAGS@" . ,(or (getenv "CFLAGS") "-static -g")) - ("@CPPFLAGS@" . ,(or (getenv "CPPFLAGS") "")) - ("@LDFLAGS@" . ,(or (getenv "LDFLAGS") "-static -g")) - ("@HEX2FLAGS@" . ,(or (getenv "HEX2FLAGS") "")) - ("@M1FLAGS@" . ,(or (getenv "M1FLAGS") "")) - ("@numbered_arch@" . ,(if numbered-arch? "true" "false")) - - ,@(map - (lambda (o) - (cons (string-append "@" (variable-name o) "@") (or (format #f "~a" (dependency-file-name o)) ""))) - deps)))) - - (unless cc - (format (current-error-port) "must supply a C compiler") - (exit 2)) - (for-each (lambda (o) - (let* ((src (string-append srcdest o)) - (target (string-drop-right o 3)) - (target (if (not (string-prefix? "build-aux/" target)) target - (string-drop target (string-length "build-aux/"))))) - (substitute src pairs #:target target))) - '( - "build-aux/GNUmakefile.in" - "build-aux/config.sh.in" - "build-aux/build.sh.in" - "build-aux/check.sh.in" - "build-aux/install.sh.in" - "build-aux/pre-inst-env.in" - "build-aux/uninstall.sh.in" - "scripts/mesar.in" - "scripts/mescc.scm.in" - "scripts/mescc.in" - )) - (chmod "pre-inst-env" #o755) - (chmod "scripts/mesar" #o755) - (chmod "scripts/mescc" #o755) - (chmod "scripts/mescc.scm" #o755) - (chmod "build.sh" #o755) - (chmod "check.sh" #o755) - (chmod "install.sh" #o755) - (chmod "uninstall.sh" #o755) - - (system* "mkdir" "-p" "include/mes") - (let ((pkgdatadir (gulp-pipe* "sh" "-c" (string-append "prefix=" prefix - ";datadir=" datadir - ";echo ${datadir}/mes")))) - (with-output-to-file "include/mes/config.h" - (lambda _ - (if system-libc? - (display "#define SYSTEM_LIBC 1 -") - (display "#undef SYSTEM_LIBC -")) - (display (string-append " -#define MES_VERSION \"" VERSION "\" -"))))) - (substitute (string-append srcdest "build-aux/config.make.in") pairs #:target ".config.make")) - - (let ((make (and=> (file-name "make" deps) basename))) - (display (string-append " -GNU Mes is configured for - compiler: " mes-compiler " - cpu: " mes-cpu " - bits: " mes-bits " - libc: " mes-libc " - kernel: " mes-kernel " - system: " mes-system " - tools: " (if numbered-arch? "numbered" "named") " arch - bootstrap: " (if with-bootstrap? "yes" "no") " - courageous: " (if with-courage? "yes" "no") " - -Run: - " (or make "./build.sh") " to build mes - " (or make "./build.sh") " help for help on other targets\n")))))) diff --git a/sysa/mes-0.22/configure.sh b/sysa/mes-0.22/configure.sh deleted file mode 100755 index 62a5f25d..00000000 --- a/sysa/mes-0.22/configure.sh +++ /dev/null @@ -1,280 +0,0 @@ -#! /bin/sh - -# GNU Mes --- Maxwell Equations of Software -# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -# -# This file is part of GNU Mes. -# -# GNU Mes is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or (at -# your option) any later version. -# -# GNU Mes is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Mes. If not, see <http://www.gnu.org/licenses/>. - -set -e - -VERSION=0.22 -srcdir=${srcdir-$(dirname $0)} -srcdest= -if test "$srcdir" != "."; then - srcdest=$srcdir/ -fi -. ${srcdest}build-aux/trace.sh - -# parse arguments -while [ $# -gt 0 ]; do - case $1 in - (--with-courage) - courageous=true - ;; - (--with-system-libc) - mes_libc=system - ;; - (--build=*) - build=${1#--build=} - host=${host-$build} - ;; - (--host=*) - host=${1#--host=} - ;; - (--prefix=*) - prefix=${1#--prefix=} - ;; - (--program-prefix=*) - program_prefix=${1#--program-prefix=} - ;; - esac - shift -done - -prefix=${prefix-/usr/local} -mes_libc=${mes_libc-mes} -courageous=${courageous-false} - -BASH=${BASH-$(command -v bash || command -v sh)} -BLOOD_ELF=${BLOOD_ELF-$(command -v blood-elf)} -CC=${CC-$(command -v gcc)} || true -CFLAGS=${CFLAGS-} -CPPFLAGS=${CPPFLAGS-} -DIFF=${DIFF-$(command -v diff || echo $PWD/pre-inst-env diff.scm)} -GUILD=${GUILD-$(command -v guild)} || true -GUILE_TOOLS=${GUILE_TOOLS-$(command -v guile-tools)} || true -if test ! "$GUILD"; then - if test "$GUILE_TOOLS"; then - GUILD=$GUILE_TOOLS - else - GUILD=true - fi -fi -GUILE=${GUILE-$(command -v guile)} || true -HEX2=${HEX2-$(command -v hex2)} -LDPFLAGS=${LDFLAGS-} -M1=${M1-$(command -v M1)} -MES_FOR_BUILD=${MES_FOR_BUILD-$(command -v mes || command -v guile || echo mes)} -GIT=${GIT-$(command -v git)} || true -PERL=${PERL-$(command -v perl)} || true -SHELL=${BASH-$SHELL} - -if test "$srcdir" = .; then - top_builddir=. -else - srcdest=${srcdest} - top_builddir=$PWD -fi -abs_top_srcdir=${abs_top_srcdir-$(cd ${srcdir} && pwd)} -abs_top_builddir=$PWD - -if test -z "$GUILE" -o "$GUILE" = true; then - GUILE_EFFECTIVE_VERSION=${GUILE_EFFECTIVE_VERSION-2.2} -else - GUILE_EFFECTIVE_VERSION=${GUILE_EFFECTIVE_VERSION-$(guile -c '(display (effective-version))')} -fi - -numbered_arch=false -mes_tools=named -if ( $HEX2 --help 2>&1 ) | grep -q "\-\-Architecture 12345"; then - numbered_arch=true - mes_tools=numbered -fi - -bindir=$(eval echo ${bindir-$prefix/bin}) -datadir=$(eval echo ${datadir-$prefix/share}) -docdir=$(eval echo ${docdir-$datadir/doc/mes}) -infodir=$(eval echo ${infodir-$datadir/info}) -includedir=$(eval echo ${includedir-$prefix/include}) -libdir=$(eval echo ${libdir-$prefix/lib}) -pkgdatadir=$(eval echo ${pkgdatadir-$datadir/mes}) -mandir=$(eval echo ${mandir-$datadir/man}) -guile_site_dir=$(eval echo ${guile_site_dir-$prefix/share/guile/site/$GUILE_EFFECTIVE_VERSION}) -guile_site_ccache_dir=$(eval echo ${guile_site_ccache_dir-$prefix/lib/guile/$GUILE_EFFECTIVE_VERSION/site-ccache}) - -subst () { - echo "creating $2" - sed \ - -e s,"@PACKAGE@,$PACKAGE,"\ - -e s,"@PACKAGE_NAME@,$PACKAGE_NAME,"\ - -e s,"@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,"\ - -e s,"@VERSION@,$VERSION,"\ - -e s,"@bootstrap@,true,"\ - -e s,"@build@,$build,"\ - -e s,"@host@,$host,"\ - -e s,"@compiler@,$compiler,"\ - -e s,"@courageous@,$courageous,"\ - -e s,"@mes_bits@,$mes_bits,"\ - -e s,"@mes_kernel@,$mes_kernel,"\ - -e s,"@mes_cpu@,$mes_cpu,"\ - -e s,"@mes_libc@,$mes_libc,"\ - -e s,"@mes_system@,$mes_system,"\ - -e s,"@abs_top_srcdir@,$abs_top_srcdir,"\ - -e s,"@abs_top_builddir@,$abs_top_builddir,"\ - -e s,"@top_builddir@,$top_builddir,"\ - -e s,"@srcdest@,$srcdest,"\ - -e s,"@srcdir@,$srcdir,"\ - -e s,"@prefix@,$prefix,"\ - -e s,"@program_prefix@,$program_prefix,"\ - -e s,"@bindir@,$bindir,"\ - -e s,"@datadir@,$datadir,"\ - -e s,"@docdir@,$docdir,"\ - -e s,"@guile_site_dir@,$guile_site_dir,"\ - -e s,"@guile_site_ccache_dir@,$guile_site_ccache_dir,"\ - -e s,"@infodir@,$infodir,"\ - -e s,"@includedir@,$includedir,"\ - -e s,"@libdir@,$libdir,"\ - -e s,"@mandir@,$mandir,"\ - -e s,"@pkgdatadir@,$pkgdatadir,"\ - -e s,"@sysconfdir@,$sysconfdir,"\ - -e s,"@GUILE_EFFECTIVE_VERSION@,$GUILE_EFFECTIVE_VERSION,"\ - -e s,"@GUILE_LOAD_PATH@,$GUILE_LOAD_PATH,"\ - -e s,"@V@,$V,"\ - -e s,"@AR@,$AR,"\ - -e s,"@BASH@,$BASH,"\ - -e s,"@BLOOD_ELF@,$BLOOD_ELF,"\ - -e s,"@CC@,$CC,"\ - -e s,"@DIFF@,$DIFF,"\ - -e s,"@GIT@,$GIT,"\ - -e s,"@GUILD@,$GUILD,"\ - -e s,"@GUILE@,$GUILE,"\ - -e s,"@PERL@,$PERL,"\ - -e s,"@CFLAGS@,$CFLAGS,"\ - -e s,"@HEX2@,$HEX2,"\ - -e s,"@HEX2FLAGS@,$HEX2FLAGS,"\ - -e s,"@M1@,$M1,"\ - -e s,"@M1FLAGS@,$M1FLAGS,"\ - -e s,"@MES_FOR_BUILD@,$MES_FOR_BUILD,"\ - -e s,"@numbered_arch@,$numbered_arch,"\ - -e s,"@SHELL@,$SHELL,"\ - $1 > $2 -} - -host=${host-$($CC -dumpmachine 2>/dev/null)} -if test -z "$host$host_type"; then - mes_cpu=${arch-$(get_machine || uname -m)} -else - mes_cpu=${host%%-*} -fi -if test "$mes_cpu" = i386\ - || test "$mes_cpu" = i486\ - || test "$mes_cpu" = i586\ - || test "$mes_cpu" = i686; then - mes_cpu=x86 -fi -if test "$mes_cpu" = armv4\ - || test "$arch" = armv7l; then - mes_cpu=arm -fi -if test "$mes_cpu" = amd64; then - mes_cpu=x86_64 -fi - -case "$host" in - *linux-gnu|*linux) - mes_kernel=linux;; - *gnu) - mes_kernel=gnu;; - *freebsd*) - mes_kernel=frreebsd;; - *) - mes_kernel=linux;; -esac - -case "$mes_cpu" in - x86_64) - mes_bits=64;; - *) - mes_bits=32;; -esac -# -if $CC --version | grep gcc; then - compiler=gcc -elif $CC --version | grep tcc; then - compiler=gcc -else - compiler=mescc - AR=${AR-$PWD/scripts/mesar} -fi - -AR=${AR-$(command -v ar)} || true - -mes_system=$mes_cpu-$mes_kernel-mes - -mkdir -p scripts -subst ${srcdest}build-aux/GNUmakefile.in GNUmakefile -subst ${srcdest}build-aux/config.sh.in config.sh -subst ${srcdest}build-aux/bootstrap.sh.in bootstrap.sh -chmod +x bootstrap.sh -subst ${srcdest}build-aux/build.sh.in build.sh -chmod +x build.sh -subst ${srcdest}build-aux/check.sh.in check.sh -chmod +x check.sh -subst ${srcdest}build-aux/install.sh.in install.sh -chmod +x install.sh -subst ${srcdest}build-aux/pre-inst-env.in pre-inst-env -chmod +x pre-inst-env -subst ${srcdest}scripts/mesar.in scripts/mesar -chmod +x scripts/mesar -subst ${srcdest}scripts/mescc.scm.in scripts/mescc.scm -chmod +x scripts/mescc.scm -subst ${srcdest}scripts/mescc.in scripts/mescc -chmod +x scripts/mescc -subst ${srcdest}build-aux/uninstall.sh.in uninstall.sh -chmod +x uninstall.sh - -mkdir -p include/mes -rm -f include/mes/config.h -if test $mes_libc = system; then - cat >> include/mes/config.h <<EOF -#define SYSTEM_LIBC 1 -EOF -else - cat >> include/mes/config.h <<EOF -#undef SYSTEM_LIBC -EOF -fi -cat >> include/mes/config.h <<EOF -#define MES_VERSION "$VERSION" -EOF - -cat <<EOF -GNU Mes is configured for - compiler: $compiler - cpu: $mes_cpu - bits: $mes_bits - libc: $mes_libc - kernel: $mes_kernel - system: $mes_system - tools: $mes_tools arch - courageous: $courageous - bootstrap: yes - -Run: - sh bootstrap.sh to bootstrap build mes - sh check.sh to check mes - sh install.sh to install mes -EOF diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE b/sysa/mes-0.22/doc/announce/ANNOUNCE deleted file mode 100644 index e73075b4..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE +++ /dev/null @@ -1,45 +0,0 @@ -Subject: on bootstrapping: introducing Mes -Date: Sun, 19 Jun 2016 13:08:02 +0200 - -Hi, - -I have a minimal LISP-1.5-resembling interpreter in C that now can -also interpret itself - - https://gitlab.com/janneke/mes - -It was inspired by the seemingly often ignored bootstrapping question -made so painfully visible by GuixSD and by OriansJ with their self -hosting hex assembler project. - -As a next step after a hex assembler I was thinking of getting Scheme up -and running and use that to create a tiny C compiler, probably using -PEG. For that I think we need define-syntax, which I had a peek at and -still scares the all-sorts-of-things out of me :-) - -I searched for minimal Lisp/Scheme to get that going and found an -article called the Maxwell Equations of Software 1) with a pointer to -the 1962 LISP 1.5 paper by John McCarthy 2). - -First I `implemented' Mes/LISP-1.5: the bottom half of page 13 and the -necessary helper procedures defined on pages 8-12 using Guile, removing -all but the primitives needed to run LISP-1.5/Mes (I think): car, cdr, -cond, cons, define, eq?, '()/nil, null?, pair? and quote. I cheated -with read, and with display and newline for debugging. - -Then I translated the program into C and got rid of read by using -getchar/ungetchar. - -It's been great fun and now I'm kind of stuck a bit at the point of -implementing macros. I have a simplistic version in C but want to -remove that again --I like the idea of having the absolute minimal LISP -interpreter in C-- and only introduce macros after having bootstrapped -into the LISP/Mes domain. - -Greetings, -Jan - -1) http://www.michaelnielsen.org/ddi/lisp-as-the-maxwells-equations-of-software/ -2) -http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf - diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.10 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.10 deleted file mode 100644 index 29a19914..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.10 +++ /dev/null @@ -1,96 +0,0 @@ -Subject: Mes 0.10 released - -I am pleased to announce the release of Mes 0.10, representing 82 -commits over 6 weeks. Mescc now compiles a bootstrappable-modified -TinyCC into a mes-tcc that in turn can successfully compile a trivial -C program. - -* About - - Mes[0] aims to create full source bootstrapping for GuixSD[1] as - part of the bootstrappable builds[2] project. - - It currently consists of a mutual self-hosting [close to Guile-] - Scheme interpreter prototype in C and a Nyacc-based C compiler in - [Guile] Scheme. This C prototype will be rewritten in stage0[3] - M1 assembly (or possibly stage2 slow-LISP, or ...). - - The Scheme interpreter prototype (mes.c) has a Garbage Collector, - a library of loadable Scheme modules-- notably Dominique Boucher's - LALR[4], Pre-R6RS portable syntax-case[5] with R7RS ellipsis, Matt - Wette's Nyacc[6], Guile's PEG[7] --and test suite just barely - enough to support a simple REPL (repl.mes) and simple C-compiler - (mescc.mes). - - The simple C compiler can compile a modified TinyCC[8] that is - starting to work! A gcc-compiled tcc is known[9] to compile GCC. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] - -- John McCarthy page 13, GNU Guix's source/binary packaging - transparency and Jeremiah Orians's stage0 ~300 byte self-hosting - hex assembler. - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.10 -O mes-0.10.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - -* Changes in 0.10 since 0.9 - ** Core - *** 2 new functions - logand, lognot. - ** Mescc - *** Mes now includes M1 sources for full source bootstrapping up to tcc. - *** Mescc now depends on Nyacc 0.81.0. - *** Mescc now compiles a mes-tcc that compiles a trivial C to a running a.out. - *** Mescc now supports several (as used my tinycc) struct by value assignments. - *** Mescc now has _start in a separate crt1.c. - *** Mescc now supports initializer arithmetic. - *** Mescc now supports arrays of struct of arbitrary size. - *** Mescc now supports pointer arithmetic. - *** Mescc now defines __i386__, __linux__. - *** Mescc now supports --*p, ++*p. - *** Mescc now supports int foo[bar] = {baz,...}. - *** Mescc now supports \x00 in strings in M1. - *** Mescc now supports complex enum expressions. Thanks, rain1! - *** Mescc now supports short. - *** Mescc now supports foo.bar = foo.baz = bla. - *** Mescc now supports foo = bar < baz and comparison permutations. - *** Mescc now supports (anonymous) structs in unions. - *** Mescc now writes M1 strings if possible. - **** 2 improved mlibc functions - malloc, realloc. - **** 13 new mlibc functions - fclose, fgetc, fprintf, fwrite, memcpy, memmove, memset, snprintf, strcat, - strchr, strrchr, strtoull, vnsprintf. - **** 15 new tinycc-support tests - 76-pointer-arithmetic.c, 77-pointer-assign.c, 78-union-struct.c, - 79-int-array.c, 7a-struct-char-array.c, 7b-struct-int-array.c, - 7c-dynarray.c, 7d-cast-char.c, 7e-struct-array-access.c, - 7f-struct-pointer-arithmetic.c, 7g-struct-byte-word-field.c, - 7h-struct-assign.c, 7i-struct-struct.c, 7j-strtoull.c, - 7k-for-each-elem.c. - ** Noteworthy bug fixes - *** Mescc has many fixes for foo.bar[baz], foo[bar].baz with ./-> permutations. - *** Many bugs and limitations in mescc have been fixed and removed. - -Greetings, -janneke - -[0] https://gitlab.com/janneke/mes -[1] https://www.gnu.org/software/guix -[2] http://bootstrappable.org -[3] https://github.com/oriansj/stage0 -[4] https://github.com/schemeway/lalr-scm -[5] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[6] https://www.nongnu.org/nyacc/ -[7] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html -[8] https://gitlab.com/janneke/tinycc -[9] https://lists.gnu.org/archive/html/tinycc-devel/2017-05/msg00103.html -[10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.11 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.11 deleted file mode 100644 index 147ab106..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.11 +++ /dev/null @@ -1,70 +0,0 @@ -Subject: Mes 0.11 released - -I am pleased to announce the release of Mes 0.11, representing 16 -commits over 10 weeks. MesCC now compiles a less heavily patched -TinyCC into a mes-tcc that in turn passes 41/69 of mescc's C tests. - -When mes-tcc passes all 69 tests, this almost-full-source-bootstrapped -version of TinyCC should be able to compile itself. An unpatched, GNU -Gcc-compiled tcc is known to compile GNU Gcc. - -* About - - Mes[0] aims to create full source bootstrapping for GuixSD[1] as - part of the bootstrappable builds[2] project. - - It currently consists of a mutual self-hosting [close to Guile-] - Scheme interpreter prototype in C and a Nyacc-based C compiler in - [Guile] Scheme. This C prototype will be rewritten in stage0[3] - M1 assembly (or compiled by M2-Planet or stage2 slow-LISP, or ...). - - The Scheme interpreter prototype (mes.c) has a Garbage Collector, - a library of loadable Scheme modules-- notably Dominique Boucher's - LALR[4], Pre-R6RS portable syntax-case[5] with R7RS ellipsis, Matt - Wette's Nyacc[6], Guile's PEG[7] --and test suite just barely - enough to support a simple REPL (repl.mes) and simple C-compiler - MesCC (mescc.mes). - - MesCC can compile a modified TinyCC[8] that is close to being - self-hosting. A GNU Gcc-compiled tcc is known[9] to compile GCC. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] - -- John McCarthy page 13, GNU Guix's source/binary packaging - transparency and Jeremiah Orians's stage0 ~300 byte self-hosting - hex assembler. - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.11 -O mes-0.11.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - -* Changes in 0.11 since 0.10 - ** MesCC - *** MesCC now compiles a mes-tcc that passes 41/69 of mescc's C tests. - *** MesCC's libc can now be compiled with tcc (syscall support: write). - *** MesCC now compiles a less-patched tcc: -214/+458 lines [WAS: -333/+747]. - *** MesCC now supports empty for. - *** MesCC has been greatly refactored, 500/3000 lines have been removed. - *** MesCC now supports complex [struct] by value assign foo.bar, foo->bar, foo[bar]. - *** MesCC now depends on Nyacc 0.82.4. - -Greetings, -janneke - -[0] https://gitlab.com/janneke/mes -[1] https://www.gnu.org/software/guix -[2] http://bootstrappable.org -[3] https://github.com/oriansj/stage0 -[4] https://github.com/schemeway/lalr-scm -[5] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[6] https://www.nongnu.org/nyacc/ -[7] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html -[8] https://gitlab.com/janneke/tinycc -[9] https://lists.gnu.org/archive/html/tinycc-devel/2017-05/msg00103.html -[10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.12 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.12 deleted file mode 100644 index f4566bbf..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.12 +++ /dev/null @@ -1,97 +0,0 @@ -Subject: Mes 0.12 released - -I am pleased to announce the release of Mes 0.12, representing 120 -commits over 20 weeks. MesCC is prototyped running on Guile and can -now run on Mes. Performance of Mes running MesCC has been improved by -a factor of 100; mes.c (~3000 LOC) now compiles in ~4min. Many fixes -and enhancements make that now also TinyCC parses (~1.5h) and compiles -(~20min) with Mes+MesCC (Guile+MesCC takes ~2min). - -Special thanks go to Ricardo Wurmus for sharing the recursive macro -expand perspective and starting work on that, to Han-Wen Nienhuys for -his sharp `Ah, so you skipped SICP chapter 3' remark and to rain1 for -their continuous help on #bootstrapping and their `let's only expand -global variables' insight. - -* About - - Mes[0] aims to create full source bootstrapping for GuixSD[1] as - part of the bootstrappable builds[2] project. - - It currently consists of a mutual self-hosting [close to Guile-] - Scheme interpreter prototype in C and a Nyacc-based C compiler in - [Guile] Scheme. This C prototype will be simplified to be - transpiled by M2-Planet[3]. - - The Scheme interpreter prototype (mes.c) has a Garbage Collector, - a library of loadable Scheme modules-- notably Dominique Boucher's - LALR[4], pre-R6RS portable syntax-case[5] with R7RS ellipsis, Matt - Wette's Nyacc[6], Guile's PEG[7] --and test suite just barely - enough to support a simple REPL (repl.mes) and simple C-compiler - MesCC (mescc.mes). - - MesCC can compile a modified TinyCC[8] that is close to being - self-hosting. A GNU Gcc-compiled tcc is known[9] to compile GCC. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] - -- John McCarthy page 13, GNU Guix's source/binary packaging - transparency and Jeremiah Orians's stage0[11] ~300 byte self-hosting - hex assembler. - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.12 -O mes-0.12.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - -* Changes in 0.12 since 0.11 - ** Core - *** Mes can now run Nyacc (0.80.42) to compile itself in ~4min (~3000 LOC). - *** Mes now recursively expands global variables per top level statement. - *** Mes now recursively expands macros per top level statement. - *** Mes now boots from MES_BOOT (default: module/mes/boot-0.scm). - *** Mes now has a full Scheme reader in C again. - This gives a 10x-20x performance improvement and increases the - bootstrap footprint by 160 LOC. - *** Mes reader now supports older abbreviated character forms - #\bel, #\bs, #\ht and #\vt. - *** 3 new functions - equal2?, memq, core:write. - ** Language - *** Mes now has an incremental Scheme semantics test suite with 71 small tests. - *** Variable names can now have ticks. - *** Mes now evaluates expresions of COND only once. - *** srfi-9 records have been reimplemented. - *** #\page is now whitespace. - *** #<eof> is no longer a character. - *** 2 new macros - define-macro*, with-fluids. - *** 9 new functions - dirname, last, reverse-list->string, setenv, string-drop-right, - string-fold, string-fold-right, string-null?, write. - ** MesCC - **** 9 new functions - chmod, getopt_long, ferror, itoab, longjmp, qsort, setenv, setjmp, strtol. - **** 2 new header files - endian.h, sys/signal.h. - -Greetings, -janneke - -[0] https://gitlab.com/janneke/mes -[1] https://www.gnu.org/software/guix -[2] http://bootstrappable.org -[3] https://github.com/oriansj/m2-planet -[4] https://github.com/schemeway/lalr-scm -[5] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[6] https://www.nongnu.org/nyacc/ -[7] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html -[8] https://gitlab.com/janneke/tinycc -[9] https://lists.gnu.org/archive/html/tinycc-devel/2017-05/msg00103.html -[10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[11] https://github.com/oriansj/stage0 diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.13 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.13 deleted file mode 100644 index ce016584..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.13 +++ /dev/null @@ -1,81 +0,0 @@ -Subject: Mes 0.13 released - -I am pleased to announce the release of Mes 0.13, representing 45 -commits over 3 weeks. MesCC can now compile a functional tcc when -running on Mes (in ~1h45') or on Guile (in ~3min). - -This means that we are getting very close to a full source bootstrap -of tcc: it is now built without gcc, glibc or guile; using only -MesCC-tools and Mes sources and corresponding ascii/binary seeds. - -* About - - Mes[0] aims to help create full source bootstrapping for GuixSD[1] - as part of the bootstrappable builds[2] project. - - It currently consists of a mutual self-hosting Scheme interpreter - prototype in C and a Nyacc-based C compiler in Scheme. This C - prototype is being simplified to be transpiled by M2-Planet[3]. - - The Scheme interpreter prototype (mes.c) has a Garbage Collector, - a library of loadable Scheme modules-- notably Dominique Boucher's - LALR[4], pre-R6RS portable syntax-case[5] with R7RS ellipsis, Matt - Wette's Nyacc[6], Guile's PEG[7] --and test suite just barely - enough to support a simple REPL (repl.mes) and simple C-compiler - MesCC. - - Mes+MesCC can compile a modified TinyCC[8] that is close to being - self-hosting. A GNU Gcc-compiled tcc is known[9] to compile GCC. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] - -- John McCarthy page 13, GNU Guix's source/binary packaging - transparency and Jeremiah Orians's stage0[11] ~300 byte self-hosting - hex assembler. - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/-/archive/v0.13/mes-0.13.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - -* Changes in 0.13 since 0.12 - ** Core - *** Bootstrapped Mes+MesCC can now compile a patched tcc in ~2h30' (~25,000 LOC). - *** MesCC scripts for Mes and Guile are now merged; executable is: `mescc'. - *** Mes now uses only one arena for stop-and-copy; doubles available size. - *** Mes now has a Guile-like command-line interface (mes.repl has been removed). - *** Mes now boots into a full Scheme by default. - *** Mes can now be compiled (MES_MINI=1) to boot into a minimal Scheme (~2000 cells). - *** Mes now creates less garbage in the reader and in - append2, append_reverse, reverse, reverse!, vector-for-each, vector-to-list, vector-map. - *** 5 new functions - append-reverse, chmod, ioctl, isatty, isspace, last_pair, reverse!. - ** Language - *** 3 new functions - char-whitespace?, chmod, isatty? - ** Noteworthy bug fixes - *** Two bugs in the jam scraper/garbage collector have been fixed. - *** equal2_p now uses tail call elimination. - *** Escaped characters in strings are now read and write'd correctly. - *** The repl now expands macros again. - -Greetings, -janneke - -[0] https://gitlab.com/janneke/mes -[1] https://www.gnu.org/software/guix -[2] http://bootstrappable.org -[3] https://github.com/oriansj/m2-planet -[4] https://github.com/schemeway/lalr-scm -[5] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[6] https://www.nongnu.org/nyacc/ -[7] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html -[8] https://gitlab.com/janneke/tinycc -[9] https://lists.gnu.org/archive/html/tinycc-devel/2017-05/msg00103.html -[10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[11] https://github.com/oriansj/stage0 diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.14 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.14 deleted file mode 100644 index 39b96f66..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.14 +++ /dev/null @@ -1,101 +0,0 @@ -Subject: Mes 0.14 released - -I am pleased to announce the release of Mes 0.14, representing 98 -commits over 4 weeks. Mes+MesCC now compiles a self-hosting TinyCC -that has only been slightly patched. - -This means that we can now build a tcc that depends only on a 1MB -ASCII M1 seed. GuixSD currently uses a ~250MB binary seed to build -gcc. - -Next targets are: build gcc using this almost full-source bootstrapped -tcc, and reduce the 1MB ASCII M1 seed to ~100KB of M2 source, which is -a restricted subset of C. - -Packages are available from Guix's wip-bootstrap branch. - -* About - - Mes[0] aims to help create full source bootstrapping for GuixSD[1] - as part of the bootstrappable builds[2] project. - - It currently consists of a mutual self-hosting Scheme interpreter - prototype in C and a Nyacc-based C compiler in Scheme. This C - prototype is being simplified to be transpiled by M2-Planet[3]. - - The Scheme interpreter prototype (mes.c) has a Garbage Collector, - a library of loadable Scheme modules-- notably Dominique Boucher's - LALR[4], pre-R6RS portable syntax-case[5] with R7RS ellipsis, Matt - Wette's Nyacc[6], Guile's PEG[7] --and test suite just barely - enough to support a simple REPL (repl.mes) and simple C-compiler - MesCC. - - Mes+MesCC can compile an only slightly patched TinyCC[8] that is - self-hosting. A GNU Gcc-compiled tcc is known[9] to compile GCC. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] - -- John McCarthy page 13, GNU Guix's source/binary packaging - transparency and Jeremiah Orians's stage0[11] ~300 byte self-hosting - hex assembler. - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/-/archive/v0.14/mes-0.14.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - -* Changes in 0.14 since 0.13 - ** Core - *** Bootstrapped Mes+MesCC now compiles a tcc that is self-hosting and only slightly patched. - *** The reader now supports binary numbers (previously: read as decimal). - *** String port support has been moved to C. - *** The build has been simplified, the Make-in-Scheme experiment has been removed. - *** 2 new functions - chmod, logxor. - ** Language - *** Mes now supports define-immutable-record-type and single set-field from srfi-9 gnu. - *** 12 new functions - basename, chmod, const, delete-duplicates, logxor, string-contains, - string-map, string-replace, string-trim, string-trim-both, - string-trim-right, unfold. - ** MesCC - *** MesCC now supports standalone usage of nestedly defined enums, structs and unions. - *** MesCC now supports comparison of unsigned and promotion of signed/unsigned -> unsigned. - *** MesCC now supports sign extension for char, short. - *** MesCC now has stubbing for floats; compiling works, data is fu. - *** MesCC now has full suport for switch case, e.g. with default as first clause. - *** MesCC now supports destruction of casted expressions: ((struct foo*)p)->bar. - *** MesCC now has full support for pre/post, e.g.: (foo--)->bar and permutations. - *** MesCC now supports sizeof any expression or type. - *** MesCC now supports initialization of anonymous unions. - *** MesCC now supports bit fields. - *** MesCC now supports valued functions in expressions: destruction and dereferencing. - *** MesCC now supports function-static variables. - *** MesCC now supports initializer lists in structs and unions. - *** MesCC now has full support for heterogeneous variable declarations, e.g.: char p, *x = "foo", buf[3]; - **** 4 new functions - __lshrdi3, __ashldi3, __ashrdi3, strncpy. - **** 9 new mlibc stubs - __fixdfdi, __fixsfdi, __fixunsxfdi, __fixxfdi, __floatundixf, ldexp, - strtod, strtof, strtold. - -Greetings, -janneke - -[0] https://gitlab.com/janneke/mes -[1] https://www.gnu.org/software/guix -[2] http://bootstrappable.org -[3] https://github.com/oriansj/m2-planet -[4] https://github.com/schemeway/lalr-scm -[5] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[6] https://www.nongnu.org/nyacc/ -[7] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html -[8] https://gitlab.com/janneke/tinycc -[9] https://lists.gnu.org/archive/html/tinycc-devel/2017-05/msg00103.html -[10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[11] https://github.com/oriansj/stage0 diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.15 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.15 deleted file mode 100644 index 46480413..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.15 +++ /dev/null @@ -1,106 +0,0 @@ -Subject: Mes 0.15 released - -I am pleased to announce the release of Mes 0.15, representing 45 -commits over 3 weeks. The GNU toolchain is getting bootstrapped! - -As of 0.14, Mes+MesCC compiles a self-hosting TinyCC. Using the 0.15 -Mes C library, this TinyCC can build the GNU tools triplet: -binutils-2.14, gcc-2.95.3, glibc-2.2.5. - -This means that we can build a GNU toolchain that depends only on a -critical 1MB ASCII M1 seed. GuixSD currently uses a ~250MB binary -seed to build gcc. - -Next targets are: upstream the Mes bootstrap to GuixSD, build a -Gcc-4.7 and Glibc-2.23, bootstrap utilities like bison, flex, grep, -sed..., replace GuixSD's bootstrap for x86 and reduce the 1MB ASCII M1 -seed to ~5000 LOC/~100KB of M2 source, which is a restricted subset of -C. - -Packages are available from Guix's wip-bootstrap branch. - -* About - - Mes[0] aims to help create full source bootstrapping for GuixSD[1] - as part of the bootstrappable builds[2] project. - - It currently consists of a mutual self-hosting Scheme interpreter - prototype in C and a Nyacc-based C compiler in Scheme. This C - prototype is being simplified to be transpiled by M2-Planet[3]. - - The Scheme interpreter prototype (mes.c) has a Garbage Collector, - a library of loadable Scheme modules-- notably Dominique Boucher's - LALR[4], pre-R6RS portable syntax-case[5] with R7RS ellipsis, Matt - Wette's Nyacc[6], Guile's PEG[7] --and test suite just barely - enough to support a simple REPL (repl.mes) and simple C-compiler - MesCC. - - Mes+MesCC can compile an only slightly patched TinyCC[8] that is - self-hosting. Using the Mes C library, this tcc can now build the - GNU tools triplet: binutils-2.14, gcc-2.95.3, glibc-2.2.5. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[9] - -- John McCarthy page 13, GNU Guix's source/binary packaging - transparency and Jeremiah Orians's stage0[10] ~300 byte self-hosting - hex assembler. - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/-/archive/v0.15/mes-0.15.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - -* Changes in 0.15 since 0.14 - ** Core - *** Support fork, exec, waitpid. - *** Boot-0 loading has been refactored. - *** MesCC now has out of the box Geiser support. - ** Language - *** 2 new functions - drop, drop-right. - ** MesCC - *** MesCC and Mes Lib C can now build binutils-2.30, gcc-2.95.3 and glibc-2.2.5. - *** MesCC now provides dummy crti.o, crtn.o so that tcc needs not be patched for those. - *** Mes Lib C now supports compiling glibc-2.2.25. - *** Mes Lib C now supports compiling gcc-2.95.3 - *** Mes Lib C now supports compiling binutils-2.30. - *** Mes Lib C now supports compiling m4-1.4. - *** Mes Lib C has been split into archs: gcc, x86-mes-gcc and x86-mes. - *** MesCC now has a posixy command line interface. - **** 70 new functions - abs, access, alarm, alloca, atexit, atol, bcmp, bcopy, brk, bzero, - chmod, clearerr, close, dup, dup2, execve, fabs, fcntl, fdgets, feof, - fgets, fileno, fork, freopen, fscanf, fstat, fsync, getcwd, getgid, - getpid, getrusage, getuid, index, ioctl, isalnum, isalpha, isascii, - iscntrl, isprint, ispunct, kill, link, lseek, lstat, mkdir, mktemp, - nanosleep, open, perror, pipe, raise, read, rename, rindex, rmdir, - sbrk, sbrk, setitimer, signal, sleep, stat, strcspn, strdup, strerror, - strncat, strpbrk, strspn, unlink, unsetenv, waitpid. - **** 23 new stubs - abort, atof, bsearch, bsearch, chown, ctime, fpurge, freadahead, - frexp, getpwnam, gmtime, mbstowcs, pclose, popen, rewind, setbuf, - sigsetmask, strftime, sys_siglist, system, times, umask, utime. - **** 10 new C tests - 51-strcmp.c, 70-printf.c, 87-sscanf.c, 90-strpbrk.c, 91-fseek.c, - 92-stat.c, 93-fread-fwrite.c, 94-unsetenv.c, 95-signal.c, 96-strto.c. - - -Greetings, -janneke - -[0] https://gitlab.com/janneke/mes -[1] https://www.gnu.org/software/guix -[2] http://bootstrappable.org -[3] https://github.com/oriansj/m2-planet -[4] https://github.com/schemeway/lalr-scm -[5] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[6] https://www.nongnu.org/nyacc/ -[7] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html -[8] https://gitlab.com/janneke/tinycc -[9] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[10] https://github.com/oriansj/stage0 diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.16 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.16 deleted file mode 100644 index b0e6a1e9..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.16 +++ /dev/null @@ -1,100 +0,0 @@ -Subject: Mes 0.16 released - -I am pleased to announce the release of Mes 0.16, representing 27 -commits over 2 weeks. - -A most annoying ELF header bug was fixed that suddenly had all Mes -binaries segfault before entering `_start' on Linux 4.17 and later. - -We now have binutils-2.20.1 and gcc-4.1.0, both compiled with -gcc-2.95.3 and glibc-2.2.5. - -This reduced-binary-seed bootstrap still depends on these bootstrap -binaries: BOOTSTRAP-GUILE, flex, bash, bzip2, coreutils, diffutils, -gawk, grep, gzip, make, sed, tar, on the small binary seeds: -tinycc-seed, mescc-seed and on the mes.M1 ASCII seed. - -Next targets: - - - build a Gcc 4.7 and Glibc 2.23 - - upstream the x86 Mes bootstrap to GuixSD - - reduce the 1MB ASCII M1 seed to ~5000 LOC/~100KB of M2 source - - revive Gash: a posix shell for Guile to reduce the bootstrap binary - dependencies - - and/or otherwise reduce the bootstrap binary dependencies - -Packages are available from Guix's wip-bootstrap branch. - -* About - -Mes[0] aims to help create full source bootstrapping for GuixSD[1] as -part of the bootstrappable builds[2] effort. - -It currently consists of a mutual self-hosting Scheme interpreter -prototype written in C and a Nyacc-based C compiler written in Scheme. -This C prototype is being simplified[3] to be transpiled by M2-Planet[4]. - -The Scheme interpreter prototype (mes.c) has a Garbage Collector, a -library of loadable Scheme modules-- notably Dominique Boucher's LALR[5], -Pre-R6RS portable syntax-case[6] with R7RS ellipsis, Matt Wette's Nyacc[7], -Guile's PEG[8] --and test suite just barely enough to support a simple -REPL and simple C-compiler: MesCC. - -Mes+MesCC can compile an only lighty patched TinyCC[9] that is -self-hosting. Using this tcc and the Mes C library we now have a -reduced-binary-seed bootstrap for the gnutools triplet: glibc-2.2.5, -binutils-2.20.1, gcc-4.1.0. - -Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] -- -John McCarthy page 13, GNU Guix's source/binary packaging transparency -and Jeremiah Orians's stage0[11] ~500 byte self-hosting hex assembler. - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/-/archive/v0.16/mes-0.16.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - -* Get informed, get involved - - Join #bootstrappable on irc.freenode.net. - -* Changes in 0.16 since 0.15 - ** Core - *** Support building with tcc, including Mes Lib C in-line assembly. - *** core:execl now supports 1000 arguments. - ** MesCC - *** Mes Lib C now bootstraps glibc-2.2.5, binutils-2.20.1, gcc-4.1.0. - *** MesCC binaries now run on Linux 4.17 too, i.e. survive Linus' new `sane mmap limits.' - *** MesCC now runs with mescc-tools 0.5 (no = in long options). - **** 3 new C test - 88-strrchrc, 97-fopen.c, 98-fopen.c. - ** Noteworthy bug fixes - *** strrchr now stops when it reaches start of string. - *** fopen now return 0 upon failure. Supports binutils' hack: fd=-2 means `cached'. - *** vfprintf, vsprintf now support precision and width on integers strings better. - *** fread now produces ungetc'd chars too. - *** memcmp now supports comparing 0 bytes, supporting binutils. - - *** The unused ELF header data section, identical to the text section, has been removed. - -Greetings, -janneke - -[0] https://gitlab.com/janneke/mes -[1] https://www.gnu.org/software/guix -[2] http://bootstrappable.org -[3] https://github.com/oriansj/mes-m2 -[4] https://github.com/oriansj/m2-planet -[5] https://github.com/schemeway/lalr-scm -[6] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[7] https://www.nongnu.org/nyacc -[8] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html -[9] https://gitlab.com/janneke/tinycc -[10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[11] https://github.com/oriansj/stage0 diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.17 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.17 deleted file mode 100644 index 915693dd..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.17 +++ /dev/null @@ -1,113 +0,0 @@ -Subject: GNU Mes 0.17 released - -<#secure method=pgpmime mode=sign> -We are delighted to announce the release of GNU Mes 0.17, representing -64 commits over 6 weeks. - -Mes is now an official GNU package and we have bootstrapped gcc-4.7.4 -for x86-linux with a reduced binary seed (i.e., without regular toolchain). - -Next targets: - - - upstream the x86 Mes bootstrap to GuixSD - - create a x86_64 Mes C Lib, see if that is is enough to bootstrap x86_64 - - reduce the 1MB ASCII M1 seed to ~5000 LOC/~100KB of M2 source - - create a plan for Geesh and Gash and use them to reduce the - bootstrap binary dependencies - - and/or otherwise reduce the bootstrap binary dependencies - -Packages are available from Guix's wip-bootstrap branch. - -* About - -GNU Mes[0] aims to help create full source bootstrapping for GNU/Linux -distributions such as GuixSD[1] as part of the bootstrappable builds[2] -effort. - -It consists of a mutual self-hosting Scheme interpreter written in -~5,000 LOC of simple C and a Nyacc-based C compiler written in Scheme. -This mes.c is being simplified[3] to be transpiled by M2-Planet[4]. - -The Scheme interpreter (mes.c) has a Garbage Collector, a library of -loadable Scheme modules-- notably Dominique Boucher's LALR[5], -Pre-R6RS portable syntax-case[6] with R7RS ellipsis, Matt Wette's -Nyacc[7] --and test suite just barely enough to support a simple REPL -and simple C-compiler: MesCC. - -Mes+MesCC can compile an only lightly patched TinyCC[8] that is -self-hosting. Using this tcc and the Mes C library we now have a -reduced-binary-seed bootstrap for the gnutools triplet: glibc-2.2.5, -binutils-2.20.1, gcc-4.7.4. - -Mes is inspired by The Maxwell Equations of Software: LISP-1.5[9] -- -John McCarthy page 13, GNU Guix's source/binary packaging transparency -and Jeremiah Orians's stage0[10] ~500 byte self-hosting hex assembler. - -* Download - - git clone git://git.savannah.gnu.org/mes.git - - Here are the compressed sources and a GPG detached signature[*]: - https://ftp.gnu.org/gnu/mes/mes-0.17.tar.gz - https://ftp.gnu.org/gnu/mes/mes-0.17.tar.gz.sig - - Use a mirror for higher download bandwidth: - https://www.gnu.org/order/ftp.html - - Here are the MD5 and SHA1 checksums: - - 93ca82612e203fd667dfbdfb83c06549 mes-0.17.tar.gz - d38ec93ab6dc2c92a5c5e96fef7f9295972772c2 mes-0.17.tar.gz - - [*] Use a .sig file to verify that the corresponding file (without the - .sig suffix) is intact. First, be sure to download both the .sig file - and the corresponding tarball. Then, run a command like this: - - gpg --verify mes-0.17.tar.gz.sig - - If that command fails because you don't have the required public key, - then run this command to import it: - - gpg --keyserver keys.gnupg.net --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273 - - and rerun the 'gpg --verify' command. - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] from a git checkout by running - - guix package -f .guix.scm - -* Get informed, get involved - - Join #bootstrappable on irc.freenode.net. - -* Changes in 0.17 since 0.16.1 - ** Core - *** GNU Mes is now an official GNU package. - *** MesCC is now installed as a regular Guile package. - *** Support --srcdir build. - *** Support all standard GNU make targets. - ** MesCC - *** Mes C Lib now bootstraps glibc-2.2.5, binutils-2.20.1, gcc-4.7.4. -* Changes in 0.16.1 since 0.16 - ** Core - *** Mes now builds out of the box on Debian buster/testing. - *** Mes now comes with a generic build recipe: build-aux/setup-mes.sh. - *** Mes now comes with INFO documentation. - ** MesCC - *** MesCC now exits if spawning BLOOD_ELF, M1, or HEX2 fails. - -Greetings, -janneke - -[0] https://www.gnu.org/software/mes -[1] https://www.gnu.org/software/guix -[2] http://bootstrappable.org -[3] https://github.com/oriansj/mes-m2 -[4] https://github.com/oriansj/m2-planet -[5] https://github.com/schemeway/lalr-scm -[6] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[7] https://www.nongnu.org/nyacc -[8] https://gitlab.com/janneke/tinycc -[9] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[10] https://github.com/oriansj/stage0 diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.18 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.18 deleted file mode 100644 index 193f8d72..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.18 +++ /dev/null @@ -1,133 +0,0 @@ - -Subject: GNU Mes 0.18 released - -<#secure method=pgpmime mode=sign> -We are pleased to announce the release of GNU Mes 0.18, representing -83 commits over 8 weeks. - -Mes is now bringing a Reduced Binary Seed bootstrap to GuixSD; the -size of bootstrap binaries has been halved and no regular toolchain -binaries are used as binary seeds (i686-linux and x86_64-linux only). - -MesCC has been refactored to use an abstracted assembly language and -can now (cross-)build x86_64 binaries. - -Next targets: - - - reduce the 1MB ASCII M1 seed to ~5000 LOC/~100KB of M2 source - - revive Gash/Geesh and use it to decimate the remaining bootstrap - binary seeds - - and/or otherwise reduce the bootstrap binaries - - ARM, the Hurd? - -Packages are available from Guix's core-updates-next branch. - -* About - - GNU Mes[0] brings a Reduced Binary Seed bootstrap[1] to GuixSD[2] and - potentially to any other interested GNU/Linux distribution, and aims - to help create a full source bootstrap as part of the - bootstrappable builds[3] effort. - - It consists of a mutual self-hosting Scheme interpreter written in - ~5,000 LOC of simple C and a Nyacc-based C compiler written in Scheme. - This mes.c is being simplified[4] to be transpiled by M2-Planet[5]. - - The Scheme interpreter (mes.c) has a Garbage Collector, a library of - loadable Scheme modules-- notably Dominique Boucher's LALR[6], Pre-R6RS - [portable syntax-case[7] with R7RS ellipsis, Matt Wette's Nyacc[8] --and test - suite just barely enough to support a simple REPL and simple - C-compiler: MesCC. - - Mes+MesCC can compile an only lightly patched TinyCC[9] that is - self-hosting. Using this tcc and the Mes C library we now have a - Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5, - binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap GuixSD for - i686-linux and x86_64-linux. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] -- John - McCarthy page 13, GNU Guix's source/binary packaging transparency and - Jeremiah Orians's stage0[11] ~500 byte self-hosting hex assembler. - -* Download - - git clone git://git.savannah.gnu.org/mes.git - - Here are the compressed sources and a GPG detached signature[*]: - https://ftp.gnu.org/gnu/mes/mes-0.18.tar.gz - https://ftp.gnu.org/gnu/mes/mes-0.18.tar.gz.sig - - Use a mirror for higher download bandwidth: - https://ftpmirror.gnu.org/mes/mes-0.18.tar.gz - https://ftpmirror.gnu.org/mes/mes-0.18.tar.gz.sig - - Here are the MD5 and SHA1 checksums: - - f9f901f175fbc8a5a3d90c9c551ccc8c mes-0.18.tar.gz - 4f7612731a745ebb806548186453d55e0d0bf217 mes-0.18.tar.gz - - [*] Use a .sig file to verify that the corresponding file (without the - .sig suffix) is intact. First, be sure to download both the .sig file - and the corresponding tarball. Then, run a command like this: - - gpg --verify mes-0.18.tar.gz.sig - - If that command fails because you don't have the required public key, - then run this command to import it: - - gpg --keyserver keys.gnupg.net --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273 - - and rerun the 'gpg --verify' command. - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] from a git checkout by running - - guix package -f .guix.scm - -* Get informed, get involved - - Join #bootstrappable on irc.freenode.net. - -* Changes in 0.18 since 0.17.1 - ** Core - *** Mes/MesCC now supports x86_64. - *** Mes/MesCC now brings a Reduced Binary Seed bootstrap to GuixSD. - ** Language - *** fold-right now supports 3 lists. - ** MesCC - *** MesCC now supports x86_64 (also as cross build), using -m 64. - *** Mes C Library now has better support for bootstrapping gcc-3.0. - *** Mes C test suite now has 178 tests; 74 tests were added. - *** MesCC has been refactored to support use an abstracted assembly language. - *** MesCC now uses Nyacc 0.86.0. - ** Noteworthy bug fixes - *** scaffold/tests/7s-struct-short.c has been fixed. -* Changes in 0.17.1 since 0.17 - ** MesCC - *** Mes C Library has now been exploded into a separate C file per function. - *** Mes C Library now bootstraps glibc-2.16.0, binutils-2.20.1, gcc-4.7.4. - *** Mes C Library now supports compiling make-3.82. - *** Mes C Library now supports compiling diffutils-2.7. - *** Mes C Library now supports x86_64. - **** 7 new functions - chdir, clock_gettime, closedir, execl, opendir, readdir, time. - **** 5 new stubs - getlogin, setlocale, setvbuf, sigaddset, sigblock. - ** Noteworthy bug fixes - *** qsort can now handle lists with duplicate entries. - -Greetings, -janneke - -[0] https://www.gnu.org/software/mes -[1] http://joyofsource.com/reduced-binary-seed-bootstrap.html -[2] https://www.gnu.org/software/guix -[3] https://bootstrappable.org -[4] https://github.com/oriansj/mes-m2 -[5] https://github.com/oriansj/m2-planet -[6] https://github.com/schemeway/lalr-scm -[7] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[8] https://www.nongnu.org/nyacc -[9] https://gitlab.com/janneke/tinycc -[10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[11] https://github.com/oriansj/stage0 diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.19 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.19 deleted file mode 100644 index c46c2465..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.19 +++ /dev/null @@ -1,155 +0,0 @@ - -Subject: GNU Mes 0.19 released - -<#secure method=pgpmime mode=sign> -We are pleased to announce the release of GNU Mes 0.19, representing -100 commits over 10 weeks. - -Mes has now brought the Reduced Binary Seed bootstrap to Guix (bootstrap -a GNU/Linux system without binary GNU toolchain or equivalent) and work -is ongoing to audit and verify this bootstrap path in NixOS. - -This release introduces strings as byte-array, hash-tables and native -structs. While that does increase the footprint somewhat, it fixes -our performance issue; tinycc is now compiled in ~8min (WAS: ~1h30). - -Next targets: - - - translate mes.c into unsnarfed mes.M2 - - use Gash to remove bash, coreutils&co, grep, sed, tar from the Guix - bootstrap binaries - - replace the NixOS bootstrap - - use dietlibc, uClibc, ... for bootstrapping GNU (bash, binutils, - gcc, tar) and remove Mes C lib+gnu? - - bootstrap gcc-3.x or 4.x directly, drop initial gcc-2.95.3 target? - - have M1+hex2 create gcc/tcc-usable object files? archives? - - Debian? - - ARM, the Hurd? - -Packages are available from Guix's core-updates branch. - -* About - - GNU Mes[0] brings a Reduced Binary Seed bootstrap[1] to Guix[2] and - potentially to any other interested GNU/Linux distribution, and aims - to help create a full source bootstrap as part of the - bootstrappable builds[3] effort. - - It consists of a mutual self-hosting Scheme interpreter written in - ~5,000 LOC of simple C and a Nyacc-based C compiler written in Scheme. - This mes.c is being simplified[4] to be transpiled by M2-Planet[5]. - - The Scheme interpreter (mes.c) has a Garbage Collector, a library of - loadable Scheme modules-- notably Dominique Boucher's LALR[6], Pre-R6RS - [portable syntax-case[7] with R7RS ellipsis, Matt Wette's Nyacc[8] --and test - suite just barely enough to support a simple REPL and simple - C-compiler: MesCC. - - Mes+MesCC can compile an only lightly patched TinyCC[9] that is - self-hosting. Using this tcc and the Mes C library we now have a - Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5, - binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap Guix for - i686-linux and x86_64-linux. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] -- John - McCarthy page 13, GNU Guix's source/binary packaging transparency and - Jeremiah Orians's stage0[11] ~500 byte self-hosting hex assembler. - -* Download - - git clone git://git.savannah.gnu.org/mes.git - - Here are the compressed sources and a GPG detached signature[*]: - https://ftp.gnu.org/gnu/mes/mes-0.19.tar.gz - https://ftp.gnu.org/gnu/mes/mes-0.19.tar.gz.sig - - Use a mirror for higher download bandwidth: - https://ftpmirror.gnu.org/mes/mes-0.19.tar.gz - https://ftpmirror.gnu.org/mes/mes-0.19.tar.gz.sig - - Here are the MD5 and SHA1 checksums: - - 99e134df87adc5fc5fd2c04941929c23 mes-0.19.tar.gz - c9781b3b6a814acc985c2ac68caa111a56583bca mes-0.19.tar.gz - - [*] Use a .sig file to verify that the corresponding file (without the - .sig suffix) is intact. First, be sure to download both the .sig file - and the corresponding tarball. Then, run a command like this: - - gpg --verify mes-0.19.tar.gz.sig - - If that command fails because you don't have the required public key, - then run this command to import it: - - gpg --keyserver keys.gnupg.net --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273 - - and rerun the 'gpg --verify' command. - -Mes runs from the source tree and can also be built, packaged and -installed in Guix from a git checkout by running - - guix package -f .guix.scm - -* Get informed, get involved - - See https://bootstrappable.org - Join #bootstrappable on irc.freenode.net. - -* Changes in 0.19 since 0.18 - ** Core - *** The build system has been simplified. - *** Mes now prints a backtrace upon error. - *** Performance has been improved 2-8 times, making Mes 2-10 times slower than Guile. - *** Mes now supports a module type and uses a `boot-module'. - *** Mes now supports a hash_table type. - *** Mes now supports a struct type. - *** Mes now supports building a %bootstrap-mes seed from Guix. - ** Language - *** Records are now implemented using struct (WAS: vector). - *** 44 new functions - ceil, char-downcase, char-set-adjoin, char-set-complement, - char-upcase, current-time, delete-file, dup, dup2, file-exists?, - floor, frame-printer, get-internal-run-time, getcwd, gettimeofday, - hash, hash-ref, hash-set!, hash-table-printer, hashq, - hashq-get-handle, hashq-ref, hashq-set, inexact->exact, - make-hash-table, make-stack, make-struct, module-define!, - module-printer, module-ref, module-variable, read-line, round, - stack-length, stack-ref, string-downcase, string-tokenize, - string-upcase, struct-length, struct-ref, struct-set! struct-vtable, - struct-vtable, with-error-to-file. - ** MesCC - *** Assembly defines have been cleaned-up: duplicates deleted, missing added, wrong fixed. - *** MesCC now supports compiling GNU Bash and GNU Tar. - **** 6 New functions - getegid, geteuid, getppid, setgid, setuid, sigdelset, sigprocmask. - **** 22 New macros - EACCES, ENOSPC, ESPIPE, INT16_MAX, INT16_MIN, INT32_MAX, INT32_MIN, - INT64_MAX, INT64_MIN, INT8_MAX, INT8_MIN, LLONG_MAX, LLONG_MIN, - SIZE_MAX SYS_getegid, SYS_geteuid, SYS_setgid SYS_setuid, S_IRGRP, - S_IROTH, S_IRWXG, S_IRWXO S_ISGID, S_ISUID, S_IWGRP, S_IWOTH, S_IXGRP, - S_IXOTH, UINT16_MAX, UINT32_MAX, UINT64_MAX, UINT8_MAX, - _POSIX_VERSION. - ** Noteworthy bug fixes - *** Mes now supports characters #\xNN. - *** Mes now supports assq-ref and assoc-ref with alist == #f. - *** Mes now supports \xNN in strings. This allows using Nyacc-0.86.0. - *** MesCC now supports the unary plus operator. - *** MesCC now supports the `U' integer suffix. - *** MesCC now comes with INTnn_MIN/MAX, UINTnn defines in stdint.h. - *** MesCC now always exits non-zero when assembler or linker fail. - -Greetings, -janneke - -[0] https://www.gnu.org/software/mes -[1] http://joyofsource.com/reduced-binary-seed-bootstrap.html -[2] https://www.gnu.org/software/guix -[3] https://bootstrappable.org -[4] https://github.com/oriansj/mes-m2 -[5] https://github.com/oriansj/m2-planet -[6] https://github.com/schemeway/lalr-scm -[7] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[8] https://www.nongnu.org/nyacc -[9] https://gitlab.com/janneke/tinycc -[10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[11] https://github.com/oriansj/stage0 diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.20 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.20 deleted file mode 100644 index 1a427c1d..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.20 +++ /dev/null @@ -1,133 +0,0 @@ - -Subject: GNU Mes 0.20 released - -<#secure method=pgpmime mode=sign> - -We are pleased to announce the release of GNU Mes 0.20, representing -147 commits over 38 weeks. - -Mes has now brought the Reduced Binary Seed bootstrap to Guix (bootstrap -a GNU/Linux system without binary GNU toolchain or equivalent). It -should land in Guix master any day now: a big thank you to everyone who -helped, notably Ludovic and Mark. - -This release is a step towards the upcoming Scheme-only bootstrap and -bringing Mes into NixOS and Debian. This effort is now sponsored by -NLnet[12]. - -Next targets: - - - ARM support - - Reduced Binary Seed bootstrap for ARM - - Scheme-only bootstrap: use Guile and Gash to remove bash, - coreutils&co, grep, sed, etc. from the Guix bootstrap binaries - - mes-m2: port Mes.c to M2-Planet - - Introduce Reduced Binaries Seed bootstrap to NixOS - - Debian? - - Hurd - -Packages are available in Guix master. - -* About - - GNU Mes[0] brings a Reduced Binary Seed bootstrap[1] to GNU Guix[2] - and potentially to any other interested GNU/Linux distribution, and - aims to help create a full source bootstrap as part of the - bootstrappable builds[3] effort. - - It consists of a mutual self-hosting Scheme interpreter written in - ~5,000 LOC of simple C and a Nyacc-based C compiler written in Scheme. - This mes.c is being simplified[4] to be transpiled by M2-Planet[5]. - - The Scheme interpreter (mes.c) has a Garbage Collector, a library of - loadable Scheme modules-- notably Dominique Boucher's LALR[6], Pre-R6RS - [portable syntax-case[7] with R7RS ellipsis, Matt Wette's Nyacc[8] --and test - suite just barely enough to support a simple REPL and simple - C-compiler: MesCC. - - Mes+MesCC can compile an only lightly patched TinyCC[9] that is - self-hosting. Using this tcc and the Mes C library we now have a - Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5, - binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap Guix for - i686-linux and x86_64-linux. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] -- John - McCarthy page 13, GNU Guix's source/binary packaging transparency and - Jeremiah Orians's stage0[11] ~500 byte self-hosting hex assembler. - -* Download - - git clone git://git.savannah.gnu.org/mes.git - - Here are the compressed sources and a GPG detached signature[*]: - https://ftp.gnu.org/gnu/mes/mes-0.20.tar.gz - https://ftp.gnu.org/gnu/mes/mes-0.20.tar.gz.sig - - Use a mirror for higher download bandwidth: - https://ftpmirror.gnu.org/mes/mes-0.20.tar.gz - https://ftpmirror.gnu.org/mes/mes-0.20.tar.gz.sig - - Here are the MD5 and SHA1 checksums: - - df839a83e4a2ad6c2a4accc5bf17b1a7 mes-0.20.tar.gz - 38d4cb3fa28fa1f5fc57fea9e046d4d8052bbb8c mes-0.20.tar.gz - - [*] Use a .sig file to verify that the corresponding file (without the - .sig suffix) is intact. First, be sure to download both the .sig file - and the corresponding tarball. Then, run a command like this: - - gpg --verify mes-0.20.tar.gz.sig - - If that command fails because you don't have the required public key, - then run this command to import it: - - gpg --keyserver keys.gnupg.net --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273 - - and rerun the 'gpg --verify' command. - -* Get informed, get involved - - See https://bootstrappable.org - Join #bootstrappable on irc.freenode.net. - -* Changes in 0.20 since 0.19 - ** Core - *** The build system has been simplified, again. - Mes now builds ootb on Debian. - *** Mes now supports -c EXPR. - ** Divide by zero is now flagged. - ** Language - *** 1 new function: - take-while. - ** MesCC - *** The C libraries have been exploded into one function per file. - *** MesCC now has enhanced POSIX/gcc comand line support, e.g. -DFOO=1, - -nodefaultlibs, -nostartfiles, -nostdlib. - *** The archiver is now called `mesar'. - *** MesCC now supports Nyacc-0.99. - *** MesCC now depends on MesCC-Tools 0.6.0. - *** 1 new function - __mesabi_uldiv. - ** Noteworthy bug fixes - *** interger division has been fixed. - *** isatty now looks at terminfo. - *** signal now uses sigaction correctly for non-x86. - *** string->number now support #x hex-prefix. - *** ungetc now has a buffer per file handle. - -Greetings, -janneke and Danny. - -[0] https://www.gnu.org/software/mes -[1] http://joyofsource.com/reduced-binary-seed-bootstrap.html -[2] https://www.gnu.org/software/guix -[3] https://bootstrappable.org -[4] https://github.com/oriansj/mes-m2 -[5] https://github.com/oriansj/m2-planet -[6] https://github.com/schemeway/lalr-scm -[7] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[8] https://www.nongnu.org/nyacc -[9] https://gitlab.com/janneke/tinycc -[10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[11] https://savannah.nongnu.org/projects/stage0 -[12] https://nlnet.nl/project/GNUMes diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.21 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.21 deleted file mode 100644 index 6cf75d44..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.21 +++ /dev/null @@ -1,132 +0,0 @@ - -Subject: GNU Mes 0.21 released - -<#secure method=pgpmime mode=sign> - -We are pleased to announce the release of GNU Mes 0.21, representing -54 commits over 10 weeks. - -Mes has now brought the Reduced Binary Seed bootstrap to Guix (bootstrap -a GNU/Linux system without binary GNU toolchain or equivalent). See -https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/ - -This release supports a Scheme-only bootstrap: Mes can now be built with -Gash and the experimental Gash Core Utils instead of using GNU Awk, GNU -Bash, the GNU Core Utilities, GNU Grep, GNU Gzip, GNU Make, GNU SED, and -GNU Tar. Also, the Mes C Library now supports bootstrapping those. -Finally, this release brings Mes as a package to Debian GNU/Linux. - -We are excited that the Nlnet Foundation[12] is now sponsoring this -work! - -Next targets: - - - Introduce the Reduced Binaries Seed bootstrap to NixOS (Debian, - Gentoo, ...?) - - Scheme-only bootstrap: use Guile, Gash and Gash Core Utils to remove - awk, bash, core utilities, grep, gzip, make, sed, tar, etc. from the - Guix bootstrap binaries - - ARM support - - Full Source Bootstrap: compile Mes.c using M2-Planet - - Reduced Binary Seed bootstrap for ARM - - the Hurd - -Packages are available in Guix master. - -* About - - GNU Mes[0] brings a Reduced Binary Seed bootstrap[1] to GNU Guix[2]. - This bootstrap has halved the size of opaque, uninspectable binaries - that were needed to bootstrap Guix 1.0. The final goal is to help - create a full source bootstrap as part of the bootstrappable builds[3] - effort for any interested UNIX-like operating system. - - Mes consists of a mutual self-hosting Scheme interpreter written in - ~5,000 LOC of simple C, and a C compiler written in Scheme. This - mes.c is being simplified[4] to be transpiled by M2-Planet[5]. - - The Scheme interpreter has a Garbage Collector, a library of loadable - Scheme modules-- notably Dominique Boucher's LALR[6], Pre-R6RS - [portable syntax-case[7] with R7RS ellipsis, Matt Wette's Nyacc[8] - --and test suite, just enough to support a REPL and a C99 compiler: - MesCC. - - Mes+MesCC can compile an only lightly patched TinyCC[9] that is - self-hosting. Using this tcc and the Mes C library we now have a - Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5, - binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap Guix for - i686-linux and x86_64-linux. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] -- John - McCarthy page 13, GNU Guix's source/binary packaging transparency and - Jeremiah Orians's stage0[11] ~500 byte self-hosting hex assembler. - -* Download - - git clone git://git.savannah.gnu.org/mes.git - - Here are the compressed sources and a GPG detached signature[*]: - https://ftp.gnu.org/gnu/mes/mes-0.21.tar.gz - https://ftp.gnu.org/gnu/mes/mes-0.21.tar.gz.sig - - Use a mirror for higher download bandwidth: - https://ftpmirror.gnu.org/mes/mes-0.21.tar.gz - https://ftpmirror.gnu.org/mes/mes-0.21.tar.gz.sig - - Here are the MD5 and SHA1 checksums: - - dea43529d2d84fb4b9d81bdd9efcc715 mes-0.21.tar.gz - 35721a81feeab6e0d5913b8bf78f18951edbb964 mes-0.21.tar.gz - - [*] Use a .sig file to verify that the corresponding file (without the - .sig suffix) is intact. First, be sure to download both the .sig file - and the corresponding tarball. Then, run a command like this: - - gpg --verify mes-0.21.tar.gz.sig - - If that command fails because you don't have the required public key, - then run this command to import it: - - gpg --keyserver keys.gnupg.net --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273 - - and rerun the 'gpg --verify' command. - -* Get informed, get involved - - See https://bootstrappable.org - Join #bootstrappable on irc.freenode.net. - -* Changes in 0.21 since 0.20 - ** Core - *** Mes can now be bootstrapped with Gash and Gash Core Utils. - *** Mes now supports a Scheme-only bootstrap. - *** Mes now supports -c EXPR. - ** MesCC - *** Mes C Library now supports bootstrapping GNU Awk, GNU Bash, GNU SED, and GNU Tar. - *** Mes C Library now has limited float support in vfprintf, vsnprintf, vsscanf. - **** 7 new functions - abtod, atof, creat, dtoab, execlp, isgraph, mknod, readlink, strtod, - symlink. - **** 5 new stubs - getgrgid, getgrnam, getpgid, getpgrp, mktime, setgrent. - ** Noteworthy bug fixes - *** A bug with `mes -c EXPR' has been fixed. - *** The REPL now works again on x86_64. - *** --with-system-libc now works again. - -Greetings, -janneke and Danny. - -[0] https://www.gnu.org/software/mes -[1] https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/ -[2] https://www.gnu.org/software/guix -[3] https://bootstrappable.org -[4] https://github.com/oriansj/mes-m2 -[5] https://github.com/oriansj/m2-planet -[6] https://github.com/schemeway/lalr-scm -[7] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[8] https://www.nongnu.org/nyacc -[9] https://gitlab.com/janneke/tinycc -[10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[11] https://savannah.nongnu.org/projects/stage0 -[12] https://nlnet.nl/project/GNUMes diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.22 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.22 deleted file mode 100644 index e1487932..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.22 +++ /dev/null @@ -1,162 +0,0 @@ - -Subject: GNU Mes 0.22 released - -<#secure method=pgpmime mode=sign> - -We are pleased to announce the release of GNU Mes 0.22, representing -57 commits over 8 weeks. - -Mes can now be built reproducibly by mes+mescc or guile+mescc accross -distributions such as GNU Guix, Debian GNU/Linux and NixOS. Also, many -build issues were fixed. A big thank you to reproducible-builds.org, -Vagrant Cascadian, Jelle van der Waa, Hannes Mehnert and David Terry! - -Mes now runs on the Hurd--mescc does not run yet, many system calls are -missing, especially fork/exec--and initial scaffolding support for -creating FreeBSD binaries was added. - -This release better supports bringing the Scheme-only bootstrap to Guix: -it no longer requires an update to the Guix bootstrap seed. - -The Scheme-only bootstrap means that Mes can now be built with Gash and -the experimental Gash Core Utils instead of using GNU Awk, GNU Bash, the -GNU Core Utilities, GNU Grep, GNU Gzip, GNU Make, GNU Sed, and GNU Tar. -Also, the Mes C Library now supports bootstrapping those. - -We are excited that the Nlnet Foundation[12] is now sponsoring this -work! - -Next targets: - - - Introduce the Reduced Binaries Seed bootstrap to NixOS (Debian, - Arch, Gentoo, ...?) - - Merge the Scheme-only bootstrap, the wip-bootstrap branch (using - Guile, Gash and Gash Core Utils to remove awk, bash, core utilities, - grep, gzip, make, sed, tar, etc. from the Guix bootstrap binaries) - into Guix core-updates. - - ARM support - - Full Source Bootstrap: compile Mes.c using M2-Planet - - Add full Guile module support - - Reduced Binary Seed bootstrap for ARM - - Support mescc on the Hurd (fork/exec, ...) - -Packages are available in Guix master; the cross-distro reproducible -is built using - - guix build --system=i686-linux mes-rb5 - -* About - - GNU Mes[0] is a Scheme interpreter and C compiler for bootstrapping the GNU - System. Since version 0.22 it has again helped to halve the size of - opaque, uninspectable binary seeds that are currently being used in the - Reduced Binary Seed bootstrap[1] of GNU Guix[2]. The final goal is to help - create a full source bootstrap as part of the bootstrappable builds[3] - effort for UNIX-like operating systems. - - The Scheme interpreter is written in ~5,000 LOC of simple C, and the C - compiler written in Scheme and these are mutual self-hosting. This - mes.c is being simplified[4] to be transpiled by M2-Planet[5]. - - Mes has a Garbage Collector, a library of loadable Scheme modules-- - notably Dominique Boucher's LALR[6], Pre-R6RS [portable syntax-case[7] - with R7RS ellipsis, Matt Wette's Nyacc[8] --and test suite just enough - to support a REPL and a C99 compiler: MesCC. - - Mes+MesCC can compile an only lightly patched TinyCC[9] that is - self-hosting. Using this tcc and the Mes C library we now have a - Reduced Binary Seed bootstrap for the gnutools triplet: glibc-2.2.5, - binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap Guix for - i686-linux and x86_64-linux. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] -- John - McCarthy page 13, GNU Guix's source/binary packaging transparency and - Jeremiah Orians's stage0[11] ~500 byte self-hosting hex assembler. - -* Download - - git clone git://git.savannah.gnu.org/mes.git - - Here are the compressed sources and a GPG detached signature[*]: - https://ftp.gnu.org/gnu/mes/mes-0.22.tar.gz - https://ftp.gnu.org/gnu/mes/mes-0.22.tar.gz.sig - - Use a mirror for higher download bandwidth: - https://ftpmirror.gnu.org/mes/mes-0.22.tar.gz - https://ftpmirror.gnu.org/mes/mes-0.22.tar.gz.sig - - Here are the MD5 and SHA1 checksums: - - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx mes-0.22.tar.gz - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx mes-0.22.tar.gz - - [*] Use a .sig file to verify that the corresponding file (without the - .sig suffix) is intact. First, be sure to download both the .sig file - and the corresponding tarball. Then, run a command like this: - - gpg --verify mes-0.22.tar.gz.sig - - If that command fails because you don't have the required public key, - then run this command to import it: - - gpg --keyserver keys.gnupg.net --recv-keys 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273 - - and rerun the 'gpg --verify' command. - -* Get informed, get involved - - See https://bootstrappable.org - Join #bootstrappable on irc.freenode.net. - -* Changes in 0.22 since 0.21 - ** Core - *** Mes now builds reproducibly with MesCC, cross distribution - Using --with-bootstrap on x86, a bin/mes-mescc is compiled with - mes+mescc, that shall have sha256sum - - 9e0bcb1633c58e7bc415f6ea27cee7951d6b0658e13cdc147e992b31a14625fb bin/mes-mescc - - This has been verified on GNU Guix, Debian GNU/Linux and NixOS. - *** Mes now builds reproducibly with Guile+MesCC vs Mes+MesCC. - *** Mes now builds reproducibly with Tiny CC-built MesCC. - *** configure now respects the user's CFLAGS, CPPFLAGS and LDFLAGS. - *** Mes now supports mescc-tools 0.5.2 next to 0.6.1. - This allows introducing the Scheme-only bootstrap without updating or - adding new bootstrap binary seeds into GNU Guix. - *** Mes now runs when configured --with-courage on the Hurd: - GNU debian 0.9 GNU-Mach 1.8+git20170609-486/Hurd-0.9 i686-AT386 GNU - Note that mescc does not run; fork and exec are not yet implemented. - *** Mes now configures --with-courage on x86-FreeBSD 12.1 - The initial ELF scaffold tests: exit-42.S, 0exit-42.hex2, - body-exit-42.hex2, hello-mes.S, 0hello-mes.hex2, body-hello-mes.hex2 - pass. - *** configure now has a --with-bootstrap option. - This adds the reproducible bootstrap build of bin/mes-mescc, using - mes+mescc. - *** configure prefers $CC over gcc; tcc over gcc, gcc over cc. - *** Mes now prints an error when attempting to read a file that does not exist. - *** Mes no longer depends on GIT. - ** Noteworthy bug fixes - *** Several annoying build problems were fixed, for non-Guix systems. - *** A bug with buffered-read was fixed. - This means that bash-2.05 can now build glibc-2.2.5; notably it now - successfully executes make-syscall.sh. - *** A bug with execlp, execvp for file names containing a slash was fixed. - This should allow make-3.80 running scripts that have "#! ./move-if-change". - -Greetings, -janneke and Danny. - -[0] https://www.gnu.org/software/mes -[1] https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/ -[2] https://www.gnu.org/software/guix -[3] https://bootstrappable.org -[4] https://github.com/oriansj/mes-m2 -[5] https://github.com/oriansj/m2-planet -[6] https://github.com/schemeway/lalr-scm -[7] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[8] https://www.nongnu.org/nyacc -[9] https://gitlab.com/janneke/tinycc -[10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[11] https://savannah.nongnu.org/projects/stage0 -[12] https://nlnet.nl/project/GNUMes diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.3 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.3 deleted file mode 100644 index 6f3a2d56..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.3 +++ /dev/null @@ -1,99 +0,0 @@ -Subject: on bootstrapping: first Mes 0.3 released - -I am pleased to announce the first release of Mes: 0.3, representing -152 commits over 3 months since the second status report[1]. - -* About - - Mes aims to create an entirely source-based bootstrapping path. The - target is to [have GuixSD] boostrap from a minimal, easily inspectable - binary --that should be readable as source-- into something close to - R6RS Scheme. - - As bootstrapping is presumably easiest and probably most fun with - Scheme, the next step for Mes is mescc: a C compiler/linker to - boostrap into GNU Gcc and GNU Guile, possibly via Tiny-CC. - - It currently has an interpreter written in C (mes) with Garbage - Collector (Jam Scraper), a library of loadable Scheme modules with - test suite just barely enough to support a simple REPL (repl.mes) - and a proof-of-concept c-compiler (mescc.mes) that produces an elf - from the simplest of C files. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[2] - -- John McCarthy page 13 - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.3 -O mes-0.3.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - - -* Changes in 0.3 since 0.2 - ** Core - *** Number-based rather than pointer-based cells. - *** Garbage collector aka Jam scraper. - A variant on SICP's stop and copy Garbage Collector (Jam Scraper?) - algorithm has been implemented. - *** The reader has been moved to Scheme. - ** Language - *** Simple loadable modules. - *** Srfi-9 and match use handwritten syntax-rules (mes-use-module (mes syntax)). - *** Optional syntax-case using psyntax (mes-use-module (mes psyntax)). - ** Noteworthy bug fixes - *** Srfi-0 has been fixed. - -* Changes in 0.2 since 0.1 - ** Core - *** Names of symbols and strings are list of characters [WAS: c-string]. - *** Sc-expand from pre-R6RS's psyntax has been integrated. - *** Undefined variable error now shows the name of the undefined variable. - *** There is now only one SCM type for builtin functions. - *** Macro expansion has been cleaned-up. - ** Language - *** Mes now provides a subset of R6RS. - *** Mes now provides syntax-case. - *** Mes now provides `load'. - ** Noteworthy bug fixes - *** Using values as second parameter of builtin function yields first value. - *** Quoted internals (e.g. 'if 'lambda) are now symbols. - *** Syntax error now exits. - *** Make+Bash voodoo has been replaced by build-aux/mes-snarf.scm. - *** Apply now accepts multiple list arguments. - *** Apply of character, inernal, number, string is an error. - *** Quasisyntax reading - -* Changes in 0.1 (since progress report #2) - ** Core - *** expand_macro is now a separate function. - *** A smaller core can now compiled using BOOT=1. - The smaller core does not provide define, define-macro, or quasiquote; - these are provided from a Scheme version of implemented eval/apply. - ** Language - *** Mes now provides a subset of R5RS. - *** Mes now provides let-syntax. - *** Mes now provides match. - *** Mes now provides quasisyntax, unsyntax and unsyntax-splicing. - ** User interface - *** Mes now provides a REPL, run: - scripts/repl.mes - *** Mes compiler can be run as a script: - scripts/mescc.mes doc/examples/main.c - *** Macro expansion can be inspected in the REPL, e.g.: - ,expand (and 0 1) - ** Noteworthy bug fixes - *** Performance: scripts/mescc.mes now takes 2s to compile main.c (was 1'20"). - *** Symbols are now truly unique. - * '(), #t, #f are no longer symbols. - -Greetings, -Jan - -[1] https://lists.nongnu.org/archive/html/guile-user/2016-09/msg00061.html -[2] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.4 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.4 deleted file mode 100644 index c5fe2d12..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.4 +++ /dev/null @@ -1,103 +0,0 @@ -Subject: Mes 0.4 released - -I am pleased to announce the release of Mes 0.4, representing 115 -commits over barely two weeks. It now runs Nyacc and PEG and has much -reduced core. - -* About - - Mes aims to create an entirely source-based bootstrapping path. The - target is to [have GuixSD] boostrap from a minimal, easily inspectable - binary --that should be readable as source-- into something close to - R6RS Scheme. - - As bootstrapping is presumably easiest and probably most fun with - Scheme, the next step for Mes is mescc: a C compiler/linker to - boostrap into GNU Gcc and GNU Guile, possibly via Tiny-CC. - - It currently has an interpreter written in C (mes) with Garbage - Collector (Jam Scraper), a library of loadable Scheme modules-- - notably Dominique Boucher's LALR[1], Pre-R6RS portable - syntax-case[2] with R7RS ellipsis, Nyacc[3] and Guile's PEG[4] - --and test suite just barely enough to support a simple REPL - (repl.mes) and a proof-of-concept C-compiler (mescc.mes) that - produces an elf from the simplest of C files. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[5] - -- John McCarthy page 13 - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.4 -O mes-0.4.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - -* Changes in 0.4 since 0.3 - ** Core - *** Improved performance. - Macros are now memoized; after expansion and before eval'ing the - expanded form, their input s-expression is replaced by the expansion. - This yields a nice performance improvement which finally allowed - moving all non-essential bits from the C-core into Scheme...including - the reader. The Scheme reader is much, much slower than the previous - C version, making Mes--again-- feel slow. Think of that as a feature. - *** Bootstrap with minimal reader in C. - The C-reader needs only support reading of words and lists - (s-expressions), line-comments to read the initial Scheme reader which - then takes over and handles reading of quoting, characters, strings, - block-comments. - *** Reduced size. - Total C size: ~1500LOC. The main Mes evaluator is now ~1000LOC - including cell creation and garbage collector. This code is able to - execute a Scheme program that has been loaded into memory. Another - ~500LOC is spent to load a minimal Scheme program and to dump it, to - provide a small posix interface, math functions and do some error - reporting. - *** Programs can be dumped and loaded using --dump and --load. - ** Language - *** Minimal syntactic exception support for Nyacc. - *** Minimal syntactic fluids support for Nyacc. - *** Keywords are now supported. - *** Cond now supports =>. - *** Guile's optargs: lambda* and define* are now supported. - *** #;-comments are now supported. - *** Non-nested #| |#-comments are now supported. - *** Quasisyntax is now supported. - *** R7RS syntax-rules with custom ellipsis, with-ellipsis are now supported. - *** 9 new [partial] modules - (mes fluids), (mes nyacc), (mes optargs), (mes pmatch), (mes peg), - (srfi srfi-13), (srfi srfi-9-psyntax), (srfi srfi-26), (srfi srfi-43), - (rnrs arithmetic bitwise), (sxml xpath) - *** 36 new functions - 1+, 1-, abs, and=>, append-reverse, ash, char<=?, char<?, char>=?, - char>?, even?, filter, delete, delq, vector-copy, fold, fold-right, - getenv, iota, keyword->symbol list-head, list-tail, negative?, odd?, - positive?, remove!, remove, string->number, string-copy, - string-prefix?, string=, string=?, symbol->keyword symbol-append, - symbol-prefix?, unless, write, zero?. - ** Noteworthy bug fixes - *** Macros are now memoized. - *** An error is reported when using a wrong number of arguments with a call. - *** Cond now evaluates its test clauses only once. - *** Append can also handle one argument. - *** For-each now supports 2 list arguments. - *** Map now supports 3 list arguments. - *** Backslash in string is supported. - *** Closure is not a pair. - *** All standard characters are supported. - *** Mescc now also runs in Guile. - - -Greetings, -Jan - -[1] https://github.com/schemeway/lalr-scm -[2] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[3] https://www.nongnu.org/nyacc/ -[4] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html -[5] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.5 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.5 deleted file mode 100644 index 7a04c7a4..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.5 +++ /dev/null @@ -1,79 +0,0 @@ -Subject: Mes 0.5 released - -I am pleased to announce the release of Mes 0.5, representing 250 -commits over 4 months. Mes is now self-hosting, or rather it features -a mutual self-hosting Scheme interpreter and C compiler: mes.c and -mescc; a Nyacc-based C compiler backend that also works separately -with Guile. - -* About - - Mes aims to create full source bootstrapping for GuixSD: an - entirely source-based bootstrap path. The target is to [have - GuixSD] boostrap from a minimal, easily inspectable binary --that - should be readable as source-- into something close to R6RS - Scheme. - - It currently consists of a mutual self-hosting [close to Guile-] - Scheme interpreter prototype in C and a Nyacc-based C compiler in - [Guile] Scheme. - - The Scheme interpreter prototype (mes.c) has a Garbage Collector, - a library of loadable Scheme modules-- notably Dominique Boucher's - LALR[1], Pre-R6RS portable syntax-case[2] with R7RS ellipsis, Matt - Wette's Nyacc[3] Guile's PEG[4] --and test suite just barely - enough to support a simple REPL (repl.mes) and simple C-compiler - (mescc.mes) that can produce the second initial ELF binary from - binary from mes.c, in only about 2h30'. - - Mes was inspired by The Maxwell Equations of Software: LISP-1.5[5] - -- John McCarthy page 13, GNU Guix's[6] source/binary packaging - transparency and Jeremiah Orians's stage0[7] bootstrap project. - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.5 -O mes-0.5.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - -* Changes in 0.5 since 0.4 - ** Core - *** Support compilation with Mescc. - *** Support compilation with -nostdinc, -nostdlib using mlibc. - *** Support call-with-current-continuation. - *** Support exception handling, catch/throw. - *** Give sensible error message when a macro is missing. - ** Language - *** Map now supports 4 lists. - *** The reader supports negative hex numbers. - *** 24 new functions - access?, assoc-set! c????r, compose, list->char-set, - open-input-string, read-string, string-delete, with-throw-handler. - ** Mescc - *** Mescc can be used separately as a Nyacc-based C compiler backend for Guile. - *** Switch to Nyacc frontend, update Nyacc to 0.76.5. - *** Mescc now has a test suite, scaffold/t.c. - *** Mescc now includes a minimal C library: libc/mlib.c libc/mstart.c. - *** Mescc can now compile mes.c. - ** Noteworthy bug fixes - *** The build system (configure, make) has been refactored. - *** Support map-4. - *** Evaluate arguments of OR only once. - *** Fix assq-set! - *** Fix ,expand in the REPL. - -Greetings, -janneke - -[1] https://github.com/schemeway/lalr-scm -[2] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[3] https://www.nongnu.org/nyacc/ -[4] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html -[5] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[6] https://www.gnu.org/software/guix/ -[7] https://github.com/oriansj/stage0 diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.6 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.6 deleted file mode 100644 index 80bc457e..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.6 +++ /dev/null @@ -1,82 +0,0 @@ -Subject: Mes 0.6 released - -I am pleased to announce the release of Mes 0.6, representing 32 -commits over 24 days. Mescc now works with vanilla Nyacc 0.78.3 -(thanks Matt!), Nyacc has been unbundled and Mescc compiles 33/55 -of tinycc test2 tests. - -* About - - Mes aims to create full source bootstrapping for GuixSD: an - entirely source-based bootstrap path. The target is to [have - GuixSD] boostrap from a minimal, easily inspectable binary --that - should be readable as source-- into something close to R6RS - Scheme. - - It currently consists of a mutual self-hosting [close to Guile-] - Scheme interpreter prototype in C and a Nyacc-based C compiler in - [Guile] Scheme. - - The Scheme interpreter prototype (mes.c) has a Garbage Collector, - a library of loadable Scheme modules-- notably Dominique Boucher's - LALR[1], Pre-R6RS portable syntax-case[2] with R7RS ellipsis, Matt - Wette's Nyacc[3] Guile's PEG[4] --and test suite just barely - enough to support a simple REPL (repl.mes) and simple C-compiler - (mescc.mes) that can produce the second initial ELF binary from - binary from mes.c, in only about 2h30'. - - Mes was inspired by The Maxwell Equations of Software: LISP-1.5[5] - -- John McCarthy page 13, GNU Guix's[6] source/binary packaging - transparency and Jeremiah Orians's stage0[7] bootstrap project. - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.6 -O mes-0.6.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - -* Changes in 0.6 since 0.5 - ** Core - *** configure, build now supports x86 and development for arm with-courage. - ** Language - *** Nyacc has been unbundled and is now a dependency. - *** Mes now supports case-lambda. - *** Mes reader now supports abbreviated form for return character #\cr. - *** 1 new function - string-index. - ** Mescc - *** Mescc can be used on regular C sources, like tinycc's tests/test2 suite. - *** make check passes 33/55 of tinycc's test suite etest/test2 tests. - *** Mescc now recognizes `short' as a type. - *** Mescc now supports sizeof (<identifier>), sizeof(<expression>). - *** Mescc now respects enum field initializers and supports enum variables. - *** Mescc now supports binary constants . - *** Mescc now supports assignments from ==, != boolean expressions . - *** Mescc now supports &, ^. - *** Mescc now supports struct pointers. - *** Mescc now supports struct definition with immediatete variable declaration. - *** Mescc now supports calling (returning correctly from) void functions. - *** Mescc now handles case statements breaks without compound correctly. - *** Mescc now has better [int/pointer] array support. - *** Mescc now has better support for simple (non-array-)structs. - *** Mescc now supports multiple declarations in one statement like: int a,b; - **** 2 new mlibc functions - printf, strcpy. - ** Noteworthy bug fixes - *** Installed mes and mes.repl now also run outside of source tree again. - -Greetings, -janneke - -[1] https://github.com/schemeway/lalr-scm -[2] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[3] https://www.nongnu.org/nyacc/ -[4] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html -[5] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[6] https://www.gnu.org/software/guix/ -[7] https://github.com/oriansj/stage0 diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.7 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.7 deleted file mode 100644 index 27636eac..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.7 +++ /dev/null @@ -1,83 +0,0 @@ -Subject: Mes 0.7 released - -I am pleased to announce the release of Mes 0.7, representing 32 -commits over 4 weeks. Mescc now behaves more like a regular C -compiler: supporting -E, -c, -o options and with a more complete set -of header files [stubs]; enough to work on compiling tinycc's tcc.c -albeit a somewhat modified version[8]. - -* About - - Mes aims to create full source bootstrapping for GuixSD: an - entirely source-based bootstrap path. The target is to [have - GuixSD] boostrap from a minimal, easily inspectable binary --that - should be readable as source-- into something close to R6RS - Scheme. - - It currently consists of a mutual self-hosting [close to Guile-] - Scheme interpreter prototype in C and a Nyacc-based C compiler in - [Guile] Scheme. - - The Scheme interpreter prototype (mes.c) has a Garbage Collector, - a library of loadable Scheme modules-- notably Dominique Boucher's - LALR[1], Pre-R6RS portable syntax-case[2] with R7RS ellipsis, Matt - Wette's Nyacc[3] Guile's PEG[4] --and test suite just barely - enough to support a simple REPL (repl.mes) and simple C-compiler - (mescc.mes) that can produce the second initial ELF binary from - binary from mes.c, in only about 2h30'. - - Mes was inspired by The Maxwell Equations of Software: LISP-1.5[5] - -- John McCarthy page 13, GNU Guix's[6] source/binary packaging - transparency and Jeremiah Orians's stage0[7] bootstrap project. - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.7 -O mes-0.7.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - -* Changes in 0.7 since 0.6 - ** Core - *** The minimal C reader is now always included; dependencies - on i686-unknown-linux-gnu-gcc and binary read-0-32.mo have been - dropped, these are now optional. - ** Language - *** Mes reader now supports octal numbers #oXXX. - *** 10 new functions - current-output-port, getopt-long, negate, open-output-file, - option-ref, set-current-output-port, string-rindex, string-suffix?, - with-ouwith-output-to-file, with-output-to-port. - ** Mescc - *** Mescc can now be installed and used alongside a gcc installation. - *** Mescc can now handle const anywhere. - *** Mescc now supports array fields in structs. - *** Mescc now supports forward declarations and typedef. - *** Mescc can now handle comments anywhere. - *** Mescc now supports addition and substraction for enum field values. - *** Mescc now supports anonymous enums. - *** Mescc now supports all C99 header files needed to compile tcc.c. - *** build: C sources are now preprocessed separately, then compiled and linked. - *** build: mlibc and C sources are now compiled separately and then linked. - *** mlibc has been moved from Scheme snippets into C. - *** Mescc now supports -c, -D, -E, -I and -o options. - **** open now supports optional third mode parameter. - ** Noteworthy bug fixes - *** string-index now supports function predicate. - *** number->string for radix > 10 now produces `a' instead of `:'. - -Greetings, -janneke - -[1] https://github.com/schemeway/lalr-scm -[2] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[3] https://www.nongnu.org/nyacc/ -[4] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html -[5] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[6] https://www.gnu.org/software/guix/ -[7] https://github.com/oriansj/stage0 -[8] https://gitlab.com/janneke/tinycc diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.8 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.8 deleted file mode 100644 index 67950212..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.8 +++ /dev/null @@ -1,70 +0,0 @@ -Subject: Mes 0.8 released - -I am pleased to announce the release of Mes 0.8, representing 34 -commits over 3 weeks. Mescc now produces object files in the hex2 -ascii output format compatible with the stage0 linker. - -Special thanks to Jeremiah Orians for support with MESCC_Tools and -hex2, more goodness to follow soon! - -* About - - Mes aims to create full source bootstrapping for GuixSD: an - entirely source-based bootstrap path. The target is to [have - GuixSD] boostrap from a minimal, easily inspectable binary --that - should be readable as source-- into something close to R6RS - Scheme. - - It currently consists of a mutual self-hosting [close to Guile-] - Scheme interpreter prototype in C and a Nyacc-based C compiler in - [Guile] Scheme. - - The Scheme interpreter prototype (mes.c) has a Garbage Collector, - a library of loadable Scheme modules-- notably Dominique Boucher's - LALR[1], Pre-R6RS portable syntax-case[2] with R7RS ellipsis, Matt - Wette's Nyacc[3] Guile's PEG[4] --and test suite just barely - enough to support a simple REPL (repl.mes) and simple C-compiler - (mescc.mes) that can produce the second initial ELF binary from - binary from mes.c, in only about 2h30'. - - Mes was inspired by The Maxwell Equations of Software: LISP-1.5[5] - -- John McCarthy page 13, GNU Guix's[6] source/binary packaging - transparency and Jeremiah Orians's stage0[7] bootstrap project. - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.8 -O mes-0.8.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - -* Changes in 0.8 since 0.7 - ** Mescc - *** Mescc now depends on the hex2 linker from MESCC_Tools[9]. - Direct ELF output support has been removed. - ELF symbol and string table creation has been removed. - *** Mescc now has experimental annotation support for hex2. - *** Mescc has experimental annotation support for hex2. - *** Mescc has been simplified by leveraging use labels in hex2 output. - *** Mescc now supports continue in loops. - *** Mescc now compiles to hex2 object files. - ** Language - *** 1 new function - list-index. - -Greetings, -janneke - -[1] https://github.com/schemeway/lalr-scm -[2] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[3] https://www.nongnu.org/nyacc/ -[4] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html -[5] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf -[6] https://www.gnu.org/software/guix/ -[7] https://github.com/oriansj/stage0 -[8] https://gitlab.com/janneke/tinycc -[9] https://github.com/oriansj/MESCC_Tools diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.9 b/sysa/mes-0.22/doc/announce/ANNOUNCE-0.9 deleted file mode 100644 index b4aac4a2..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-0.9 +++ /dev/null @@ -1,93 +0,0 @@ -Subject: Mes 0.9 released - -I am pleased to announce the release of Mes 0.9, representing 107 -commits over 5 weeks. Mescc now compiles to a surprisingly readable -stage0 M1 macro assembler output format. Mescc now compiles a -modified TinyCC into a running [mostly segfaulting] executable. This -is a major milestone as tcc can compile GCC. - - -* About - - Mes[0] aims to create full source bootstrapping for GuixSD[1] as - part of the bootstrappable builds[2] project. - - It currently consists of a mutual self-hosting [close to Guile-] - Scheme interpreter prototype in C and a Nyacc-based C compiler in - [Guile] Scheme. This C prototype will be rewritten in stage0[3] - M1 assembly (or possibly stage2 slow-LISP, or ...). - - The Scheme interpreter prototype (mes.c) has a Garbage Collector, - a library of loadable Scheme modules-- notably Dominique Boucher's - LALR[4], Pre-R6RS portable syntax-case[5] with R7RS ellipsis, Matt - Wette's Nyacc[6], Guile's PEG[7] --and test suite just barely - enough to support a simple REPL (repl.mes) and simple C-compiler - (mescc.mes). - - The simple C compiler can compile a modified TinyCC[8]. This - needs more work. A gcc-compiled tcc is known[9] to compile GCC. - - Mes is inspired by The Maxwell Equations of Software: LISP-1.5[10] - -- John McCarthy page 13, GNU Guix's source/binary packaging - transparency and Jeremiah Orians's stage0 ~300 byte self-hosting - hex assembler. - -* Download - - git clone https://gitlab.com/janneke/mes - - wget https://gitlab.com/janneke/mes/repository/archive.tar.gz?ref=v0.9 -O mes-0.9.tar.gz - -Mes runs from the source tree and can also be built, packaged and -installed in Guix[SD] by the usual - - guix package -f guix.scm - -* Changes in 0.9 since 0.8 - ** Core - *** Mes now builds better in non-Guix[SD] legacy distros/environments. Thanks, rain1! - ** Mescc - *** Mescc now compiles a modified tinycc into a running [mostly segfaulting] tcc.mes. - https://gitlab.com/janneke/tinycc branch wip-mescc. - *** Mescc now supports locals stack frame larger than 1 byte offset. - *** Mescc now supports incomplete struct initializers {0}. - *** Mescc now supports >>=, <<=, ^=, ~. - *** Mescc now supports the comma operator. - *** Mescc now supports mullti-line string initializers. - *** Mescc now supports unions. - *** Mescc now supports arrays in structs. - *** Mescc now supports structs in structs. - *** Mescc has been refactored to use records. - *** Mescc now builds and runs with Guile-2.0 (legacy distro support, not recommended). - *** Mescc now bundles tinycc's test2 test suite, passes one more test [34/55 pass]. - *** Mescc now has an incremental test suite consisting of 56 tests. - *** Mescc now supports stdarg variable argument lists. - *** Mescc now has __GNUC__ unset, #f (WAS: 0). - *** Mescc now depends on Nyacc 0.80.3. - *** Mescc now depends on M1 from MESCC_Tools v0.2. - *** Mescc now compiles to M1 object files. - **** 7 new mlibc functions - calloc, close, getcwd, lseek, sprintf, unlink, vprintf. - **** 31 new mlibc stubs - execvp, fclose, fdopen, fflush, fopen, fprintf, fread, free, fseek, - ftell, fwrite, localtime, longjmp, memcpy, memmove, memmove, memset, - qsort, remove, setjump, snprintf, sscanf, strchr, strrchr, strstr, - strtol, strtoll, strtoul, strtoull, time, vnsprintf. - **** 10 new header files - alloca.h, float.h, libgen.h, locale.h, stdbool.h, stddef.h, stdint.h, - stdnoreturn.h, sys/select.h, sys/wait.h. - -Greetings, -janneke - -[0] https://gitlab.com/janneke/mes -[1] https://www.gnu.org/software/guix -[2] http://bootstrappable.org -[3] https://github.com/oriansj/stage0 -[4] https://github.com/schemeway/lalr-scm -[5] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html -[6] https://www.nongnu.org/nyacc/ -[7] https://www.gnu.org/software/guile/docs/master/guile.html/PEG-Parsing.html -[8] https://gitlab.com/janneke/tinycc -[9] https://lists.gnu.org/archive/html/tinycc-devel/2017-05/msg00103.html -[10] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf diff --git a/sysa/mes-0.22/doc/announce/ANNOUNCE-2 b/sysa/mes-0.22/doc/announce/ANNOUNCE-2 deleted file mode 100644 index 6a2e5234..00000000 --- a/sysa/mes-0.22/doc/announce/ANNOUNCE-2 +++ /dev/null @@ -1,87 +0,0 @@ -Subject: on bootstrapping: 2nd status report on Mes -Date: Sun, 25 Sep 2016 13:52:11 +0200 - -Hi! - -In June I announced[0] Mes as a project that seeks to reduce the size of/ -dependency on bootstrap binaries, esp. for a system like GuixSD - -The strategy was to create a minimal trusted binary (prototyped in C but -eventually to be hand-crafted in assembly/hex) that interpets a minimal -LISP. Then using this minimal but already convenient LISP, extend it -into Scheme and write a tiny C compiler/linker. - -Last time I had a minimal LISP-1.5-resembling interpreter in 900 lines -of C that could interpret itself and an extension layer written in LISP -providing a minimal Scheme environment. I was stuck on adding macros in -LISP and had a broken macro implentation in C that I wanted to remove. -Also I hoped to greatly reduce the size of the C part. - -New status[1] - - * Provide Scheme primitives directly in 1400 lines of C - * Remove LISP-1.5 staging - * closures clue-bat, fixing bugs in begin, lambda, lexical - scoping etc. ... learned a lot! - * quasiquote, unquote, unquote-splicing (in C, too slow in Scheme) - * define-macro (in C) - * define-syntax, syntax-rules (in Scheme, using define-macro) - * all primitives needed to run LALR (strings, vectors, records, - some srfi bits; mostly in Scheme) - * test suite with 97 tests that run with Mes and also with Guile - * minimal and partial ANSI C parser for hello world - * minimal and simplistic 32 bit elf c-ast->elf generator - - Mes can now create a running 32-bit elf binary from this hello - world C source with a simplistic for loop - - int main () - { - int i; - puts ("Hi Mes!\n"); - for (i = 0; i < 4; ++i) - puts (" Hello, world!\n"); - return 1; - } - - It takes Mes 1'20" to compile this program, Guile takes 0.5 seconds. - - * cannot get psyntax.pp hooked-up or running - * do not understand syntax stuff [well enough] to implement in C - -> no let-syntax, no MATCH - -> no syntax-case, no PEG parser - -In theory the bootstrapping problem I set out to solve seems to be -cracked. The remaining problem is reduced to `just work': -implementing a minimal C compiler in Scheme. Questions here: I'm not -convinced yet that this is a meaningful project...aaand I really not -want to tackle this without having MATCH, which Mes does not have yet. - -Of the possible directions that I see - - 0 write the C compiler in Scheme without match - 1 rewrite match without let-syntax - 2 grok+write let-syntax/syntax-case using define-macro, some bits in C - 3 run and hook-up psyntax.pp...BUT that would probably require: - 4 address performance problem, possibly by - 5 rewrite Mes into a VM-based solution - -none I find really attractive. Option 5, a VM is proven to work but -that's quite a change of direction. Looking at other VM-based projects -(e.g. GNU Epsilon[2]) I fear that this must result in a much larger code -base in C, throwing out the minimal trusted binary idea. The other -puzzles and work 0, 2 or 3 still need to be done. - -However, diving into syntax-macro or eval work (2 or 3) most probably -needs the performance issue addressed. And if it turns out that a big -VM solution is needed, that may still invalidate this project after -having done even more work. - -Help! :-) Ideas? - -Greetings, -Jan - -[0] https://lists.gnu.org/archive/html/guile-user/2016-06/msg00061.html -[1] https://gitlab.com/janneke/mes -[2] http://git.savannah.gnu.org/cgit/epsilon.git diff --git a/sysa/mes-0.22/doc/announce/README b/sysa/mes-0.22/doc/announce/README deleted file mode 100644 index 062335a8..00000000 --- a/sysa/mes-0.22/doc/announce/README +++ /dev/null @@ -1,11 +0,0 @@ - -*- org -*- -#+TITLE: GNU Mes Announcements - -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. - -Files are emails sent to public mailing lists. The notice above -applies to these files too. \ No newline at end of file diff --git a/sysa/mes-0.22/doc/announce/UPDATE-0.13 b/sysa/mes-0.22/doc/announce/UPDATE-0.13 deleted file mode 100644 index 00b57844..00000000 --- a/sysa/mes-0.22/doc/announce/UPDATE-0.13 +++ /dev/null @@ -1,87 +0,0 @@ -Subject: wip-bootstrap updated - -I've updated the wip-bootstrap branch[0] for Mes[1] 0.13. It has new -mes-boot and tcc-boot packages. mes-boot is a bootstrap version of -Mes; it only depends on mescc-tools and a previously compiled mes.M1 -seed. Likewise, tcc-boot depends on a precompiled tcc-seed. Also, -tcc-boot uses a heavily patched version of the tcc sources. - -Mes 0.13 is the first release that can bootstrap a fairly functional -tcc-boot. This bootstrapped tcc passes 67/68 C tests that were created -for MesCC. It can compile a version if itself where float, long long -and bitfield are patched out...but linking fails. This amazing -compiler can now be played with by doing something like - ---8<---------------cut here---------------start------------->8--- -git checkout wip-bootstrap -make -./pre-inst-env guix build tcc-boot # may take ~2h -./pre-inst-env guix environment --ad-hoc tcc-boot -mes-tcc --help #duck and run ---8<---------------cut here---------------end--------------->8--- - -The next big effort will be to make this mes-tcc fully functional and -integrate this with GuixSD. To give you a taste of that, -here's latest bug I'm currently looking at (pretty printed comments -are only added when Guile runs MesCC, the problem is in LEA) - ---8<---------------cut here---------------start------------->8--- -$ diff -u ../mes-seed/mes.M1 src/mes.M1 ---- ../mes-seed/mes.M1 2018-05-01 18:49:37.312162270 +0200 -+++ src/mes.M1 2018-05-01 19:49:40.774770406 +0200 -@@ -35805,12 +33091,11 @@ - call32 %strcpy - add____$i8,%esp !0x8 - test___%eax,%eax -- # strcpy(buf + strlen(buf), "/mes/"); -- push___$i32 &_string_reader_read_list_266 -+ push___$i32 &_string_reader_read_list_265 - mov____%ebp,%eax -- add____$i32,%eax %0x-200 -+ add____$i32,%eax %0x-800 - push___%eax -- lea____0x32(%ebp),%eax %0x-200 -+ lea____0x32(%ebp),%eax %0x-800 - push___%eax - call32 %strlen - add____$i8,%esp !0x4 ---8<---------------cut here---------------end--------------->8--- - -We also need to remove some shortcuts that we took, most notably: -mes-seed[3]. This seed consists of 1MB of M1 code. mes.M1 is -produced by compiling mes.c using MesCC, the C compiler written in -(Guile) Scheme that comes with Mes. Although that's really terrible, -it's probably a big step forward: currently GuixSD uses ~250MB of -binary seed: the bootstrap binaries. - -The plan is to replace the mes.M1 seed with mes.M2 and compile this -new mes.M2 seed using the brand new M2-Planet[2]. M2 is basically -simple C with structs, without preprocessor. This will reduce the -seed size by a factor of 10 while making it much more readable. - -An excerpt of the TODO I keep in Mes' BOOTSTRAP document - ---8<---------------cut here---------------start------------->8--- -* TODO -** have tcc-boot's mes-tcc compile a fully functional tcc -*** mescc: fix unknown bug. -*** mescc: support function-static. -*** mescc: support/grok global static. -*** mescc: support unsigned comparison, arithmetic. -*** mescc: support long long (do we need long long to get long long in tcc)? -*** mescc: support bitfield (do we need bitfield to get bitfield in tcc)? -*** mescc: support float (do we need float to get float in tcc)? -** have bootstrapped tcc compile gcc-4.7 -** remove or upstream patches from tcc-boot -** prepare src/mes.c for M2-Planet[2] transpiler -** integrate with GuixSD -** x86_64, arm, the Hurd ---8<---------------cut here---------------end--------------->8--- - -Greetings, -janneke - -[0] http://git.savannah.gnu.org/cgit/guix.git/log/?h=wip-bootstrap -[1] https://gitlab.com/janneke/mes -[2] https://github.com/oriansj/m2-planet -[3] https://gitlab.com/janneke/mes-seed diff --git a/sysa/mes-0.22/doc/fdl-1.3.texi b/sysa/mes-0.22/doc/fdl-1.3.texi deleted file mode 100644 index cb71f05a..00000000 --- a/sysa/mes-0.22/doc/fdl-1.3.texi +++ /dev/null @@ -1,505 +0,0 @@ -@c The GNU Free Documentation License. -@center Version 1.3, 3 November 2008 - -@c This file is intended to be included within another document, -@c hence no sectioning command or @node. - -@display -Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. -@uref{http://fsf.org/} - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -@end display - -@enumerate 0 -@item -PREAMBLE - -The purpose of this License is to make a manual, textbook, or other -functional and useful document @dfn{free} in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. - -This License is a kind of ``copyleft'', which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - -@item -APPLICABILITY AND DEFINITIONS - -This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The ``Document'', below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as ``you''. You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. - -A ``Modified Version'' of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -A ``Secondary Section'' is a named appendix or a front-matter section -of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall -subject (or to related matters) and contains nothing that could fall -directly within that overall subject. (Thus, if the Document is in -part a textbook of mathematics, a Secondary Section may not explain -any mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -The ``Invariant Sections'' are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. - -The ``Cover Texts'' are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. - -A ``Transparent'' copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not ``Transparent'' is called ``Opaque''. - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, La@TeX{} input -format, SGML or XML using a publicly available -DTD, and standard-conforming simple HTML, -PostScript or PDF designed for human modification. Examples -of transparent image formats include PNG, XCF and -JPG. Opaque formats include proprietary formats that can be -read and edited only by proprietary word processors, SGML or -XML for which the DTD and/or processing tools are -not generally available, and the machine-generated HTML, -PostScript or PDF produced by some word processors for -output purposes only. - -The ``Title Page'' means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, ``Title Page'' means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. - -The ``publisher'' means any person or entity that distributes copies -of the Document to the public. - -A section ``Entitled XYZ'' means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as ``Acknowledgements'', -``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' -of such a section when you modify the Document means that it remains a -section ``Entitled XYZ'' according to this definition. - -The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. - -@item -VERBATIM COPYING - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - -@item -COPYING IN QUANTITY - -If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. - -@item -MODIFICATIONS - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: - -@enumerate A -@item -Use in the Title Page (and on the covers, if any) a title distinct -from that of the Document, and from those of previous versions -(which should, if there were any, be listed in the History section -of the Document). You may use the same title as a previous version -if the original publisher of that version gives permission. - -@item -List on the Title Page, as authors, one or more persons or entities -responsible for authorship of the modifications in the Modified -Version, together with at least five of the principal authors of the -Document (all of its principal authors, if it has fewer than five), -unless they release you from this requirement. - -@item -State on the Title page the name of the publisher of the -Modified Version, as the publisher. - -@item -Preserve all the copyright notices of the Document. - -@item -Add an appropriate copyright notice for your modifications -adjacent to the other copyright notices. - -@item -Include, immediately after the copyright notices, a license notice -giving the public permission to use the Modified Version under the -terms of this License, in the form shown in the Addendum below. - -@item -Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. - -@item -Include an unaltered copy of this License. - -@item -Preserve the section Entitled ``History'', Preserve its Title, and add -to it an item stating at least the title, year, new authors, and -publisher of the Modified Version as given on the Title Page. If -there is no section Entitled ``History'' in the Document, create one -stating the title, year, authors, and publisher of the Document as -given on its Title Page, then add an item describing the Modified -Version as stated in the previous sentence. - -@item -Preserve the network location, if any, given in the Document for -public access to a Transparent copy of the Document, and likewise -the network locations given in the Document for previous versions -it was based on. These may be placed in the ``History'' section. -You may omit a network location for a work that was published at -least four years before the Document itself, or if the original -publisher of the version it refers to gives permission. - -@item -For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve -the Title of the section, and preserve in the section all the -substance and tone of each of the contributor acknowledgements and/or -dedications given therein. - -@item -Preserve all the Invariant Sections of the Document, -unaltered in their text and in their titles. Section numbers -or the equivalent are not considered part of the section titles. - -@item -Delete any section Entitled ``Endorsements''. Such a section -may not be included in the Modified Version. - -@item -Do not retitle any existing section to be Entitled ``Endorsements'' or -to conflict in title with any Invariant Section. - -@item -Preserve any Warranty Disclaimers. -@end enumerate - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -You may add a section Entitled ``Endorsements'', provided it contains -nothing but endorsements of your Modified Version by various -parties---for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - -@item -COMBINING DOCUMENTS - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -In the combination, you must combine any sections Entitled ``History'' -in the various original documents, forming one section Entitled -``History''; likewise combine any sections Entitled ``Acknowledgements'', -and any sections Entitled ``Dedications''. You must delete all -sections Entitled ``Endorsements.'' - -@item -COLLECTIONS OF DOCUMENTS - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. - -@item -AGGREGATION WITH INDEPENDENT WORKS - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an ``aggregate'' if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included in an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. - -@item -TRANSLATION - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. - -If a section in the Document is Entitled ``Acknowledgements'', -``Dedications'', or ``History'', the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. - -@item -TERMINATION - -You may not copy, modify, sublicense, or distribute the Document -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense, or distribute it is void, and -will automatically terminate your rights under this License. - -However, if you cease all violation of this License, then your license -from a particular copyright holder is reinstated (a) provisionally, -unless and until the copyright holder explicitly and finally -terminates your license, and (b) permanently, if the copyright holder -fails to notify you of the violation by some reasonable means prior to -60 days after the cessation. - -Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - -Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, receipt of a copy of some or all of the same material does -not give you any rights to use it. - -@item -FUTURE REVISIONS OF THIS LICENSE - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -@uref{http://www.gnu.org/copyleft/}. - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License ``or any later version'' applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. If the Document -specifies that a proxy can decide which future versions of this -License can be used, that proxy's public statement of acceptance of a -version permanently authorizes you to choose that version for the -Document. - -@item -RELICENSING - -``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any -World Wide Web server that publishes copyrightable works and also -provides prominent facilities for anybody to edit those works. A -public wiki that anybody can edit is an example of such a server. A -``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the -site means any set of copyrightable works thus published on the MMC -site. - -``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0 -license published by Creative Commons Corporation, a not-for-profit -corporation with a principal place of business in San Francisco, -California, as well as future copyleft versions of that license -published by that same organization. - -``Incorporate'' means to publish or republish a Document, in whole or -in part, as part of another Document. - -An MMC is ``eligible for relicensing'' if it is licensed under this -License, and if all works that were first published under this License -somewhere other than this MMC, and subsequently incorporated in whole -or in part into the MMC, (1) had no cover texts or invariant sections, -and (2) were thus incorporated prior to November 1, 2008. - -The operator of an MMC Site may republish an MMC contained in the site -under CC-BY-SA on the same site at any time before August 1, 2009, -provided the MMC is eligible for relicensing. - -@end enumerate - -@page -@heading ADDENDUM: How to use this License for your documents - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - -@smallexample -@group - Copyright (C) @var{year} @var{your name}. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.3 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover - Texts. A copy of the license is included in the section entitled ``GNU - Free Documentation License''. -@end group -@end smallexample - -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the ``with@dots{}Texts.''@: line with this: - -@smallexample -@group - with the Invariant Sections being @var{list their titles}, with - the Front-Cover Texts being @var{list}, and with the Back-Cover Texts - being @var{list}. -@end group -@end smallexample - -If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. - -@c Local Variables: -@c ispell-local-pdict: "ispell-dict" -@c End: diff --git a/sysa/mes-0.22/doc/gendocs_template b/sysa/mes-0.22/doc/gendocs_template deleted file mode 100644 index daf3bd24..00000000 --- a/sysa/mes-0.22/doc/gendocs_template +++ /dev/null @@ -1,91 +0,0 @@ -<!--#include virtual="/server/header.html" --> -<!-- Parent-Version: 1.77 --> -<title>%%TITLE%% - GNU Project - Free Software Foundation - -

%%TITLE%%

- -
Free Software Foundation
-
last updated %%DATE%%
- -

This manual (%%PACKAGE%%) is available in the following formats:

- - - -

You can buy printed copies of -some manuals (among other items) from the Free Software Foundation; -this helps support FSF activities.

- -

(This page generated by the %%SCRIPTNAME%% -script.)

- - - - - - - - diff --git a/sysa/mes-0.22/doc/images/README b/sysa/mes-0.22/doc/images/README deleted file mode 100644 index 2604d563..00000000 --- a/sysa/mes-0.22/doc/images/README +++ /dev/null @@ -1,13 +0,0 @@ - -*- org -*- -#+TITLE: GNU Mes images - -Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen - - Copying and distribution of this file, with or without modification, - are permitted in any medium without royalty provided the copyright - notice and this notice are preserved. - -gcc-mesboot-graph.dot -This graph is generated from Guix wip-bootstrap, doing: -~/src/guix/core-updates/pre-inst-env guix graph --type=bag -e '(@@ (gnu packages commencement) gcc-mesboot)' > doc/images/gcc-mesboot-graph.dot -dot -T png doc/images/gcc-mesboot-graph.dot > doc/images/gcc-mesboot-graph.png diff --git a/sysa/mes-0.22/doc/images/gcc-mesboot-graph.dot b/sysa/mes-0.22/doc/images/gcc-mesboot-graph.dot deleted file mode 100644 index da5ed171..00000000 --- a/sysa/mes-0.22/doc/images/gcc-mesboot-graph.dot +++ /dev/null @@ -1,123 +0,0 @@ -digraph "Guix bag" { - "/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" [label = "gcc-mesboot@4.9.4", shape = box, fontname = Helvetica]; - "/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" [color = magenta]; - "/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/7v6fpp5msmjbhmprikrfcj047016gd54-gcc-mesboot1-wrapper-4.7.4.drv" [color = magenta]; - "/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" [color = magenta]; - "/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" [color = magenta]; - "/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta]; - "/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta]; - "/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = magenta]; - "/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = magenta]; - "/gnu/store/q8f5yjxp0kcdn2mwqf83bvhal71cnr71-gcc-mesboot-4.9.4.drv" -> "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" [color = magenta]; - "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" [label = "binutils-mesboot@2.20.1a", shape = box, fontname = Helvetica]; - "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" [color = magenta]; - "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [color = magenta]; - "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" [color = magenta]; - "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta]; - "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta]; - "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = magenta]; - "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = magenta]; - "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = magenta]; - "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = Helvetica]; - "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" [color = red]; - "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = red]; - "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = red]; - "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = red]; - "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = red]; - "/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica]; - "/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" -> "/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" [color = dimgrey]; - "/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" -> "/gnu/store/nvhjn6b5hi4mj7wnjxrmj0dmdigq9m2z-tcc-boot0-0.9.26-6.c004e9a.drv" [color = dimgrey]; - "/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey]; - "/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" [label = "mes-boot@0.19", shape = box, fontname = Helvetica]; - "/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" -> "/gnu/store/msykyiih9lwrd86x00vs00i8s5ipjks4-bootstrap-mescc-tools-0.5.2.drv" [color = darkgoldenrod]; - "/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = darkgoldenrod]; - "/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" -> "/gnu/store/cfw60j3987wrvb26f2bpbw5l5q6q53fj-bootstrap-mes-0.drv" [color = darkgoldenrod]; - "/gnu/store/msykyiih9lwrd86x00vs00i8s5ipjks4-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica]; - "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [label = "bootstrap-binaries@0", shape = box, fontname = Helvetica]; - "/gnu/store/cfw60j3987wrvb26f2bpbw5l5q6q53fj-bootstrap-mes-0.drv" [label = "bootstrap-mes@0", shape = box, fontname = Helvetica]; - "/gnu/store/nvhjn6b5hi4mj7wnjxrmj0dmdigq9m2z-tcc-boot0-0.9.26-6.c004e9a.drv" [label = "tcc-boot0@0.9.26-6.c004e9a", shape = box, fontname = Helvetica]; - "/gnu/store/nvhjn6b5hi4mj7wnjxrmj0dmdigq9m2z-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" [color = magenta]; - "/gnu/store/nvhjn6b5hi4mj7wnjxrmj0dmdigq9m2z-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/msykyiih9lwrd86x00vs00i8s5ipjks4-bootstrap-mescc-tools-0.5.2.drv" [color = magenta]; - "/gnu/store/nvhjn6b5hi4mj7wnjxrmj0dmdigq9m2z-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta]; - "/gnu/store/nvhjn6b5hi4mj7wnjxrmj0dmdigq9m2z-tcc-boot0-0.9.26-6.c004e9a.drv" -> "/gnu/store/cfw60j3987wrvb26f2bpbw5l5q6q53fj-bootstrap-mes-0.drv" [color = magenta]; - "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica]; - "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" -> "/gnu/store/mw6swkryp89aml4jzac5lm8kmcv5k6gy-mes-boot-0.19.drv" [color = peachpuff4]; - "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" -> "/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" [color = peachpuff4]; - "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = peachpuff4]; - "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = peachpuff4]; - "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = peachpuff4]; - "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica]; - "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" -> "/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" [color = dimgrey]; - "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey]; - "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey]; - "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [label = "glibc-mesboot0@2.2.5", shape = box, fontname = Helvetica]; - "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" [color = red]; - "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" [color = red]; - "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = red]; - "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = red]; - "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = red]; - "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/hnxdqmhjdvh1ra9ar4lxl25xf6a7bhzz-mesboot-headers-0.19.drv" [color = red]; - "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = red]; - "/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" [label = "gcc-core-mesboot@2.95.3", shape = box, fontname = Helvetica]; - "/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" [color = dimgrey]; - "/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/fglx0fz62bygkdxxg878j7x9pfl37zhh-tcc-boot-0.9.27.drv" [color = dimgrey]; - "/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey]; - "/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey]; - "/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = dimgrey]; - "/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = dimgrey]; - "/gnu/store/hnxdqmhjdvh1ra9ar4lxl25xf6a7bhzz-mesboot-headers-0.19.drv" [label = "mesboot-headers@0.19", shape = box, fontname = Helvetica]; - "/gnu/store/hnxdqmhjdvh1ra9ar4lxl25xf6a7bhzz-mesboot-headers-0.19.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = blue]; - "/gnu/store/hnxdqmhjdvh1ra9ar4lxl25xf6a7bhzz-mesboot-headers-0.19.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = blue]; - "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [label = "linux-libre-headers-bootstrap@0", shape = box, fontname = Helvetica]; - "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" [label = "gcc-mesboot0@2.95.3", shape = box, fontname = Helvetica]; - "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen]; - "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/kcyh6k46ijm9nsq1as26rr0aq7rkx4f7-gcc-core-mesboot-2.95.3.drv" [color = darkseagreen]; - "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [color = darkseagreen]; - "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = darkseagreen]; - "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = darkseagreen]; - "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = darkseagreen]; - "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen]; - "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = darkseagreen]; - "/gnu/store/7v6fpp5msmjbhmprikrfcj047016gd54-gcc-mesboot1-wrapper-4.7.4.drv" [label = "gcc-mesboot1-wrapper@4.7.4", shape = box, fontname = Helvetica]; - "/gnu/store/7v6fpp5msmjbhmprikrfcj047016gd54-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = red]; - "/gnu/store/7v6fpp5msmjbhmprikrfcj047016gd54-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" [color = red]; - "/gnu/store/7v6fpp5msmjbhmprikrfcj047016gd54-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" [color = red]; - "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" [label = "glibc-mesboot@2.16.0", shape = box, fontname = Helvetica]; - "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" [color = magenta]; - "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [color = magenta]; - "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" [color = magenta]; - "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" [color = magenta]; - "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta]; - "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = magenta]; - "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = magenta]; - "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = magenta]; - "/gnu/store/lp6fycqqd8adndlfylh4mlihm0qakxzw-glibc-mesboot-2.16.0.drv" -> "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" [color = magenta]; - "/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" [label = "glibc-headers-mesboot@2.16.0", shape = box, fontname = Helvetica]; - "/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" [color = darkgoldenrod]; - "/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [color = darkgoldenrod]; - "/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" [color = darkgoldenrod]; - "/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/hnxdqmhjdvh1ra9ar4lxl25xf6a7bhzz-mesboot-headers-0.19.drv" [color = darkgoldenrod]; - "/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = darkgoldenrod]; - "/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = darkgoldenrod]; - "/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = darkgoldenrod]; - "/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = darkgoldenrod]; - "/gnu/store/p9sl13frcs2wdcddkh20hc51l7lpavza-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" [color = darkgoldenrod]; - "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" [label = "gcc-mesboot1@4.7.4", shape = box, fontname = Helvetica]; - "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/2lpg626q4x8v7hgqajywpq1rc8y72hzx-binutils-mesboot-2.20.1a.drv" [color = cyan3]; - "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" [color = cyan3]; - "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [color = cyan3]; - "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = cyan3]; - "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = cyan3]; - "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/r50fj43103526ga6pi2f9jkk4gvaav7m-diffutils-mesboot-2.7.drv" [color = cyan3]; - "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = cyan3]; - "/gnu/store/7pllq0crksfkr7856y1pawcy4scc7l4q-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" [color = cyan3]; - "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" [label = "make-mesboot@3.82", shape = box, fontname = Helvetica]; - "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/x9shp86cz9f4rb5xvhs37zzxg1ngi4dr-binutils-mesboot0-2.20.1a.drv" [color = dimgrey]; - "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/2633565gzh4jqh7c5zf6i0iy9yxqigcv-glibc-mesboot0-2.2.5.drv" [color = dimgrey]; - "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/slnyk8gbnvfwy1m1was8myivpss58idd-gcc-mesboot0-2.95.3.drv" [color = dimgrey]; - "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/57da9mdiqhyn72m8wv00pdvzqi2ng4xb-make-mesboot0-3.80.drv" [color = dimgrey]; - "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey]; - "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/7wqw4023spvggi15vcxyxvivxa4rmmv8-bootstrap-binaries-0.drv" [color = dimgrey]; - "/gnu/store/5ad88jy4a1gpbslzdiksk7zjyh28wzkr-make-mesboot-3.82.drv" -> "/gnu/store/r0z9bix88pz0wf6sgcn9185iwcsdracs-linux-libre-headers-bootstrap-0.drv" [color = dimgrey]; - -} diff --git a/sysa/mes-0.22/doc/mes.texi b/sysa/mes-0.22/doc/mes.texi deleted file mode 100644 index 0c2de61d..00000000 --- a/sysa/mes-0.22/doc/mes.texi +++ /dev/null @@ -1,1252 +0,0 @@ -\input texinfo -@c -*- mode: texinfo; -*- - -@c %**start of header -@setfilename mes.info -@documentencoding UTF-8 -@settitle GNU Mes Reference Manual -@c %**end of header - -@include version.texi - -@c Identifier of the OpenPGP key used to sign tarballs and such. -@set OPENPGP-SIGNING-KEY-ID 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273 - -@copying -Copyright @copyright{} 2018,2019 Jan (janneke) Nieuwenhuizen@* - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 or -any later version published by the Free Software Foundation; with no -Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A -copy of the license is included in the section entitled ``GNU Free -Documentation License''. -@end copying - -@dircategory Bootstrapping -@direntry -* Mes: (mes). A system bootstrap worthy of GNU. - - -* mes: (mes)Invoking mes. Running Mes, a minimalist Guile lookalike. -* mescc: (mes)Invoking mescc. Running the MesCC bootstrap compiler. -@end direntry - -@titlepage -@title GNU Mes Reference Manual -@subtitle Full Source Bootstrapping for the GNU system -@author Jan (janneke) Nieuwenhuizen - -@page -@vskip 0pt plus 1filll -Edition @value{EDITION} @* -@value{UPDATED} @* - -@insertcopying -@end titlepage - -@contents - -@c ********************************************************************* -@node Top, Introduction, (dir), (dir) -@top GNU Mes - -This document describes GNU Mes version @value{VERSION}, a bootstrappable -Scheme interpreter and C compiler written for bootstrapping the GNU system. - -@menu -* Introduction:: What is Mes about? -* Installation:: Installing Mes. -* Bootstrapping:: Would you strap my boots? -* Contributing:: Your help needed! -* Acknowledgments:: Thanks! -* Resources:: -* GNU Free Documentation License:: The license of this manual. -* Concept Index:: Concepts. -* Programming Index:: Data types, functions, and variables. - -@detailmenu - --- The Detailed Node Listing --- - -Software Freedom - -* Reproducible Builds:: Reproducibility and free software. -* Bootstrappable Builds:: The freedom to build a software without binary seed. -* Full Source Bootstrap:: Software dependencies worthy of GNU. -* LISP as Maxwell's Equations of Software:: Auditable elegance. - -Installation - -* Regular Requirements:: Software needed to build and run Mes. -* Bootstrap Requirements:: Software needed to bootstrap Mes. -* Running the Test Suites:: Testing Mes. - -Bootstrapping - -* The Mes Bootstrap Process:: How Mes will make you yogurt from pure milk. -* Invoking mes:: Running Mes, a minimalist Guile lookalike. -* Invoking mescc:: Running the MesCC bootstrap compiler. -* Invoking mesar:: - -Invoking mes - -* Environment Variables:: If the bits won't change, change their habitat. - -Invoking mescc - -* MesCC Environment Variables:: There's no NIX like POSIX. - -Contributing - -* Building from Git:: The latest and greatest. -* Running Mes From the Source Tree:: Hacker tricks. -* Porting GNU Mes:: Teach Mes about your platform. -* The Perfect Setup:: The right tools. -* Coding Style:: Hygiene of the contributor. -* Submitting Patches:: Share your work. - -@end detailmenu -@end menu - -@c ********************************************************************* -@node Introduction, Installation, Top, Top -@chapter Introduction - -@quotation -These were “Maxwell’s Equations of Software!” - -@author Alan Kay -@end quotation - -The purpose of GNU Mes@footnote{``Mes'' is an acronym for the Maxwell -Equations of Software.} is to help create a computer operating system -that we can trust. - -Mes consists of a mutual self-hosting Scheme interpreter written in C -and a Nyacc-based (see @pxref{NYACC User's Guide,,, nyacc-ug, NYACC -User's Guide}) C compiler written in Scheme. The Scheme interpreter -@file{mes.c} is about 5,000LOC of restricted C, to be compiled with -M2-Planet@footnote{See @url{https://github.com/oriansj/m2-planet}}, a -very simple C compiler. - -If we want to trust our computers to do what we instructed them to do -then we need to be able to inspect all instructions---all -softwares---that we have given it to run. - -@section Software Freedom -@cindex purpose -The four essential Freedoms of Software are at the core of our GNU -community. Quoting the GNU philosophy@footnote{The four essential -freedoms @url{https://www.gnu.org/philosophy/free-sw.html}} - -@quotation -A program is free software if the program's users have the four -essential freedoms: - -@enumerate 0 -@item - The freedom to run the program as you wish, for any purpose (freedom 0). - -@item - The freedom to study how the program works, and change it so it does - your computing as you wish (freedom 1). Access to the source code is - a precondition for this. - -@item - The freedom to redistribute copies so you can help others (freedom - 2). - -@item - The freedom to distribute copies of your modified versions to others - (freedom 3). By doing this you can give the whole community a chance - to benefit from your changes. Access to the source code is a - precondition for this. -@end enumerate -@end quotation - -A computer operating system that respects the user's freedom is one -essential ingredient for building a reliable, trustable computing -system. There are about a dozen general purpose operating systems that -can be trusted in this way, see -@url{https://www.gnu.org/distros/free-distros.html, Free Distributions}. -For all softwares on such a system we have the full source code and -build recipes available. - -@c The Free System Distribution Guidelines (GNU FSDG)@footnote{Examples of -@c free operating systems are GNU Guix, GNU Parabola and Trisquel, see -@c https://www.gnu.org/distros/free-system-distribution-guidelines.html} -@c can serve as help to create such a system - -So we have access to all the software, we have studied it, possibly -modified it, then we built it and we installed it on a computer or some -device or appliance. How can we trust that when we run the program we -are indeed running the untainted product of the source code that we -studied? Unless we are certain of this we cannot really enjoy -Freedom 1. - -@menu -* Reproducible Builds:: Reproducibility and free software. -* Bootstrappable Builds:: The freedom to build a software without binary seed. -* Full Source Bootstrap:: Software dependencies worthy of GNU. -* LISP as Maxwell's Equations of Software:: Auditable elegance. -@end menu - -@node Reproducible Builds, Bootstrappable Builds, Introduction, Introduction -@section Reproducible Builds - -The current Reproducible Builds effort incubated in the Debian -project@footnote{@url{http://debian.org, The Debian Project}} and was -organized by Lunar. Quoting the Reproducible Builds -website@footnote{@url{https://reproducible-builds.org/,Reproducible -Builds}} - -@quotation -A build is reproducible if given the same source code, build environment -and build instructions, any party can recreate bit-by-bit identical -copies of all specified artifacts. -@end quotation - -@subsection Can we trust our freedom? - -Now consider the opposite, that a second build of a piece of source code -produces a different binary program. Upon further investigation we -might find that the only difference is probably harmless: a timestamp -that was embedded in the binary, or perhaps the name of the user that -built it or directory it was built in. Such investigations can be -nontrivial and are highly unpractical. And what if the binary -difference is not so trivial, cannot be easily accounted for? - -A piece of software that cannot be built bit-by-bit reproducible is -probably not a good community member in the world of software freedom. -We think the importance of reproducibility should not be underestimated -largely because failing that precondition makes justifable trust in -binaries provided suspect at best and downright dangerous in reality. - -It becomes clear that a bit-by-bit reproducible build of all our -sofwares is essential if we value our Freedom 1. - -@subsection An Old Idea - -The idea of reproducible builds is not very new. It was implemented for -GNU tools in the early 1990s (which we learned, much later in 2017). In -the Debian world it was mentioned first in 2000 and then more explicitly -in 2007 on -debian-devel@footnote{@url{https://lists.debian.org/debian-devel/2007/09/msg00746.html,Martin Uecker on debian-devel on bit-reproducibility}} - -@quotation -I think it would be really cool if the Debian policy required that -packages could be rebuild bit-identical from source. - -@author Martin Uecker -@end quotation - -@node Bootstrappable Builds, Full Source Bootstrap, Reproducible Builds, Introduction -@section Bootstrappable Builds - -Software distributions that take reproducible builds seriously are -currently shipping well over 90% reproducible packages. - -That a package builds bit-by-bit reproducibly however is not enough to -guarantee Freedom 1. There is another factor that is often overlooked: -opaque ascii or binary @emph{seeds} that are injected during build -time. Yes, a package may build reproduciblly from all inspectable -sourcess...but what functionality is programmed in the opaque seed? - -@subsection Bootstrap Binary Seed -Possibly one of the most harmless, but certainly by far the biggest -binary seed that all software distributions inject are the so called -@emph{bootstrap binary seed}. Bootstrap binaries are the initial binary -seeds that are used to start building the distribution. - -The GNU Guix operating system, version 1.0 had a relatively small -closure of bootstrap binary seed: GNU binutils, GNU gcc, GNU Libc, GNU -Guile, and ``Static binaries'' (think: bash, bzip2, coreutils, gawk, -grep, gzip, patch, sed, tar, xz). - -@example -$ du -schx $(readlink $(guix build bootstrap-tarballs)/*) -2.1M /gnu/store/9623n4bq6iq5c8cwwdq99qb7d0xj93ym-binutils-static-stripped-tarball-2.28.1/binutils-static-stripped-2.28.1-x86_64-linux.tar.xz -18M /gnu/store/437xwygmmwwpkddcyy1qvjcv4hak89pb-gcc-stripped-tarball-5.5.0/gcc-stripped-5.5.0-x86_64-linux.tar.xz -1.8M /gnu/store/55ccx18a0d1x5y6a575jf1yr0ywizvdg-glibc-stripped-tarball-2.26.105-g0890d5379c/glibc-stripped-2.26.105-g0890d5379c-x86_64-linux.tar.xz -5.7M /gnu/store/bqf0ajclbvnbm0a46819f30804y3ilx0-guile-static-stripped-tarball-2.2.3/guile-static-stripped-2.2.3-x86_64-linux.tar.xz -5.8M /gnu/store/j8yzjmh9sy4gbdfwjrhw46zca43aah6x-static-binaries-tarball-0/static-binaries-0-x86_64-linux.tar.xz -33M total -@end example - -only a 33MB download that unpacks to a 252MB @emph{seed} of opaque -binary code. - -@example -$ for i in $(readlink $(guix build bootstrap-tarballs)/*);\ - do sudo tar xf $i; done -$ du -schx * -130M bin -13M include -54M lib -51M libexec -5.2M share -252M total -@end example - -During the Guix 1.1 development series we managed to create the first -reduction by 50% of the Guix @emph{bootstrap binary seed}@footnote{See -@url{https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/}}. -This was a very important step because the ~250MB @emph{seed} of binary -code was practically non-auditable, which makes it hard to establish -what source code produced them. - -@node Full Source Bootstrap, , Bootstrappable Builds, Introduction -@section Full Source Bootstrap - -There is an obvious solution: we cannot allow any binary seeds in our -software stack. Not even in the bootstrap binary seed. Maybe that is a -bit too strong: we want to have the absolute minimum of binary seeds and -all binary seeds need to be inspectable and must be reviewed. How big -would the absolute minimal set be? - -@subsection The Magical Self-Hosting Hex Assembler - -June 2016 I learnt about -@url{https://github.com/oriansj/stage0/,Stage0}. Jeremiah Orians -created @file{hex0} a ~500 byte self-hosting hex assembler. The source -code is well documented and the binary is the exact mirror of the source -code. I was inspired. - -Here is an example of what the @file{hex0} program looks like; the start -of the @var{hex} function - -@example -00000060: 4883 f830 7c6f 4883 f83a 7c5a 4883 f841 H..0|oH..:|ZH..A -@dots{} -000000d0: 48c7 c0ff ffff ffc3 0000 0000 0000 0000 H............... -000000e0: 4883 e830 c300 0000 0000 0000 0000 0000 H..0............ -@end example - -All computer programs look like this: an opaque list of computer codes. -The initial programs that we take for granted---the bootstrap binary -seed---are about 250MB of such numbers: think 250,000 pages full of -numbers. - -Most computers work pretty well so apparently there is not a pressing -need to inspect and study all of these codes. At the same time it is -tricky to fully trust@footnote{ Ken Thompson's 1984 Turing award -acceptance speech -@url{http://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf, -Reflections on Trusting Tust}.} a computer that was bootstrapped in this -way. - -Here is what the source code of the @file{hex0} assembler looks like - -@example -## function: hex -48 83 f8 30 # cmp $0x30,%rax -7c 6f # jl 6000f3 -48 83 f8 3a # cmp $0x3a,%rax -7c 5a # jl 6000e4 -48 83 f8 41 # cmp $0x41,%rax -@dots{} -## function: ascii_other -48 c7 c0 ff ff ff ff # mov $0xffffffffffffffff,%rax -c3 # ret -@dots{} -## function: ascii_num -48 83 e8 30 # sub $0x30,%rax -c3 # ret -@end example - -While it may be hard to understand what this piece of the program does, -it should be possible for anyone to verify that the computer codes above -correspond to the source code with comments. - -One step beyond these annotated codes is Assembly language. To write a -program in Assembly, you only need to provide the instructions; the -codes are computed by the @file{assembler} program. - -@example -hex: - # deal all ascii less than 0 - cmp $48, %rax - jl ascii_other - # deal with 0-9 - cmp $58, %rax - jl ascii_num -@dots{} -ascii_other: - mov $-1, %rax - ret -ascii_num: - sub $48, %rax - ret -@end example - -More readable still, a similar program text in the C programming language. - -@example -int -hex (int c) -@{ - if (c >= '0' && c <= '9') - return c - 48; -@dots{} -@} -@end example - -What if we could bootstrap our entire system from only this one -@file{hex0} assembler binary seed? We would only ever need to inspect -these 500 bytes of computer codes. Every@footnote{Some program -languages have become very hard or practically impossible to bootstrap. -Instead of depending on a simple language such as C, they depend on a -recent version of itself, or on other binary or ASCII seeds, on other -recent programs written in that language, or even on manual -intervention. Programs written in a language that cannot be -bootstrapped can still run on our systems, but cannot enjoy any of the -trust we intend to create.} later program is written in a more friendly -programming language: Assembly, C, @dots{} Scheme. - -Inspecting all these programs is a lot of work, but it can certainly be -done. We might be able to create a fully inspectable path from almost -nothing to all of the programs that our computer runs. Something that -seemed to be an impossible dream is suddenly starting to look like -``just a couple years of work''. - -@node LISP as Maxwell's Equations of Software -@section LISP as Maxwell's Equations of Software - -As fate would have it, I stumbled upon this -@url{https://queue.acm.org/detail.cfm?id=1039523, interview with Alan -Kay}, where he shares a revelation he had when reading John McCarthy's -@url{http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf, -LISP-1.5} manual: - -@quotation -that was the big revelation to me @dots{} when I finally understood that -the half page of code on the bottom of page 13 of the Lisp 1.5 manual -was Lisp in itself. These were “Maxwell’s Equations of Software!” This -is the whole world of programming in a few lines that I can put my hand -over. - -@author Alan Kay -@end quotation - -Our starting point is @file{hex0}, a 500 byte hex assembler and we need -to somehow close the gap to building the bootstrap binary seed, esp. GNU -Gcc and the GNU C Library. What better way to do that than by -leveraging the powers of LISP? - -GNU Mes is a Scheme@footnote{Scheme is a modern LISP} interpreter that -will be indirectly bootstrapped from @file{hex0} and that wields the -magical powers of LISP to close the bootstrap gap, asserting we can -enjoy software Freedom 1. - -@subsection Auditable Elegance - -@code{eval} and @code{apply} are mutual recursing functions that---using -a few helper functions---describe the core of the universe of computing. - -@lisp -(define (apply fn x a) - (cond - ((atom fn) - (cond - ((eq fn CAR) (caar x)) - ((eq fn CDR) (cdar x)) - ((eq fn CONS) (cons (car x) (cadr x))) - ((eq fn ATOM) (atom (car x))) - ((eq fn EQ) (eq (car x) (cadr x))) - (#t (apply (eval fn a) x a)))) - ((eq (car fn) LAMBDA) - (eval (caddr fn) (pairlis (cadr fn) x a))) - ((eq (car fn) LABEL) - (apply (caddr fn) x - (cons (cons (cadr fn) (caddr fn)) a))))) -@end lisp - -@lisp -(define (eval e a) - (cond - ((atom e) (cdr (assoc e a))) - ((atom (car e)) - (cond ((eq (car e) QUOTE) (cadr e)) - ((eq (car e) COND) (evcon (cdr e) a)) - (#t (apply (car e) (evlis (cdr e) a) a)))) - (#t (apply (car e) (evlis (cdr e) a) a)))) -@end lisp - -It will be a big day when our computers are fully bootstrapped from -source. It would be nice if that source code were readable, auditable -and elegant. To be honest, the elegance displayed above that we -achieved at the very start of the Mes project is currently hard to find. -It is our sincerest hope to bring back this level of quality and -elegance.. - -@c ********************************************************************* -@node Installation, Bootstrapping, Introduction, Top -@chapter Installation - -@cindex installing Mes -Mes is available for download from its website at -@url{https://www.gnu.org/pub/gnu/mes/}. This section describes the -software requirements of Mes, as well as how to install it and get ready -to use it. - - -@menu -* Regular Requirements:: Software needed to build and run Mes. -* Bootstrap Requirements:: Software needed to bootstrap Mes. -* Running the Test Suites:: Testing Mes. -@end menu - -@node Regular Requirements, Bootstrap Requirements, Installation, Installation -@section Regular Requirements - -This section lists requirements when building Mes from source. The -build procedure for Mes is the same as for other GNU software, and is -not covered here. Please see the files @file{README} and @file{INSTALL} -in the Mes source tree for additional details. - -GNU Mes depends on the following packages: - -@itemize -@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.13 or -later, including 2.2.x; -@item @url{http://www.gnu.org/software/make/, GNU Make}. -@item @url{https://savannah.gnu.org/projects/nyacc/, NYACC}, 0.93.0 or later, including 0.99.0. -@item @url{http://gcc.gnu.org, GCC's gcc}, version 2.95.3 or later. -@item @url{https://savannah.gnu.org/projects/mescc-tools/, mescc-tools}, version 0.6.1 or later, -@end itemize - -@cindex Guile, compatibility -Mes is compatible with GNU Guile, so it is possible to share the same -Scheme code between both. Currently Mes only supports the minimal -subset of R5RS and Guile extensions to run MesCC. - -@node Bootstrap Requirements, Running the Test Suites, Regular Requirements, Installation -@section Bootstrap Requirements - -This section lists requirements when building Mes as a bootstrap -package. The bootstrap build procedure for Mes is similar to building -GNU software and goes like this - -@example -sh configure.sh --prefix=/your/prefix/here -sh bootstrap.sh -sh check.sh -sh install.sh -@end example - -See @file{configure.sh} and @file{bootstrap.sh} for inspiration on what -environment variables to set. - -Bootstrapping Mes depends on the following packages: - -@itemize -@item a POSIX-compatible shell -@item @url{https://github.com/oriansj/mescc-tools/, mescc-tools}, version 0.6.1 or later. -@item @url{https://savannah.gnu.org/projects/nyacc/, NYACC}, 0.93.0 or later, including 0.99.0. -@end itemize - -@node Running the Test Suites, , Bootstrap Requirements, Installation -@section Running the Test Suites - -@cindex test suites -After a successful @command{configure} and @code{make} run, it is a good -idea to run the test suites. - -@example -make check -@end example - -Run Mes Scheme language semantics tests (@file{scaffold/boot}) only - -@example -build-aux/check-boot.sh -@end example - -Run a single Mes boot test - -@example -MES_BOOT=scaffold/boot/00-zero.scm bin/mes -@end example - -Run a single Mes Scheme test - -@example -./pre-inst-env tests/boot.test -MES=guile ./pre-inst-env tests/boot.test -@end example - -Run MesCC tests only - -@example -build-aux/check-mescc.sh -@end example - -Run a single MesCC test - -@example -CC=gcc CC32=i686-unknown-linux-gnu-gcc MES=guile \ - build-aux/test.sh scaffold/tests/00-exit-0 -@end example - -@node Bootstrapping, Contributing, Installation, Top -@chapter Bootstrapping - -@quotation -Recipe for yogurt: Add yogurt to milk. - -@author Anonymous -@end quotation - -The bootstrap problem we have set out to solve is that none of our -modern software distributions, and Guix in particular, can be created -all from source code. In addition to the carefully signed source code -of all the programs (the `milk') an opaque binary seed (the `yogurt') is -injected as an essential dependency. - -Why would this be a problem, I hear you ask? This is how it is done, we -always did it this way, everyone does it like this! Indeed, a popular -way of handling the bootstrapping issue is by ignoring it. - -@quotation -Your compiler becoming self-hosting@dots{}a language creator's wet -dream. - -@author PFH -@end quotation - -It seems that writing a self-hosting compiler is considered to be a -language creator's ultimate goal. It means that their language and -compiler have become powerful enough to not depend on a pre-exising -language that possibly is---but certainly was until now---more -powerful; it feels like passing the rite to adulthood. - -When you see the irony, you grasp what our bootstrapping effort means in -practice. Creating bootstrappable software is not hard; actually most -softwares' first releases are bootstrappable. The problem of -bootstrapping is not a technical one, it is a lack of awareness and -responsibility. - -@menu -* The Mes Bootstrap Process:: How Mes will make you yogurt from pure milk. -* Invoking mes:: Running Mes, a minimalist Guile lookalike. -* Invoking mescc:: Running the MesCC bootstrap compiler. -* Invoking mesar:: -@end menu - -@node The Mes Bootstrap Process, Invoking mes, Bootstrapping, Bootstrapping -@section The Mes Bootstrap Process - -The Reduced Binary Seed bootstrap currently adopted by Guix@footnote{See -@file{gnu/packages/commencement.scm} in the @var{master} branch in Guix -git -@url{http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/commencement.scm}}. -In its intiial form it is only available for x86-linux. - -Currently, it goes like this: - -@verbatim - gcc-mesboot (4.9.4) - ^ - | - glibc-mesboot (2.16.0) - ^ - | - gcc-mesboot1 (4.7.4) - ^ - | - binutils-mesboot (2.20.1a) - ^ - | - gcc-mesboot0 (2.95.3) - ^ - | - glibc-mesboot0 (2.2.5) - ^ - | - gcc-core-mesboot (2.95.3) - ^ - | - make-mesboot0, diffutils-mesboot, binutils-mesboot0 (2.20.1a) - ^ - | - tcc-boot - ^ - | - tcc-boot0 - ^ - | - mes-boot - ^ - | - * - bootstrap-mescc-tools, bootstrap-mes (~10MB) - bootstrap-bash, bootstrap-coreutils&co, bootstrap-guile (~120MB) -@end verbatim - -@c This graph is generated from wip-bootstrap, doing: - -@c ~/src/guix/core-updates/pre-inst-env guix graph --type=bag -e '(@@ (gnu packages commencement) gcc-mesboot)' > doc/images/gcc-mesboot-graph.dot -@c dot -T png doc/images/gcc-mesboot-graph.dot > doc/images/gcc-mesboot-graph.png - -Here's a generated dependency diagram to for the final bootstrap gcc -that builds the rest of Guix. - -@image{images/gcc-mesboot-graph,2in,,Reference graph of the gcc-mesboot} - -Work is ongoing to remove these binary seeds that were intentionally -injected by our own doing as temporary shortcut -@example -bootstrap-mescc-tools (seed), bootstrap-mes (seed) -@end example - -For now, these additional non-bootstrapped dependencies (i.e., binary -seeds) are taken for granted - -@example -bootstrap-guile, bash, bzip2, coreutils, gawk, grep, gzip, patch, sed, -tar, xz -@end example - -Although we think these are less essential and thus less interesting -than the GNU toolchain triplet that we focussed on initially, our next -priority is to eleminate these one by one. - -@node Invoking mes, Invoking mescc, The Mes Bootstrap Process, Bootstrapping -@section Invoking mes - -@cindex repl -The @command{mes} command is the Scheme interpreter whose prime -directive is to run the @command{MesCC} program. - -For convenience and testing purposes, @command{mes} tries to mimic -guile. - -@example -mes @var{option}@dots{} @file{FILE}@dots{} -@end example - -The @var{option}s can be among the following: - -@table @code - -@item -s @var{script} @var{arg}@dots{} -@cindex script mode -By default, mes will read a file named on the command line as a script. -Any command-line arguments @var{arg}@dots{} following @var{script} -become the script's arguments; the @code{command-line} function returns -a list of strings of the form @code{(@var{script} @var{arg}@dots{})}. - -Scripts are read and evaluated as Scheme source code just as the -@code{load} function would. After loading @var{script}, mes exits. - -@item -c @var{expr} @var{arg}@dots{} -@cindex evaluate expression, command-line argument -Evaluate @var{expr} as Scheme code, and then exit. Any command-line -arguments @var{arg}@dots{}) following @var{expr} become command-line -arguments; the @code{command-line} function returns a list of strings of -the form @code{(@var{guile} @var{arg}@dots{})}, where @var{mes} is the -path of the mes executable. - -@item -- @var{arg}@dots{} -Run interactively, prompting the user for expressions and evaluating -them. Any command-line arguments @var{arg}@dots{} following the -@option{--} become command-line arguments for the interactive session; -the @code{command-line} function returns a list of strings of the form -@code{(@var{guile} @var{arg}@dots{})}, where @var{mes} is the path of the -mes executable. - -@item -L,--load-path=@var{directory} -Add @var{directory} to the front of Mes module load path. The given -directories are searched in the order given on the command line and -before any directories in the @env{GUILE_LOAD_PATH} environment -variable. - -@item -C,--compiled-path=@var{directory} -Accepted and ignored for Guile compatibility. - -@item -l @var{file} -Load Scheme source code from @var{file}, and continue processing the -command line. - -@item -e,--main=@var{function} -Make @var{function} the @dfn{entry point} of the script. After loading -the script file (with @option{-s}) or evaluating the expression (with -@option{-c}), apply @var{function} to a list containing the program name -and the command-line arguments---the list provided by the -@code{command-line} function. - -@item -h@r{, }--help -Display help on invoking mes, and then exit. - -@item -v@r{, }--version -Display the current version of mes%, and then exit. - -@end table - -@menu -* Environment Variables:: If the bits won't change, change their habitat. -@end menu - -@node Environment Variables, , Invoking mes, Invoking mes -@subsection Environment Variables -@cindex environment variables -@cindex shell -@cindex initialization - -@c Hmm, I expected this paragraph in the Guix manual? -Here are the environment variables (see @pxref{Environment Variables,,, -guile, Guile Reference}) that affect the run-time behavior of -mes: - -@table @env -@item MES_BOOT -@vindex MES_BOOT - -Set @env{MES_BOOT} to change the initial Scheme program that mes runs. - -@item MES_ARENA -@vindex MES_ARENA - -The initial size of the arena @pxref{5.3,,, sicp, SICP} in cells. Default: 20,000. - -@item MES_MAX_ARENA -@vindex MES_MAX_ARENA - -The maximum size of the arena in cells. Default: 100,000,000. - -@item MES_MAX_STRING -@vindex MES_MAX_STRING - -The maximum size of a string. Default: 524,288. - -@item MES_DEBUG -@vindex MES_DEBUG - -@enumerate -@item - Informational: -@itemize -@item MODULEDIR -@item included SCM modules and sources -@item result of program -@item gc stats at exit -@end itemize -@item -opened files - -@item -runtime gc stats - -@item -detailed info -@itemize -@item parsed, expanded program -@item list of builtins -@item list of symbol -@item opened input strings -@item gc details -@end itemize - -@item -usage of opened input strings -@end enumerate - - -@item GUILE_LOAD_PATH -@vindex GUILE_LOAD_PATH -This variable may be used to augment the path that is searched for -Scheme files when loading. Its value should be a colon-separated list -of directories. If it contains the special path component @code{...} -(ellipsis), then the default path is put in place of the ellipsis, -otherwise the default path is placed at the end. The result is stored -in @code{%load-path}. - -Mes uses @var{@strong{GUILE}_LOAD_PATH} for compatibility with Guile. - -@end table - -@node Invoking mescc, Invoking mesar, Invoking mes, Bootstrapping -@section Invoking mescc - -@example -mescc @var{option}@dots{} @file{FILE}@dots{} -@end example - -The @var{option}s can be among the following: - -@table @code - -@item --align -align globals - -@item --base-address=ADRRESS -use BaseAddress ADDRESS [0x1000000] - -@item -c -@cindex compile -preprocess, compile and assemble only; do not link - -@item -D @var{DEFINE}[=@var{VALUE}] -@cindex define DEFINE [VALUE=1] - -@item -dumpmachine -@cindex arch -@cindex architecture -@cindex machine -display the compiler's target processor - -@item -E -preprocess only; do not compile, assemble or link - -@item -g -add @command{blood-elf} debug info - -This enables GDB setting breakpoints on function names, and to have the -GDB backtrace command to show the function call stack. - -@item -h, --help -display this help and exit - -@item -I DIR -append DIR to include path - -@item -L DIR -append DIR to library path - -@item -l LIBNAME -link with LIBNAME - -@item -m BITS -compile for BITS bits [32] - -@item -O LEVEL -use optimizing LEVEL - -@item -o FILE -write output to FILE - -@item -S -preprocess and compile only; do not assemble or link - -@item --std=STANDARD -assume that the input sources are for STANDARD - -@item -V,--version -display version and exit - -@item -w,--write=TYPE -dump Nyacc AST using TYPE @{pretty-print,write@} - -@item -x LANGUAGE -specify LANGUAGE of the following input files - -@end table - -@menu -* MesCC Environment Variables:: There's no NIX like POSIX. -@end menu - -@node MesCC Environment Variables, , Invoking mescc, Invoking mescc -@subsection MesCC Environment Variables - -@table @env -@item MES -@vindex MES - -Setting @env{MES} to a mes-compatible Scheme will run mescc using that -@example -MES=guile mescc -c scaffold/main.c -@end example - -See, now Guile has become compatible with Mes, instead of the other way -around ;-) - -@item C_INCLUDE_PATH -@vindex C_INCLUDE_PATH - -@item LIBRARY_PATH -@vindex LIBRARY_PATH - -@item NYACC_DEBUG -@vindex NYACC_DEBUG - -Setting @env{NYACC_DEBUG} makes nyacc print names of function -during the parsing phase. - -@end table - -@node Invoking mesar, , Invoking mescc, Bootstrapping -@section Invoking mesar - -@example -mesar @var{option}@dots{} @var{command} @file{ARCHIVE-FILE} @file{FILE}@dots{} -@end example - -The @var{command} is ignored for compatibility with @file{ar} - -@example - r[ab][f][u] - replace existing or insert new file(s) into the archive - [c] - do not warn if the library had to be created - [D] - use zero for timestamps and uids/gids (default) -@end example - -and assumed to be @var{crD}. - -The @var{option}s can be among the following: - -@table @code - -@item -h, --help -display this help and exit - -@item -V,--version -display version and exit - -@end table - -@c ********************************************************************* -@node Contributing, Acknowledgments, Bootstrapping, Top -@chapter Contributing - -@menu -* Building from Git:: The latest and greatest. -* Running Mes From the Source Tree:: Hacker tricks. -* Porting GNU Mes:: Teach Mes about your platform. -* The Perfect Setup:: The right tools. -* Coding Style:: Hygiene of the contributor. -* Submitting Patches:: Share your work. -@end menu - -@node Building from Git, Running Mes From the Source Tree, Contributing, Contributing -@section Building from Git - -If you want to hack GNU Mes itself, it is recommended to use the latest -version from the Git repository: - -@example -git clone git://git.savannah.gnu.org/mes.git -@end example - -The easiest way to set up a development environment for Mes is, of -course, by using Guix! The following command starts a new shell where -all the dependencies and appropriate environment variables are set up to -hack on Mes: - -@example -guix environment -l .guix.scm -@end example - -Finally, you have to invoke @code{make check} to run tests -(@pxref{Running the Test Suites}). If anything fails, take a look at -installation instructions (@pxref{Installation}) or send a message to -the @email{bug-mes@@gnu.org} mailing list. - -@node Running Mes From the Source Tree, Porting GNU Mes, Building from Git, Contributing -@section Running Mes From the Source Tree - -First, you need to have an environment with all the dependencies -available (@pxref{Building from Git}), and then simply prefix each -command by @command{./pre-inst-env} (the @file{pre-inst-env} script -lives in the top build tree of Mes). - -@node Porting GNU Mes, The Perfect Setup, Running Mes From the Source Tree, Contributing -@section Porting GNU Mes - -Mes was written for x86-linux. A 64 bit (x86_64) is almost done, only a -few bugs remain. The Guix bootstrap for x86_64 uses x86 mes and that is -not expected to change. - -An ARM (armv4/armv7l) linux port is underway. A port to GNU/Hurd -(x86-gnu) is also underway. - -Initial scaffold, built by @file{build-aux/build-scaffold.sh}: -@example - @file{lib/linux/x86-mes-gcc/exit-42.S} - @file{lib/linux/x86-mes/elf32-0exit-42.hex2} - @file{lib/linux/x86-mes/elf32-body-exit-42.hex2} - - @file{lib/linux/x86-mes-gcc/hello-mes.S} - @file{lib/linux/x86-mes/elf32-0hello-mes.hex2} - @file{lib/linux/x86-mes/elf32-body-hello-mes.hex2} -@end example - -Porting MesCC: -@example - @file{lib/x86-mes/x86.M1} - - @file{module/mescc/mescc.scm} - @file{module/mescc/i386/as.scm} - @file{module/mescc/i386/info.scm} - - @file{mes/module/mescc/i386/as.mes} - @file{mes/module/mescc/i386/info.mes} -@end example - -@node The Perfect Setup, Coding Style, Porting GNU Mes, Contributing -@section The Perfect Setup - -The Perfect Setup to hack on Mes is basically the perfect setup used -for Guile hacking (@pxref{Using Guile in Emacs,,, guile, Guile Reference -Manual}). First, you need more than an editor, you need -@url{http://www.gnu.org/software/emacs, Emacs}, empowered by the -wonderful @url{http://nongnu.org/geiser/, Geiser}. - -Geiser allows for interactive and incremental development from within -Emacs: code compilation and evaluation from within buffers, access to -on-line documentation (docstrings), context-sensitive completion, -@kbd{M-.} to jump to an object definition, a REPL to try out your code, -and more (@pxref{Introduction,,, geiser, Geiser User Manual}). - -@node Coding Style, Submitting Patches, The Perfect Setup, Contributing -@section Coding Style - -In general our code follows the GNU Coding Standards (@pxref{Top,,, -standards, GNU Coding Standards}). However, they do not say much about -Scheme, so here are some additional rules. - -@subsection Programming Paradigm - -Scheme code in Mes is written in a purely functional style. - -@subsection Formatting Code - -@cindex formatting code -@cindex coding style -When writing Scheme code, we follow common wisdom among Scheme -programmers. In general, we follow the -@url{http://mumble.net/~campbell/scheme/style.txt, Riastradh's Lisp -Style Rules}. This document happens to describe the conventions mostly -used in Guile’s code too. It is very thoughtful and well written, so -please do read it. - -@cindex indentation, of code -@cindex formatting, of code -If you do not use Emacs, please make sure to let your editor knows these -rules. - -Additionally, in Mes we prefer to format @code{if} statements like this -@example -(if foo? trivial-then - (let ((bar (the-longer @dots{}))) - more-complicated - @dots{} - else)) -@end example - -@node Submitting Patches, , Coding Style, Contributing -@section Submitting Patches - -Development is done using the Git distributed version control system. -Thus, access to the repository is not strictly necessary. We welcome -contributions in the form of patches as produced by @code{git -format-patch} sent to the @email{guix-patches@@gnu.org} mailing list. - -Please write commit logs in the ChangeLog format (@pxref{Change Logs,,, -standards, GNU Coding Standards}); you can check the commit history for -examples. - -@subsection Reporting Bugs - -Encountering a problem or bug can be very frustrating for you as a user -or potential contributor. For us as Mes maintainers, the preferred bug -report includes a beautiful and tested patch that we can integrate -without any effort. - -However, please don't let our preference stop you from reporting a bug. -There's one thing @emph{much} worse for us than getting a bug report -without a patch: Reading a complaint or rant online about your -frustrations and how our work sucks, without having heard directly what -you experienced. - -So if you report a problem, will it be fixed? And @strong{when}? The -most honest answer is: It depends. Let's curry that informationless -honesty with a more helpful and more blunt reminder of a mantra of free -software: - -@quotation -@table @strong -@item Q: -When will it be finished? - -@item A: -It will be ready sooner if you help. -@end table - -@author Richard Stallman -@end quotation - -@cindex contact, irc, mailing list -Join us on @code{#bootstrappable} on the Freenode IRC network or on -@email{guix-devel@@gnu.org} to share your experience---good or bad. - -@cindex bug, bug report, reporting a bug -Please send bug reports with full details to @email{bug-mes@@gnu.org}. - -@c ********************************************************************* -@node Acknowledgments, Resources, Contributing, Top -@chapter Acknowledgments - -We would like to thank the following people for their help: Jeremiah -Orians, Peter de Wachter, rain1, Ricardo Wurmus, Rutger van Beusekom. - -We also thank Ludovic Courtès for creating GNU Guix and making the -bootstrap problem so painfully visible, John McCarthy for creating -LISP-1.5 and Alan Kay for their inspiring comment on -@url{https://queue.acm.org/detail.cfm?id=1039523, Page 13}. - -@c ********************************************************************* -@node Resources, GNU Free Documentation License, Acknowledgments, Top -@chapter Resources - -@itemize - -@item -@url{https://bootstrappable.org, Bootstrappable Builds} Minimize the -amount and size of opaque binary seeds we need to swallow. - -@item -@url{https://reproducible-builds.org, Reproducible Builds} -Provide a verifiable path from source code to binary. - -@item -@url{https://gitlab.com/oriansj/stage0, Stage0} -If we want, it could all start with a ~500 byte self-hosting hex -assembler. - -@item -@url{https://bootstrapping.miraheze.org, Bootstrapping wiki} An amazing -collection of small/bootstrappable compilers, operating systems, -anything you need. - -@item -@url{irc.freenode.net, #bootstrappable} The bootstrapping community home -at the freenode IRC network. - -@item -@file{guix-devel@@gnu.org} The Guix mailing list, where it all started. -@url{https://lists.gnu.org/archive/html/guix-devel/, guix-devel archives}. - -@end itemize - -@c ********************************************************************* -@node GNU Free Documentation License, Concept Index, Resources, Top -@appendix GNU Free Documentation License -@cindex license, GNU Free Documentation License -@include fdl-1.3.texi - -@c ********************************************************************* -@node Concept Index, Programming Index, GNU Free Documentation License, Top -@unnumbered Concept Index -@printindex cp - -@node Programming Index, , Concept Index, Top -@unnumbered Programming Index -@syncodeindex tp fn -@syncodeindex vr fn -@printindex fn - -@bye - -@c Local Variables: -@c ispell-local-dictionary: "american"; -@c End: diff --git a/sysa/mes-0.22/guix.scm b/sysa/mes-0.22/guix.scm deleted file mode 100644 index 27f7ecc9..00000000 --- a/sysa/mes-0.22/guix.scm +++ /dev/null @@ -1,43 +0,0 @@ -;;; guix.scm -- Guix package definition - -;;; GNU Mes --- Maxwell Equations of Software -;;; Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen -;;; -;;; This file is part of GNU Mes. -;;; -;;; GNU Mes is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Mes is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Mes. If not, see . - -;;; Commentary: -;; -;; GNU Guix development package. To build and install, run: -;; -;; guix package -f guix.scm -;; -;; To build it, but not install it, run: -;; -;; guix build -f guix.scm -;; -;; To use as the basis for a development environment, run: -;; -;; guix environment -l guix.scm -;; -;;; Code: - -(define %source-dir (dirname (current-filename))) -(add-to-load-path (string-append %source-dir "/guix")) - -(use-modules (git mes)) - -;; Return it here so `guix build/environment/package' can consume it directly. -mes.git diff --git a/sysa/mes-0.22/guix/git/mes.scm b/sysa/mes-0.22/guix/git/mes.scm deleted file mode 100644 index fb861b88..00000000 --- a/sysa/mes-0.22/guix/git/mes.scm +++ /dev/null @@ -1,175 +0,0 @@ -;;; GNU Mes --- Maxwell Equations of Software -;;; Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen -;;; -;;; This file is part of GNU Mes. -;;; -;;; Also borrowing code from: -;;; guile-sdl2 --- FFI bindings for SDL2 -;;; Copyright © 2015 David Thompson -;;; -;;; GNU Mes is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Mes is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Mes. If not, see . - -(define-module (git mes) - #:use-module (srfi srfi-1) - #:use-module (srfi srfi-26) - #:use-module (ice-9 match) - #:use-module (ice-9 popen) - #:use-module (ice-9 rdelim) - #:use-module (gnu packages) - #:use-module (gnu packages base) - #:use-module (gnu packages commencement) - #:use-module (gnu packages cross-base) - #:use-module (gnu packages gcc) - #:use-module (gnu packages graphviz) - #:use-module (gnu packages guile) - #:use-module (gnu packages man) - #:use-module (gnu packages mes) - #:use-module (gnu packages package-management) - #:use-module (gnu packages version-control) - #:use-module (gnu packages perl) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages texinfo) - #:use-module (guix build-system gnu) - #:use-module (guix build-system trivial) - #:use-module (guix gexp) - #:use-module (guix download) - #:use-module (guix git-download) - #:use-module (guix licenses) - #:use-module (guix packages)) - -(define %source-dir (getcwd)) - -(define-public mescc-tools - (package - (name "mescc-tools") - (version "0.6.1") - (source (origin - (method url-fetch) - (uri (string-append - "http://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/" - name "-Release_" version - ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "06jpvq6xfjzn2al6b4rdwd3zv3h4cvilc4n9gqcnjr9cr6wjpw2n")))) - (build-system gnu-build-system) - (supported-systems '("i686-linux" "x86_64-linux")) - (arguments - `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")) - "CC=gcc") - #:test-target "test" - #:phases (modify-phases %standard-phases - (delete 'configure)))) - (synopsis "Tools for the full source bootstrapping process") - (description - "Mescc-tools is a collection of tools for use in a full source -bootstrapping process. It consists of the M1 macro assembler, the hex2 -linker, the blood-elf symbol table generator, the kaem shell, exec_enable and -get_machine.") - (home-page "https://savannah.nongnu.org/projects/mescc-tools") - (license gpl3+))) - -(define-public nyacc - (package - (name "nyacc") - (version "0.99.0") - (source (origin - (method url-fetch) - (uri (string-append "mirror://savannah/nyacc/nyacc-" - version ".tar.gz")) - (sha256 - (base32 - "0hl5qxx19i4x1r0839sxm19ziqq65g4hy97yik81cc2yb9yvgyv3")) - (modules '((guix build utils))) - (snippet - '(begin - (substitute* (find-files "." "^Makefile\\.in$") - (("^SITE_SCM_DIR =.*") - "SITE_SCM_DIR = \ -@prefix@/share/guile/site/@GUILE_EFFECTIVE_VERSION@\n") - (("^SITE_SCM_GO_DIR =.*") - "SITE_SCM_GO_DIR = \ -@prefix@/lib/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n") - (("^INFODIR =.*") - "INFODIR = @prefix@/share/info\n") - (("^DOCDIR =.*") - "DOCDIR = @prefix@/share/doc/$(PACKAGE_TARNAME)\n")) - #t)))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) - (inputs - `(("guile" ,guile-2.2))) - (synopsis "LALR(1) Parser Generator in Guile") - (description - "NYACC is an LALR(1) parser generator implemented in Guile. -The syntax and nomenclature should be considered not stable. It comes with -extensive examples, including parsers for the Javascript and C99 languages.") - (home-page "https://savannah.nongnu.org/projects/nyacc") - (license (list gpl3+ lgpl3+)))) - -(define-public mes - (let ((triplet "i686-unknown-linux-gnu") - (version "0.22")) - (package - (name "mes") - (version version) - (source (origin - (method url-fetch) - (uri (string-append - "https://ftp.gnu.org/pub/gnu/mes/mes-" version ".tar.gz")) - (sha256 - (base32 #!mes!# "04pajp8v31na34ls4730ig5f6miiplhdvkmsb9ls1b8bbmw2vb4n")))) - (build-system gnu-build-system) - (supported-systems '("i686-linux" "x86_64-linux")) - (propagated-inputs - `(("mescc-tools" ,mescc-tools) - ("nyacc" ,nyacc))) - (native-inputs - `(("guile" ,guile-2.2) - ,@(if (string-prefix? "x86_64-linux" (or (%current-target-system) - (%current-system))) - ;; Use cross-compiler rather than #:system "i686-linux" to get - ;; MesCC 64 bit .go files installed ready for use with Guile. - `(("i686-linux-binutils" ,(cross-binutils triplet)) - ("i686-linux-gcc" ,(cross-gcc triplet))) - '()) - ("graphviz" ,graphviz) - ("help2man" ,help2man) - ("perl" ,perl) ; build-aux/gitlog-to-changelog - ("texinfo" ,texinfo))) - (arguments - `(#:strip-binaries? #f)) ; binutil's strip b0rkes MesCC/M1/hex2 binaries - (synopsis "Scheme interpreter and C compiler for full source bootstrapping") - (description - "GNU Mes--Maxwell Equations of Software--brings the Reduced Binary Seed -bootstrap to Guix and aims to help create full source bootstrapping for -GNU/Linux distributions. It consists of a mutual self-hosting Scheme -interpreter in C and a Nyacc-based C compiler in Scheme and is compatible with -Guile.") - (home-page "https://www.gnu.org/software/mes") - (license gpl3+)))) - -(define-public mes.git - (let ((version "0.22") - (revision "0") - (commit (read-string (open-pipe "git show HEAD | head -1 | cut -d ' ' -f 2" OPEN_READ)))) - (package - (inherit mes) - (name "mes.git") - (version (string-append version "-" revision "." (string-take commit 7))) - (source (local-file %source-dir - #:recursive? #t - #:select? (git-predicate %source-dir)))))) diff --git a/sysa/mes-0.22/include/alloca.h b/sysa/mes-0.22/include/alloca.h deleted file mode 100644 index aceea860..00000000 --- a/sysa/mes-0.22/include/alloca.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_ALLOCA_H -#define __MES_ALLOCA_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_ALLOCA_H -#include_next - -#else // ! SYSTEM_LIBC - -#include - -#if _ALLOCA_UNSIGNED -void *alloca (unsigned size); -#elif _ALLOCA_CHAR -char *alloca (int); -#else -void *alloca (size_t size); -#endif - -#endif // ! SYSTEM_LIBC - -#endif // __MES_ALLOCA_H diff --git a/sysa/mes-0.22/include/ar.h b/sysa/mes-0.22/include/ar.h deleted file mode 100644 index 230f5940..00000000 --- a/sysa/mes-0.22/include/ar.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright (C) 1996 Free Software Foundation, Inc. - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_AR_H -#define __MES_AR_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_AR_H -#include_next - -#else // ! SYSTEM_LIBC - -// Taken from GNU C Library 2.2.5 - -/* Archive files start with the ARMAG identifying string. Then follows a - `struct ar_hdr', and as many bytes of member file data as its `ar_size' - member indicates, for each member file. */ - -#define ARMAG "!\n" /* String that begins an archive file. */ -#define SARMAG 8 /* Size of that string. */ - -#define ARFMAG "`\n" /* String in ar_fmag at end of each header. */ - -struct ar_hdr -{ - char ar_name[16]; /* Member file name, sometimes / terminated. */ - char ar_date[12]; /* File date, decimal seconds since Epoch. */ - char ar_uid[6], ar_gid[6]; /* User and group IDs, in ASCII decimal. */ - char ar_mode[8]; /* File mode, in ASCII octal. */ - char ar_size[10]; /* File size, in ASCII decimal. */ - char ar_fmag[2]; /* Always contains ARFMAG. */ -}; - -#endif // ! SYSTEM_LIBC - -#endif // __MES_ARGZ_H diff --git a/sysa/mes-0.22/include/argz.h b/sysa/mes-0.22/include/argz.h deleted file mode 100644 index 4664e7e4..00000000 --- a/sysa/mes-0.22/include/argz.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_ARGZ_H -#define __MES_ARGZ_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_ARGZ_H -#include_next - -#else // ! SYSTEM_LIBC - -#include - -size_t __argz_count (char const *argz, size_t len); -void __argz_extract (char const *argz, size_t len, char **argv); -size_t __argz_extract_count (char const *argz, size_t len, char **argv); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_ARGZ_H diff --git a/sysa/mes-0.22/include/assert.h b/sysa/mes-0.22/include/assert.h deleted file mode 100644 index dbd33497..00000000 --- a/sysa/mes-0.22/include/assert.h +++ /dev/null @@ -1,34 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_ASSERT_H -#define __MES_ASSERT_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_ASSERT_H -#include_next -#else // ! SYSTEM_LIBC -#define assert(x) ((x) ? (void)0 : __assert_fail (#x)) -void __assert_fail (char *s); -#endif // ! SYSTEM_LIBC - -#endif // __MES_ASSERT_H diff --git a/sysa/mes-0.22/include/ctype.h b/sysa/mes-0.22/include/ctype.h deleted file mode 100644 index 01d231a0..00000000 --- a/sysa/mes-0.22/include/ctype.h +++ /dev/null @@ -1,51 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_CTYPE_H -#define __MES_CTYPE_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_CTYPE_H -#include_next - -#else // ! SYSTEM_LIBC -#include - -int isalnum (int c); -int isalpha (int c); -int isascii (int c); -int iscntrl (int c); -int isdigit (int c); -int isgraph (int c); -int islower (int c); -int isnumber (int c, int base); -int isprint (int c); -int ispunct (int c); -int isspace (int c); -int isupper (int c); -int isxdigit (int c); -int tolower (int c); -int toupper (int c); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_CTYPE_H diff --git a/sysa/mes-0.22/include/dirent.h b/sysa/mes-0.22/include/dirent.h deleted file mode 100644 index 7b4a0787..00000000 --- a/sysa/mes-0.22/include/dirent.h +++ /dev/null @@ -1,76 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright (C) 1991, 1992 Free Software Foundation, Inc. - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#ifndef __MES_DIRENT_H -#define __MES_DIRENT_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_DIRENT_H -#include_next - -#else // ! SYSTEM_LIBC - -#include - -// Taken from GNU C Library 1.06.4, 2.2.5 - -/* - * POSIX Standard: 5.1.2 Directory Operations - */ - -#include - -int __getdirentries (int filedes, char *buffer, size_t nbytes, off_t * basep); - -struct dirent -{ - ino_t d_ino; - off_t d_off; - unsigned short int d_reclen; -#if 0 - unsigned char d_type; -#endif - char d_name[256]; /* We must not include limits.h! */ -}; - -/* Open a directory stream on NAME. - Return a DIR stream on the directory, or NULL if it could not be opened. */ -DIR *opendir (char const *name); - -/* Close the directory stream DIRP. - Return 0 if successful, -1 if not. */ -int closedir (DIR * dirp); - -/* Read a directory entry from DIRP. - Return a pointer to a `struct dirent' describing the entry, - or NULL for EOF or error. The storage returned may be overwritten - by a later readdir call on the same DIR stream. */ -struct dirent *readdir (DIR * dirp); - -/* Rewind DIRP to the beginning of the directory. */ -extern void rewinddir (DIR * dirp); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_DIRENT_H diff --git a/sysa/mes-0.22/include/dirstream.h b/sysa/mes-0.22/include/dirstream.h deleted file mode 100644 index f648b96c..00000000 --- a/sysa/mes-0.22/include/dirstream.h +++ /dev/null @@ -1,55 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - *Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc. - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#ifndef __MES_DIRSTREAM_H -#define __MES_DIRSTREAM_H 1 - -#if SYSTEM_LIBC && HAVE_DIRSTREAM_H -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_DIRSTREAM_H -#include_next - -#else // ! SYSTEM_LIBC - -#include - -// Taken from GNU C Library 2.2.5 - -/* Directory stream type. */ -struct __dirstream -{ - int fd; /* File descriptor. */ - - char *data; /* Directory block. */ - size_t allocation; /* Space allocated for the block. */ - size_t size; /* Total valid data in the block. */ - size_t offset; /* Current offset into the block. */ - - off_t filepos; /* Position of next entry to read. */ -}; - -typedef struct __dirstream DIR; - -#endif // ! SYSTEM_LIBC - -#endif // __MES_DIRSTREAM_H diff --git a/sysa/mes-0.22/include/dlfcn.h b/sysa/mes-0.22/include/dlfcn.h deleted file mode 100644 index 9dbea76b..00000000 --- a/sysa/mes-0.22/include/dlfcn.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_DLFCN_H -#define __MES_DLFCN_H 1 - -#if SYSTEM_LIBC -#undef __MES_DLFCN_H -#include_next - -#else // ! SYSTEM_LIBC - -#define RTLD_LAZY 0x00001 -#define RTLD_NOW 0x00002 -#define RTLD_BINDING_MASK 0x3 -#define RTLD_NOLOAD 0x00004 -#define RTLD_DEEPBIND 0x00008 -#define RTLD_GLOBAL 0x00100 -#define RTLD_LOCAL 0 -#define RTLD_NODELETE 0x01000 -#define RTLD_DEFAULT 0 - -void *dlopen (char const *filename, int flags); -int dlclose (void *handle); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_DLFCN_H diff --git a/sysa/mes-0.22/include/endian.h b/sysa/mes-0.22/include/endian.h deleted file mode 100644 index 621f0757..00000000 --- a/sysa/mes-0.22/include/endian.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_ENDIAN_H -#define __MES_ENDIAN_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_ENDIAN_H -#include_next - -#else // ! SYSTEM_LIBC -#define __LITTLE_ENDIAN 1234 -#define __BIG_ENDIAN 4321 -#define __BYTE_ORDER __LITTLE_ENDIAN -#endif // ! SYSTEM_LIBC - -#endif // __MES_ENDIAN_H diff --git a/sysa/mes-0.22/include/errno.h b/sysa/mes-0.22/include/errno.h deleted file mode 100644 index 7ac1ebe9..00000000 --- a/sysa/mes-0.22/include/errno.h +++ /dev/null @@ -1,72 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_ERRNO_H -#define __MES_ERRNO_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_ERRNO_H -#include_next -#else // ! SYSTEM_LIBC - -#ifndef __MES_ERRNO_T -#define __MES_ERRNO_T 1 -typedef int error_t; -int errno; -#endif // !__MES_ERRNO_T - -int errno; -#define ENOENT 2 -#define EINTR 4 -#define EIO 5 -#define ENXIO 6 -#define E2BIG 7 -#define ENOEXEC 8 -#define EBADF 9 -#define ECHILD 10 -#define EAGAIN 11 -#define ENOMEM 12 -#define EACCES 13 -#define EEXIST 17 -#define EXDEV 18 -#define ENOTDIR 20 -#define EISDIR 21 -#define EINVAL 22 -#define EMFILE 24 -#define ENOSPC 28 -#define ESPIPE 29 -#define EPIPE 32 -#define ERANGE 34 - -#define ENAMETOOLONG 36 -#define ENOSYS 38 -#define ELOOP 40 - -#if !__MESC__ -//extern char const *const sys_errlist[]; -extern char *sys_errlist[]; -extern int sys_nerr; -#endif // !__MESC__ - -#endif // ! SYSTEM_LIBC - -#endif // __MES_ERRNO_H diff --git a/sysa/mes-0.22/include/fcntl.h b/sysa/mes-0.22/include/fcntl.h deleted file mode 100644 index bfb870df..00000000 --- a/sysa/mes-0.22/include/fcntl.h +++ /dev/null @@ -1,70 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_FCNTL_H -#define __MES_FCNTL_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_FCNTL_H -#include_next - -#else // ! SYSTEM_LIBC - -// *INDENT-OFF* -#if __linux__ -#define O_RDONLY 0 -#define O_WRONLY 1 -#define O_RDWR 2 -#define O_CREAT 0x40 -#define O_EXCL 0x80 -#define O_TRUNC 0x200 -#define O_APPEND 0x400 -#define O_DIRECTORY 0x10000 -#elif __GNU__ -#define O_RDONLY 1 -#define O_WRONLY 2 -#define O_RDWR 3 -#define O_CREAT 0x10 -#define O_APPEND 0x100 -#define O_TRUNC 0x10000 -#else -#error platform not supported -#endif -// *INDENT-ON* - -#define FD_CLOEXEC 1 - -#define F_DUPFD 0 -#define F_GETFD 1 -#define F_SETFD 2 -#define F_GETFL 3 -#define F_SETFL 4 - -#define creat(file_name, mode) open (file_name, O_WRONLY | O_CREAT | O_TRUNC, mode) -int dup (int old); -int dup2 (int old, int new); -int fcntl (int filedes, int command, ...); -int open (char const *s, int flags, ...); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_FCNTL_H diff --git a/sysa/mes-0.22/include/features.h b/sysa/mes-0.22/include/features.h deleted file mode 100644 index c1c161a6..00000000 --- a/sysa/mes-0.22/include/features.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_FEATURES_H -#define __MES_FEATURES_H 1 - -#if SYSTEM_LIBC -#undef __MES_FEATURES_H -#include_next -#endif // (SYSTEM_LIBC) - -#endif // __MES_FEATURES_H diff --git a/sysa/mes-0.22/include/float.h b/sysa/mes-0.22/include/float.h deleted file mode 100644 index b5aeba3a..00000000 --- a/sysa/mes-0.22/include/float.h +++ /dev/null @@ -1,34 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_FLOAT_H -#define __MES_FLOAT_H 1 - -#if SYSTEM_LIBC -#undef __MES_FLOAT_H -#include_next -#else // ! SYSTEM_LIBC - -#define MIN_EXP -1021 -#define DBL_MIN_EXP -1021 -#define LDBL_MIN_EXP -1021 - -#endif // ! SYSTEM_LIBC - -#endif // __MES_FLOAT_H diff --git a/sysa/mes-0.22/include/getopt.h b/sysa/mes-0.22/include/getopt.h deleted file mode 100644 index 23d8693b..00000000 --- a/sysa/mes-0.22/include/getopt.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. - * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_GETOPT_H -#define __MES_GETOPT_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_GETOPT_H -#include_next - -#else // ! SYSTEM_LIBC -#include -int isdigit (int); -int isxdigit (int); - -char *optarg; -int optind; -int opterr; -struct option -{ - char const *name; - int has_arg; - int *flag; - int val; -}; - -enum _argtype -{ - no_argument, - required_argument, - optional_argument -}; - -int getopt (int argc, char *const *argv, char const *options); -int getopt_long (int argc, char *const *argv, char const *options, - struct option const *long_options, int *opt_index); -int getopt_long_only (int argc, char *const *argv, char const *options, - struct option const *long_options, int *opt_index); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_GETOPT_H diff --git a/sysa/mes-0.22/include/gnu/hurd-types.h b/sysa/mes-0.22/include/gnu/hurd-types.h deleted file mode 100644 index a156b64e..00000000 --- a/sysa/mes-0.22/include/gnu/hurd-types.h +++ /dev/null @@ -1,393 +0,0 @@ -/* C declarations for Hurd server interfaces - Copyright (C) 1993, 1994, 1995, 1996, 1998, 1999, 2001, 2002, - 2010 Free Software Foundation, Inc. - -This file is part of the GNU Hurd. - -The GNU Hurd is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -The GNU Hurd is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with the GNU Hurd; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifndef _HURD_TYPES_H -#define _HURD_TYPES_H - -#ifndef _FILE_OFFSET_BITS -#define _FILE_OFFSET_BITS 32 -#endif - -#include /* For struct timespec. */ -#include /* For mach_port_t et al. */ -#include /* For mach_msg_id_t et al. */ -#include /* For pid_t and uid_t. */ - -/* A string identifying this release of the GNU Hurd. Our - interpretation of the term "release" is that it refers to a set of - server interface definitions. A "version" in Posix terminology is - a distribution of the Hurd; there may be more than one distribution - without changing the release number. */ -#define HURD_RELEASE "0.0" - - -/* Simple type declarations */ - -/* These types identify certain kinds of ports used by the Hurd. */ -typedef mach_port_t file_t; -typedef mach_port_t fsys_t; -typedef mach_port_t io_t; -typedef mach_port_t process_t; -typedef mach_port_t auth_t; -typedef mach_port_t socket_t; -typedef mach_port_t pf_t; /* Protocol family */ -typedef mach_port_t addr_port_t; -typedef mach_port_t startup_t; -typedef mach_port_t fs_notify_t; -typedef mach_port_t exec_startup_t; -typedef mach_port_t interrupt_t; -typedef mach_port_t proccoll_t; -typedef mach_port_t ctty_t; - -#include /* Defines `error_t'. */ - -/* These names exist only because of MiG deficiencies. - You should not use them in C source; use the normal C types instead. */ -typedef char *data_t; -typedef const char *const_data_t; -typedef char string_t [1024]; -typedef int *intarray_t; -typedef const int *const_intarray_t; -typedef int *fd_mask_t; -typedef const int *const_fd_mask_t; -typedef mach_port_t *portarray_t; -typedef const mach_port_t *const_portarray_t; -typedef pid_t *pidarray_t; -typedef const pid_t *const_pidarray_t; -typedef uid_t *idarray_t; -typedef const uid_t *const_idarray_t; -#if 0 -typedef __loff_t *off_array_t; -typedef const __loff_t *const_off_array_t; -#endif -typedef struct rusage rusage_t; -typedef struct flock flock_t; -typedef struct utsname utsname_t; -#if _FILE_OFFSET_BITS == 64 -typedef struct stat io_statbuf_t; -typedef struct statfs fsys_statfsbuf_t; -#else -typedef struct stat64 io_statbuf_t; -typedef struct statfs64 fsys_statfsbuf_t; -#endif -typedef struct timespec timespec_t; - - -/* Parameters and flags in RPC calls */ - -/* Many such parameters and flags are also defined in various libc - headers. */ - -/* Bits for flags in fs.defs:file_exec_paths and exec.defs:exec_* calls: */ -#define EXEC_NEWTASK 0x00000001 /* Create new task; kill old one. */ -#define EXEC_SECURE 0x00000002 /* Use secure values of portarray, etc. */ -#define EXEC_DEFAULTS 0x00000004 /* Use defaults for unspecified ports. */ -#define EXEC_SIGTRAP 0x00000008 /* Simulate SIGTRAP on startup. */ -/* This flag is passed through by the exec server but not examined by it. */ -#define EXEC_STACK_ARGS 0x00000010 /* Use arguments from stack, not RPC. */ - -/* Bits for flags in fs.defs:file_set_translator call: */ -#define FS_TRANS_FORCE 0x00000001 /* Must use translator(no sht circuit) */ -#define FS_TRANS_EXCL 0x00000002 /* Don't do it if already translated. */ -#define FS_TRANS_SET 0x00000004 /* Set or clear translator */ -#define FS_TRANS_ORPHAN 0x00000008 /* Orphan the active translator. */ - -/* Values for retry field in fs.defs:dir_lookup call: */ -enum retry_type -{ - FS_RETRY_NORMAL = 1, /* Retry normally if retry_name is not null. */ - FS_RETRY_REAUTH = 2, /* Retry after reauthenticating retry port. - Even if the retry name is null, a retry - is still necessary with this code after the - reauthentication is complete. */ - FS_RETRY_MAGICAL = 3, /* Retry string is magical. */ - /* "tty" means controlling tty; - - "fd/%u" means file descriptor N; - - "machtype/..." means replace `machtype' with the numbers in decimal - returned by the user's kernel as the cpu_type (N) and - cpu_subtype (M) (producing N/M/...) and then retry - as for FS_RETRY_NORMAL. - - "/..." means retry "...", but starting from the users root directory. - - "pid/..." means replace `pid' with the PID of the current process in %u - format and then retry as for FS_RETRY_NORMAL. - */ -}; -typedef enum retry_type retry_type; - -/* Types for fs_notify.defs:dir_changed call: */ -enum dir_changed_type -{ - DIR_CHANGED_NULL, /* Always sent first for sync. */ - DIR_CHANGED_NEW, /* Specified name has been added. */ - DIR_CHANGED_UNLINK, /* Specified name has been removed. */ - DIR_CHANGED_RENUMBER, /* Name has been the target of rename. */ -}; -typedef enum dir_changed_type dir_changed_type_t; - -/* Types for fs_notify.defs:file_changed call: */ -enum file_changed_type -{ - FILE_CHANGED_NULL, /* Always sent first for sync. */ - FILE_CHANGED_WRITE, /* File data has been written. */ - FILE_CHANGED_EXTEND, /* File has grown. */ - FILE_CHANGED_TRUNCATE, /* File has been truncated. */ - FILE_CHANGED_META, /* Stat information has changed, and none - of the previous three apply. Not sent - for changes in node times. */ -}; -typedef enum file_changed_type file_changed_type_t; - -/* Select types for io.defs:io_select call: */ -#define SELECT_READ 0x00000001 -#define SELECT_WRITE 0x00000002 -#define SELECT_URG 0x00000004 - -/* Flags for fsys.defs:fsys_goaway. Also, these flags are sent as the - oldtrans_flags in fs.defs:file_set_translator to describe how to - terminate the old translator. */ -#define FSYS_GOAWAY_NOWAIT 0x00000001 /* Return immediately. */ -#define FSYS_GOAWAY_NOSYNC 0x00000002 /* Don't update physical media. */ -#define FSYS_GOAWAY_FORCE 0x00000004 /* Go away despite current users. */ -#define FSYS_GOAWAY_UNLINK 0x00000008 /* Go away only if non-directory. */ -#define FSYS_GOAWAY_RECURSE 0x00000010 /* Shutdown children too. */ - -/* Types of ports the terminal driver can run on top of; - used in term.defs:term_get_bottom_type. */ -enum term_bottom_type -{ - TERM_ON_MACHDEV, - TERM_ON_HURDIO, - TERM_ON_MASTERPTY, -}; - -/* Types of storage, as returned by file_get_storage_info. - - STORAGE_DEVICE is a mach device_t (for random access devices) - STORAGE_HURD_FILE is a hurd file_t (as if a file were mapped) - STORAGE_TASK is a task_t (the storage is in the vm of the task) - STORAGE_MEMORY is a memory object port - STORAGE_ZERO is a fixed-size constant source of zeros - STORAGE_INTERLEAVE is a set of other storage types interleaved at a fixed - interval - STORAGE_CONCAT is a set of other storage types concatenated end-to-end - STORAGE_LAYER is a set of storage types, representing the same address - range; all will be written too, and will be read in turn until one - succeeds - STORAGE_REMAP is a layer on top of another store that remaps its blocks - STORAGE_COPY is a memory snapshot of another store - STORAGE_NETWORK means that the file is stored elsewhere on the - network; all the remaining fields contan type-specific information. - STORAGE_OTHER means none of these apply; and should be used when no - meaningful answer can be given - - The vectors returned by file_get_storage_info encode each of the above - (note that the first int is always the storage type). There are four: - ports, ints, offsets (off_t), and data (char); each type of store uses the - following entries in each vector: - - -type- -ports- -ints- -offsets- -data- -kids- - device DEVICE TY, FL, BS, NR, NL, ML NR * (OFFS, LEN) NL + ML - - file FILE TY, FL, BS, NR, NL, ML NR * (OFFS, LEN) NL + ML - - memory MEMOBJ TY, FL, BS, NR, NL, ML NR * (OFFS, LEN) NL + ML - - task TASK TY, FL, BS, NR, NL, ML NR * (OFFS, LEN) NL + ML - - (the data for the above is a name (incl '\0') and a misc data block) - null - TY, FL SIZE - - - (BS is 1) - ileave - TY, FL, IL, NC - - NC - (BS is the LCM of its children; SIZE is the minimum of theirs * IL) - concat - TY, FL, NC - - NC - (BS is the LCM of its children; SIZE is the sum of theirs) - layer - TY, FL, NC - - NC - (BS is the LCM of its children; SIZE is the minimum of theirs) - remap - TY, FL, NR NR * (OFFS, LEN) - 1 - (BS and SIZE are that of the child) - copy - TY, FL, SIZE - DATA - - (DATA is preceded by padding to the next page boundary, and is - SIZE bytes long itself) - - For ileave, concat, and layer, the children are encoded following the parent. - The first int must always be TY. - - key: TY = type code, FL = flags, BS = block size, NR = num runs, - NL = name len, ML = misc len, NC = num children, - IL = interleave (bytes), SIZE = Size of storage (blocks), - LEN = run length (blocks), OFFS = run offset (blocks), - - The NR * (OFFS, LEN) offsets for some of the types is the set of block - ranges in the underlying address space that, concatenated, make up the - contents of the storage -- for instance, doing file_get_storage_info on a - file may return storage of type STORAGE_DEVICE, and the accompanying block - ranges are the set of blocks on the given device that correspond to that - file. Any OFFS == -1 designates a hole in the address range. Note that - the total size (SIZE) for these types is the sum of their LEN's. - - The optional NAME returned by some types (if NL != 0) is a type specific - name for the same object referenced by the port also returned. E.g.: - device -- The mach device name - file -- The file name (unreliable, as the root may not be the same) - task -- The pid - Unless it is MACH_PORT_NULL, the port should generally be used instead of - trying to regenerate it from the associated name, which is intended more for - printing messages, etc. */ -enum file_storage_class -{ - STORAGE_OTHER, - STORAGE_DEVICE, - STORAGE_HURD_FILE, - STORAGE_NETWORK, - STORAGE_MEMORY, - STORAGE_TASK, - STORAGE_ZERO, - STORAGE_CONCAT, - STORAGE_INTERLEAVE, - STORAGE_LAYER, - STORAGE_REMAP, - STORAGE_COPY, -}; - -/* Flags for the flags word returned by some types . */ -#define STORAGE_MUTATED 0x00000001 /* data as stored is munged from file */ - -/* Data types */ - -#include -#include -#ifndef THREAD_SCHED_INFO -#include -#endif - -/* Flags sent in proc_getprocinfo request. */ -#define PI_FETCH_TASKINFO 0x0001 -#define PI_FETCH_TASKEVENTS 0x0020 -#define PI_FETCH_THREADS 0x0002 -#define PI_FETCH_THREAD_BASIC 0x0004 -#define PI_FETCH_THREAD_SCHED 0x0008 -#define PI_FETCH_THREAD_WAITS 0x0010 - -struct procinfo -{ - int state; - uid_t owner; - pid_t ppid; - pid_t pgrp; - pid_t session; - pid_t logincollection; - int exitstatus; - int sigcode; - - int nthreads; /* size of pi_threadinfos */ - - struct task_basic_info taskinfo; - struct task_events_info taskevents; -#ifdef TASK_SCHED_TIMESHARE_INFO - struct policy_timeshare_base timeshare_base_info; -#endif - struct - { - int died; /* this thread died in the middle of call */ - mach_msg_id_t rpc_block; /* thread is blocked on this RPC */ - struct thread_basic_info pis_bi; -#ifdef THREAD_SCHED_INFO - struct thread_sched_info pis_si; -#else - struct policy_infos pis_pi; -#endif - } threadinfos[0]; -}; -typedef int *procinfo_t; -typedef const int *const_procinfo_t; - -/* Bits in struct procinfo state: */ -#define PI_STOPPED 0x00000001 /* Proc server thinks is stopped. */ -#define PI_EXECED 0x00000002 /* Has called proc_exec. */ -#define PI_WAITING 0x00000004 /* Process is waiting for child to exit */ -#define PI_ORPHAN 0x00000008 /* Process group is orphaned. */ -#define PI_NOMSG 0x00000010 /* Process has no message port. */ -#define PI_SESSLD 0x00000020 /* Session leader. */ -#define PI_NOTOWNED 0x0000040 /* Process has no owner. */ -#define PI_NOPARENT 0x0000080 /* Hasn't identified a parent. */ -#define PI_ZOMBIE 0x00000100 /* Has no associated task. */ -#define PI_TRACED 0x00000200 /* Process is being traced */ -#define PI_GETMSG 0x00000400 /* Process is blocked in proc_getmsgport. */ -#define PI_LOGINLD 0x00000800 /* Process is leader of login collection */ - - -/* Conventions */ - - -/* st_fstype in struct stat and fsys_stb_type in fsys_statfsbuf is one of: */ -#define FSTYPE_UFS 0x00000000 /* 4.x BSD Fast File System */ -#define FSTYPE_NFS 0x00000001 /* Network File System ala Sun */ -#define FSTYPE_GFS 0x00000002 /* GNU file system */ -#define FSTYPE_LFS 0x00000003 /* Logging File System ala Sprite */ -#define FSTYPE_SYSV 0x00000004 /* Old U*x filesystem ala System V */ -#define FSTYPE_FTP 0x00000005 /* Transparent FTP */ -#define FSTYPE_TAR 0x00000006 /* Transparent TAR */ -#define FSTYPE_AR 0x00000007 /* Transparent AR */ -#define FSTYPE_CPIO 0x00000008 /* Transparent CPIO */ -#define FSTYPE_MSLOSS 0x00000009 /* MS-DOS */ -#define FSTYPE_CPM 0x0000000a /* CP/M */ -#define FSTYPE_HFS 0x0000000b /* Don't ask */ -#define FSTYPE_DTFS 0x0000000c /* used by desktop to provide more info */ -#define FSTYPE_GRFS 0x0000000d /* GNU Remote File System */ -#define FSTYPE_TERM 0x0000000e /* GNU Terminal driver */ -#define FSTYPE_DEV 0x0000000f /* GNU Special file server */ -#define FSTYPE_PROC 0x00000010 /* /proc filesystem ala Version 9 */ -#define FSTYPE_IFSOCK 0x00000011 /* PF_LOCAL socket naming point */ -#define FSTYPE_AFS 0x00000012 /* Andrew File System 3.xx */ -#define FSTYPE_DFS 0x00000013 /* Distributed File Sys (OSF) == AFS 4.xx */ -#define FSTYPE_PROC9 0x00000014 /* /proc filesystem ala Plan 9 */ -#define FSTYPE_SOCKET 0x00000015 /* io_t that isn't a file but a socket */ -#define FSTYPE_MISC 0x00000016 /* generic trivfs server */ -#define FSTYPE_EXT2FS 0x00000017 /* Linux filesystem by Remy Card */ -#define FSTYPE_HTTP 0x00000018 /* Transparent HTTP */ -#define FSTYPE_MEMFS 0x00000019 /* In-core filesystem */ -#define FSTYPE_ISO9660 0x0000001a /* ISO9660 */ - -/* Standard port assignments for file_exec_paths and exec_* */ -enum - { - INIT_PORT_CWDIR, - INIT_PORT_CRDIR, - INIT_PORT_AUTH, - INIT_PORT_PROC, - INIT_PORT_CTTYID, - /* If MACH_PORT_NULL is given for the bootstrap port, - the bootstrap port of the old task is used. */ - INIT_PORT_BOOTSTRAP, - INIT_PORT_MAX - }; - -/* Standard ints for file_exec_paths and exec_* */ -enum - { - INIT_UMASK, - INIT_SIGMASK, - INIT_SIGIGN, - INIT_SIGPENDING, - INIT_TRACEMASK, - INIT_INT_MAX, - }; - -#endif // _HURD_TYPES_H diff --git a/sysa/mes-0.22/include/gnu/hurd.h b/sysa/mes-0.22/include/gnu/hurd.h deleted file mode 100644 index 0d6a23f4..00000000 --- a/sysa/mes-0.22/include/gnu/hurd.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#ifndef __MES_GNU_HURD_H -#define __MES_GNU_HURD_H - -#define _GNU_SOURCE 1 -#define __USE_GNU 1 - -#include -#include - -#ifndef _BITS_TYPES_H -#ifndef _LOFF_T -#define _LOFF_T -typedef off64_t loff_t; -#endif -#endif - -#include -#include -#include - -struct hurd_startup_data - { - int flags; - - mach_port_t *dtable; - mach_msg_type_number_t dtable_count; - - char *argp; - int arg_size; - - char *envp; - int env_size; - - mach_port_t *portarray; - mach_msg_type_number_t portarray_count; - - int *intarray; - mach_msg_type_number_t intarray_count; - - vm_address_t stack_base; - vm_size_t stack_count; - - vm_address_t phdr; - vm_size_t phdr_count; - - vm_address_t user_entry; - }; - -#define _HURD_DTABLE_MAX 1024 -extern mach_port_t _hurd_dtable[_HURD_DTABLE_MAX]; -extern int _hurd_dtable_count; -extern struct hurd_startup_data _hurd_startup_data; - -#define _HURD_ARGV_MAX 1000 -#define _HURD_ENVV_MAX 1000 -extern size_t __argc; -extern char *__argv[_HURD_ARGV_MAX]; -extern char *__envv[_HURD_ENVV_MAX]; - -mach_port_t fd_get (int filedes); -error_t fd_write (mach_port_t port, void const *buffer, size_t *size, loff_t offset); -error_t fd_read (mach_port_t port, void *buffer, size_t *size, loff_t offset); - -#endif // __MES_GNU_HURD_H diff --git a/sysa/mes-0.22/include/gnu/syscall.h b/sysa/mes-0.22/include/gnu/syscall.h deleted file mode 100644 index 8d20f9da..00000000 --- a/sysa/mes-0.22/include/gnu/syscall.h +++ /dev/null @@ -1,144 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#ifndef __MES_GNU_SYSCALL_H -#define __MES_GNU_SYSCALL_H - -#define _GNU_SOURCE 1 -#define __USE_GNU 1 - -#include -#include -#include -#include -#include - -// mach/mach.defs -enum - { - SYS__task_terminate = 2008, - SYS__vm_allocate = 2021, - SYS__vm_statistics = 2030, - SYS__task_get_special_port = 2058, - }; - -// hurd/fsys.defs -enum - { - SYS__dir_lookup = 20018, - }; - -// hurd/io.defs -enum - { - SYS__io_write = 21000, - SYS__io_read, - }; - -// hurd/process.defs -enum - { - SYS__proc_mark_exit = 24025, - }; - -// hurd/startup.defs -enum - { - SYS__exec_startup_get_info = 30500, - }; - -extern mach_msg_type_t mach_msg_type_int32; -extern mach_msg_type_t mach_msg_type_int64; -extern mach_msg_type_long_t mach_msg_type_pointer; - -struct mach_msg -{ - mach_msg_header_t header; -}; - -struct mach_msg_1 -{ - mach_msg_header_t header; - mach_msg_type_t type_one; int one; -}; - -struct mach_msg_2 -{ - mach_msg_header_t header; - mach_msg_type_t type_one; int one; - mach_msg_type_t type_two; int two; -}; - -struct mach_msg_loff_int -{ - mach_msg_header_t header; - mach_msg_type_t type_one; loff_t one; - mach_msg_type_t type_two; int two; -}; - -struct mach_msg_startup_info -{ - mach_msg_header_t header; - mach_msg_type_t RetCodeType; - kern_return_t RetCode; - mach_msg_type_t user_entryType; - vm_address_t user_entry; - mach_msg_type_t phdrType; - vm_address_t phdr; - mach_msg_type_t phdr_sizeType; - vm_size_t phdr_size; - mach_msg_type_t stack_baseType; - vm_address_t stack_base; - mach_msg_type_t stack_sizeType; - vm_size_t stack_size; - mach_msg_type_t flagsType; - int flags; - mach_msg_type_long_t argvType; - char *argv; - mach_msg_type_long_t envpType; - char *envp; - mach_msg_type_long_t dtableType; - mach_port_t *dtable; - mach_msg_type_long_t portarrayType; - mach_port_t *portarray; - mach_msg_type_long_t intarrayType; - int *intarray; -}; - -kern_return_t __syscall (mach_port_t port, int sys_call); -kern_return_t __syscall2 (mach_port_t port, int sys_call, int one, int two); -kern_return_t __syscall_get (mach_port_t port, int sys_call, mach_msg_header_t *message, size_t size); -kern_return_t __syscall_put (mach_port_t port, int sys_call, mach_msg_header_t *message, size_t size); - -// mach.defs -kern_return_t __task_terminate (mach_port_t task); -kern_return_t __task_get_special_port (mach_port_t task, int which, mach_port_t *port); -kern_return_t __vm_allocate (mach_port_t task, vm_address_t *address, vm_size_t size, boolean_t anywhere); -kern_return_t __vm_statistics (mach_port_t task, vm_statistics_data_t *vm_stats); - -// process.defs -kern_return_t __proc_mark_exit (mach_port_t process, int one, int two); -kern_return_t __exec_startup_get_data (mach_port_t bootstrap, struct hurd_startup_data *data); - -// io.c -kern_return_t __io_write (io_t io_object, data_t data, mach_msg_type_number_t size, loff_t offset, vm_size_t *wrote); -kern_return_t __io_read (io_t io, data_t *data, mach_msg_type_number_t *read, loff_t offset, vm_size_t size); - -#endif // __MES_GNU_SYSCALL_H diff --git a/sysa/mes-0.22/include/grp.h b/sysa/mes-0.22/include/grp.h deleted file mode 100644 index a67e5227..00000000 --- a/sysa/mes-0.22/include/grp.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_GRP_H -#define __MES_GRP_H 1 - -#if SYSTEM_LIBC -#undef __MES_GRP_H -#include_next -#else // ! SYSTEM_LIBC - -#include - -struct group -{ - char *gr_name; - gid_t gr_gid; - char **gr_mem; -}; - -struct group *getgrent (void); -void endgrent (void); -void setgrent (void); -struct group *getgrgid (gid_t gid); -struct group *getgrnam (char const *name); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_GRP_H diff --git a/sysa/mes-0.22/include/inttypes.h b/sysa/mes-0.22/include/inttypes.h deleted file mode 100644 index 5c56ad9b..00000000 --- a/sysa/mes-0.22/include/inttypes.h +++ /dev/null @@ -1,34 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_INTTYPES_H -#define __MES_INTTYPES_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_INTTYPES_H -#include_next -#else // ! SYSTEM_LIBC - -#include -#endif // ! SYSTEM_LIBC - -#endif // __MES_INTTYPES_H diff --git a/sysa/mes-0.22/include/libgen.h b/sysa/mes-0.22/include/libgen.h deleted file mode 100644 index 3e5aa193..00000000 --- a/sysa/mes-0.22/include/libgen.h +++ /dev/null @@ -1,34 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_LIBGEN_H -#define __MES_LIBGEN_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_LIBGEN_H -#include_next - -#else // ! SYSTEM_LIBC -char *dirname (char *); -#endif // ! SYSTEM_LIBC - -#endif // __MES_LIBGEN_H diff --git a/sysa/mes-0.22/include/limits.h b/sysa/mes-0.22/include/limits.h deleted file mode 100644 index 9cbbf97a..00000000 --- a/sysa/mes-0.22/include/limits.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_LIMITS_H -#define __MES_LIMITS_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_LIMITS_H -#include_next - -#else // ! SYSTEM_LIBC - -#include - -#define MB_CUR_MAX 1 -#define NAME_MAX 255 -#define PATH_MAX 512 -#define _POSIX_OPEN_MAX 16 - -#endif // ! SYSTEM_LIBC - -#endif // __MES_LIMITS_H diff --git a/sysa/mes-0.22/include/linux/syscall.h b/sysa/mes-0.22/include/linux/syscall.h deleted file mode 100644 index 0af5fd70..00000000 --- a/sysa/mes-0.22/include/linux/syscall.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#ifndef __MES_SYSCALL_H -#define __MES_SYSCALL_H - -long _sys_call (long sys_call); -long _sys_call1 (long sys_call, long one); -long _sys_call2 (long sys_call, long one, long two); -long _sys_call3 (long sys_call, long one, long two, long three); -long _sys_call4 (long sys_call, long one, long two, long three, long four); -long _sys_call6 (long sys_call, long one, long two, long three, long four, long five, long six); - -#endif //__MES_SYSCALL_H diff --git a/sysa/mes-0.22/include/linux/x86/syscall.h b/sysa/mes-0.22/include/linux/x86/syscall.h deleted file mode 100644 index e8de351a..00000000 --- a/sysa/mes-0.22/include/linux/x86/syscall.h +++ /dev/null @@ -1,91 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_LINUX_X86_SYSCALL_H -#define __MES_LINUX_X86_SYSCALL_H 1 - -// libc-mini -// #define SYS_exit 0x01 -// #define SYS_write 0x04 - -// libc -#define SYS_fork 0x02 -#define SYS_read 0x03 -#define SYS_open 0x05 -#define SYS_waitpid 0x07 -#define SYS_wait4 0x72 -#define SYS_execve 0x0b -#define SYS_chmod 0x0f -#define SYS_access 0x21 -#define SYS_brk 0x2d -#define SYS_ioctl 0x36 -#define SYS_fsync 0x76 - -// libc+tcc -#define SYS_close 0x06 -#define SYS_time 0x0d -#define SYS_lseek 0x13 -#define SYS_unlink 0x0a -#define SYS_rmdir 0x28 -#define SYS_gettimeofday 0x4e -#define SYS_stat 0x6a -#define SYS_getcwd 0xb7 - -// libc+gnu - -#define SYS_chdir 0x0c -#define SYS_link 0x09 -#define SYS_getpid 0x14 -#define SYS_getuid 0x18 -#define SYS_kill 0x25 -#define SYS_rename 0x26 -#define SYS_mkdir 0x27 -#define SYS_dup 0x29 -#define SYS_pipe 0x2a -#define SYS_getgid 0x2f -#define SYS_signal 0x30 -#define SYS_sigaction 0x43 -#define SYS_rt_sigaction 0xae -#define SYS_signal 0x30 -#define SYS_fcntl 0x37 -#define SYS_dup2 0x3f -#define SYS_getrusage 0x4d -#define SYS_lstat 0x6b -#define SYS_setitimer 0x68 -#define SYS_fstat 0x6c -#define SYS_nanosleep 0xa2 -#define SYS_getdents 0x8d -#define SYS_clock_gettime 0x109 - -// bash -#define SYS_setuid 0x17 -#define SYS_geteuid 0x31 -#define SYS_getegid 0x32 -#define SYS_setgid 0x3e -#define SYS_getppid 0x40 - -// make+POSIX -#define SYS_sigprocmask 0x7e - -// tar -#define SYS_symlink 0x53 -#define SYS_readlink 0x55 -#define SYS_mknod 0x0e - -#endif // __MES_LINUX_X86_SYSCALL_H diff --git a/sysa/mes-0.22/include/linux/x86_64/syscall.h b/sysa/mes-0.22/include/linux/x86_64/syscall.h deleted file mode 100644 index 36ef06bc..00000000 --- a/sysa/mes-0.22/include/linux/x86_64/syscall.h +++ /dev/null @@ -1,88 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_LINUX_X86_64_SYSCALL_H -#define __MES_LINUX_X86_64_SYSCALL_H 1 - -// libc-mini -// #define SYS_write 0x01 -// #define SYS_exit 0x3c - -// libc -#define SYS_fork 0x39 -#define SYS_read 0x00 -#define SYS_open 0x02 -//#define SYS_waitpid -#define SYS_wait4 0x3d -#define SYS_execve 0x3b -#define SYS_chmod 0x5a -#define SYS_access 0x15 -#define SYS_brk 0x0c -#define SYS_ioctl 0x10 -#define SYS_fsync 0x4a - -// libc+tcc -#define SYS_close 0x03 -#define SYS_time 0xc9 -#define SYS_lseek 0x08 -#define SYS_unlink 0x57 -#define SYS_rmdir 0x54 -#define SYS_gettimeofday 0x60 -#define SYS_stat 0x04 -#define SYS_getcwd 0x4f - -// libc+gnu -#define SYS_chdir 0x50 -#define SYS_link 0x56 -#define SYS_getpid 0x27 -#define SYS_getuid 0x66 -#define SYS_kill 0x3e -#define SYS_rename 0x52 -#define SYS_mkdir 0x53 -#define SYS_dup 0x20 -#define SYS_pipe 0x16 -#define SYS_getgid 0x68 -#define SYS_rt_sigaction 0x0d -#define SYS_rt_sigreturn 0x0f -#define SYS_fcntl 0x48 -#define SYS_dup2 0x21 -#define SYS_getrusage 0x62 -#define SYS_lstat 0x06 -#define SYS_setitimer 0x26 -#define SYS_fstat 0x05 -#define SYS_nanosleep 0x33 -#define SYS_getdents 0x4e -#define SYS_clock_gettime 0xe4 - -// bash -#define SYS_setuid 0x69 -#define SYS_setgid 0x6a -#define SYS_geteuid 0x6b -#define SYS_getegid 0x6c -#define SYS_getppid 0x6e - -// make+SYSTEM_LIBC -#define SYS_rt_sigprocmask 0x0e - -// tar -#define SYS_symlink 0x58 -#define SYS_readlink 0x59 -#define SYS_mknod 0x85 - -#endif // __MES_LINUX_X86_64_SYSCALL_H diff --git a/sysa/mes-0.22/include/locale.h b/sysa/mes-0.22/include/locale.h deleted file mode 100644 index 44e58bdb..00000000 --- a/sysa/mes-0.22/include/locale.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_LOCALE_H -#define __MES_LOCALE_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_LOCALE_H -#include_next - -#else // ! SYSTEM_LIBC - -// *INDENT-OFF* -#ifndef LC_ALL -#define LC_CTYPE 0 -#define LC_NUMERIC 1 -#define LC_COLLATE 3 -#define LC_ALL 6 -#endif -// *INDENT-ON* - -char *setlocale (int category, char const *locale); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_LOCALE_H diff --git a/sysa/mes-0.22/include/mach/mach-init.h b/sysa/mes-0.22/include/mach/mach-init.h deleted file mode 100644 index 02916a77..00000000 --- a/sysa/mes-0.22/include/mach/mach-init.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 1993-2016 Free Software Foundation, Inc. - * Copyright © 2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -/** Commentary: - Taken from GNU C Library - Declarations and macros for the basic Mach things set at startup. - */ - -#ifndef _MACH_INIT_H - -#define _MACH_INIT_H 1 - -#include - -/* Return the current task's task port. */ -extern mach_port_t mach_task_self (void); -extern mach_port_t mach_host_self (void); - -/* Kernel page size. */ -extern vm_size_t __vm_page_size; -extern vm_size_t vm_page_size; - -/* Round the address X up to a page boundary. */ -#define round_page(x) \ - ((((vm_offset_t) (x) + __vm_page_size - 1) / __vm_page_size) * \ - __vm_page_size) - -/* Truncate the address X down to a page boundary. */ -#define trunc_page(x) \ - ((((vm_offset_t) (x)) / __vm_page_size) * __vm_page_size) - -#endif /* mach_init.h */ diff --git a/sysa/mes-0.22/include/math.h b/sysa/mes-0.22/include/math.h deleted file mode 100644 index 2e2ca985..00000000 --- a/sysa/mes-0.22/include/math.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_MATH_H -#define __MES_MATH_H 1 - -#if SYSTEM_LIBC -#undef __MES_MATH_H -#include_next -#else // ! SYSTEM_LIBC - -double atan2 (double y, double x); -double ceil (double x); -double cos (double x); -double exp (double x); -double fabs (double number); -double floor (double x); -double ldexp (double value, int exponent); -double log (double x); -double modf (double value, double *integer_part); -double pow (double base, double power); -double sin (double x); -double sqrt (double x); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_MATH_H diff --git a/sysa/mes-0.22/include/memory.h b/sysa/mes-0.22/include/memory.h deleted file mode 100644 index 43e63358..00000000 --- a/sysa/mes-0.22/include/memory.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_MEMORY_H -#define __MES_MEMORY_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_MEMORY_H -#include_next - -#else // ! SYSTEM_LIBC - -#include - -#endif // ! SYSTEM_LIBC - -#endif // __MES_MEMORY_H diff --git a/sysa/mes-0.22/include/mes/builtins.h b/sysa/mes-0.22/include/mes/builtins.h deleted file mode 100644 index ddb48902..00000000 --- a/sysa/mes-0.22/include/mes/builtins.h +++ /dev/null @@ -1,416 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#ifndef __MES_BUILTINS_H -#define __MES_BUILTINS_H - -// src/gc.mes -SCM gc_check (); -SCM gc (); -// src/hash.mes -SCM hashq (SCM x, SCM size); -SCM hash (SCM x, SCM size); -SCM hashq_get_handle (SCM table, SCM key, SCM dflt); -SCM hashq_ref (SCM table, SCM key, SCM dflt); -SCM hash_ref (SCM table, SCM key, SCM dflt); -SCM hashq_set_x (SCM table, SCM key, SCM value); -SCM hash_set_x (SCM table, SCM key, SCM value); -SCM hash_table_printer (SCM table); -SCM make_hash_table (SCM x); -// src/lib.mes -SCM procedure_name_ (SCM x); -SCM display_ (SCM x); -SCM display_error_ (SCM x); -SCM display_port_ (SCM x, SCM p); -SCM write_ (SCM x); -SCM write_error_ (SCM x); -SCM write_port_ (SCM x, SCM p); -SCM exit_ (SCM x); -SCM frame_printer (SCM frame); -SCM make_stack (SCM stack); -SCM stack_length (SCM stack); -SCM stack_ref (SCM stack, SCM index); -SCM xassq (SCM x, SCM a); -SCM memq (SCM x, SCM a); -SCM equal2_p (SCM a, SCM b); -SCM last_pair (SCM x); -SCM pair_p (SCM x); -// src/math.mes -SCM greater_p (SCM x); -SCM less_p (SCM x); -SCM is_p (SCM x); -SCM minus (SCM x); -SCM plus (SCM x); -SCM divide (SCM x); -SCM modulo (SCM a, SCM b); -SCM multiply (SCM x); -SCM logand (SCM x); -SCM logior (SCM x); -SCM lognot (SCM x); -SCM logxor (SCM x); -SCM ash (SCM n, SCM count); -// src/mes.mes -SCM make_cell_ (SCM type, SCM car, SCM cdr); -SCM type_ (SCM x); -SCM car_ (SCM x); -SCM cdr_ (SCM x); -SCM arity_ (SCM x); -SCM cons (SCM x, SCM y); -SCM car (SCM x); -SCM cdr (SCM x); -SCM list (SCM x); -SCM null_p (SCM x); -SCM eq_p (SCM x, SCM y); -SCM values (SCM x); -SCM acons (SCM key, SCM value, SCM alist); -SCM length (SCM x); -SCM error (SCM key, SCM x); -SCM append2 (SCM x, SCM y); -SCM append_reverse (SCM x, SCM y); -SCM reverse_x_ (SCM x, SCM t); -SCM pairlis (SCM x, SCM y, SCM a); -SCM call (SCM fn, SCM x); -SCM assq (SCM x, SCM a); -SCM assoc (SCM x, SCM a); -SCM set_car_x (SCM x, SCM e); -SCM set_cdr_x (SCM x, SCM e); -SCM set_env_x (SCM x, SCM e, SCM a); -SCM macro_get_handle (SCM name); -SCM add_formals (SCM formals, SCM x); -SCM eval_apply (); -SCM make_builtin_type (); -SCM make_builtin (SCM builtin_type, SCM name, SCM arity, SCM function); -SCM builtin_arity (SCM builtin); -SCM builtin_p (SCM x); -SCM builtin_printer (SCM builtin); -// CONSTANT cell_nil 1 -#define cell_nil 1 -// CONSTANT cell_f 2 -#define cell_f 2 -// CONSTANT cell_t 3 -#define cell_t 3 -// CONSTANT cell_dot 4 -#define cell_dot 4 -// CONSTANT cell_arrow 5 -#define cell_arrow 5 -// CONSTANT cell_undefined 6 -#define cell_undefined 6 -// CONSTANT cell_unspecified 7 -#define cell_unspecified 7 -// CONSTANT cell_closure 8 -#define cell_closure 8 -// CONSTANT cell_circular 9 -#define cell_circular 9 -// CONSTANT cell_begin 10 -#define cell_begin 10 -// CONSTANT cell_call_with_current_continuation 11 -#define cell_call_with_current_continuation 11 -// CONSTANT cell_vm_apply 12 -#define cell_vm_apply 12 -// CONSTANT cell_vm_apply2 13 -#define cell_vm_apply2 13 -// CONSTANT cell_vm_begin 14 -#define cell_vm_begin 14 -// CONSTANT cell_vm_begin_eval 15 -#define cell_vm_begin_eval 15 -// CONSTANT cell_vm_begin_expand 16 -#define cell_vm_begin_expand 16 -// CONSTANT cell_vm_begin_expand_eval 17 -#define cell_vm_begin_expand_eval 17 -// CONSTANT cell_vm_begin_expand_macro 18 -#define cell_vm_begin_expand_macro 18 -// CONSTANT cell_vm_begin_expand_primitive_load 19 -#define cell_vm_begin_expand_primitive_load 19 -// CONSTANT cell_vm_begin_primitive_load 20 -#define cell_vm_begin_primitive_load 20 -// CONSTANT cell_vm_begin_read_input_file 21 -#define cell_vm_begin_read_input_file 21 -// CONSTANT cell_vm_call_with_current_continuation2 22 -#define cell_vm_call_with_current_continuation2 22 -// CONSTANT cell_vm_call_with_values2 23 -#define cell_vm_call_with_values2 23 -// CONSTANT cell_vm_eval 24 -#define cell_vm_eval 24 -// CONSTANT cell_vm_eval2 25 -#define cell_vm_eval2 25 -// CONSTANT cell_vm_eval_check_func 26 -#define cell_vm_eval_check_func 26 -// CONSTANT cell_vm_eval_define 27 -#define cell_vm_eval_define 27 -// CONSTANT cell_vm_eval_macro_expand_eval 28 -#define cell_vm_eval_macro_expand_eval 28 -// CONSTANT cell_vm_eval_macro_expand_expand 29 -#define cell_vm_eval_macro_expand_expand 29 -// CONSTANT cell_vm_eval_pmatch_car 30 -#define cell_vm_eval_pmatch_car 30 -// CONSTANT cell_vm_eval_pmatch_cdr 31 -#define cell_vm_eval_pmatch_cdr 31 -// CONSTANT cell_vm_eval_set_x 32 -#define cell_vm_eval_set_x 32 -// CONSTANT cell_vm_evlis 33 -#define cell_vm_evlis 33 -// CONSTANT cell_vm_evlis2 34 -#define cell_vm_evlis2 34 -// CONSTANT cell_vm_evlis3 35 -#define cell_vm_evlis3 35 -// CONSTANT cell_vm_if 36 -#define cell_vm_if 36 -// CONSTANT cell_vm_if_expr 37 -#define cell_vm_if_expr 37 -// CONSTANT cell_vm_macro_expand 38 -#define cell_vm_macro_expand 38 -// CONSTANT cell_vm_macro_expand_car 39 -#define cell_vm_macro_expand_car 39 -// CONSTANT cell_vm_macro_expand_cdr 40 -#define cell_vm_macro_expand_cdr 40 -// CONSTANT cell_vm_macro_expand_define 41 -#define cell_vm_macro_expand_define 41 -// CONSTANT cell_vm_macro_expand_define_macro 42 -#define cell_vm_macro_expand_define_macro 42 -// CONSTANT cell_vm_macro_expand_lambda 43 -#define cell_vm_macro_expand_lambda 43 -// CONSTANT cell_vm_macro_expand_set_x 44 -#define cell_vm_macro_expand_set_x 44 -// CONSTANT cell_vm_return 45 -#define cell_vm_return 45 -// CONSTANT cell_symbol_dot 46 -#define cell_symbol_dot 46 -// CONSTANT cell_symbol_lambda 47 -#define cell_symbol_lambda 47 -// CONSTANT cell_symbol_begin 48 -#define cell_symbol_begin 48 -// CONSTANT cell_symbol_if 49 -#define cell_symbol_if 49 -// CONSTANT cell_symbol_quote 50 -#define cell_symbol_quote 50 -// CONSTANT cell_symbol_define 51 -#define cell_symbol_define 51 -// CONSTANT cell_symbol_define_macro 52 -#define cell_symbol_define_macro 52 -// CONSTANT cell_symbol_quasiquote 53 -#define cell_symbol_quasiquote 53 -// CONSTANT cell_symbol_unquote 54 -#define cell_symbol_unquote 54 -// CONSTANT cell_symbol_unquote_splicing 55 -#define cell_symbol_unquote_splicing 55 -// CONSTANT cell_symbol_syntax 56 -#define cell_symbol_syntax 56 -// CONSTANT cell_symbol_quasisyntax 57 -#define cell_symbol_quasisyntax 57 -// CONSTANT cell_symbol_unsyntax 58 -#define cell_symbol_unsyntax 58 -// CONSTANT cell_symbol_unsyntax_splicing 59 -#define cell_symbol_unsyntax_splicing 59 -// CONSTANT cell_symbol_set_x 60 -#define cell_symbol_set_x 60 -// CONSTANT cell_symbol_sc_expand 61 -#define cell_symbol_sc_expand 61 -// CONSTANT cell_symbol_macro_expand 62 -#define cell_symbol_macro_expand 62 -// CONSTANT cell_symbol_portable_macro_expand 63 -#define cell_symbol_portable_macro_expand 63 -// CONSTANT cell_symbol_sc_expander_alist 64 -#define cell_symbol_sc_expander_alist 64 -// CONSTANT cell_symbol_call_with_values 65 -#define cell_symbol_call_with_values 65 -// CONSTANT cell_symbol_call_with_current_continuation 66 -#define cell_symbol_call_with_current_continuation 66 -// CONSTANT cell_symbol_boot_module 67 -#define cell_symbol_boot_module 67 -// CONSTANT cell_symbol_current_module 68 -#define cell_symbol_current_module 68 -// CONSTANT cell_symbol_primitive_load 69 -#define cell_symbol_primitive_load 69 -// CONSTANT cell_symbol_read_input_file 70 -#define cell_symbol_read_input_file 70 -// CONSTANT cell_symbol_write 71 -#define cell_symbol_write 71 -// CONSTANT cell_symbol_display 72 -#define cell_symbol_display 72 -// CONSTANT cell_symbol_car 73 -#define cell_symbol_car 73 -// CONSTANT cell_symbol_cdr 74 -#define cell_symbol_cdr 74 -// CONSTANT cell_symbol_not_a_number 75 -#define cell_symbol_not_a_number 75 -// CONSTANT cell_symbol_not_a_pair 76 -#define cell_symbol_not_a_pair 76 -// CONSTANT cell_symbol_system_error 77 -#define cell_symbol_system_error 77 -// CONSTANT cell_symbol_throw 78 -#define cell_symbol_throw 78 -// CONSTANT cell_symbol_unbound_variable 79 -#define cell_symbol_unbound_variable 79 -// CONSTANT cell_symbol_wrong_number_of_args 80 -#define cell_symbol_wrong_number_of_args 80 -// CONSTANT cell_symbol_wrong_type_arg 81 -#define cell_symbol_wrong_type_arg 81 -// CONSTANT cell_symbol_buckets 82 -#define cell_symbol_buckets 82 -// CONSTANT cell_symbol_builtin 83 -#define cell_symbol_builtin 83 -// CONSTANT cell_symbol_frame 84 -#define cell_symbol_frame 84 -// CONSTANT cell_symbol_hashq_table 85 -#define cell_symbol_hashq_table 85 -// CONSTANT cell_symbol_module 86 -#define cell_symbol_module 86 -// CONSTANT cell_symbol_procedure 87 -#define cell_symbol_procedure 87 -// CONSTANT cell_symbol_record_type 88 -#define cell_symbol_record_type 88 -// CONSTANT cell_symbol_size 89 -#define cell_symbol_size 89 -// CONSTANT cell_symbol_stack 90 -#define cell_symbol_stack 90 -// CONSTANT cell_symbol_argv 91 -#define cell_symbol_argv 91 -// CONSTANT cell_symbol_mes_prefix 92 -#define cell_symbol_mes_prefix 92 -// CONSTANT cell_symbol_mes_version 93 -#define cell_symbol_mes_version 93 -// CONSTANT cell_symbol_internal_time_units_per_second 94 -#define cell_symbol_internal_time_units_per_second 94 -// CONSTANT cell_symbol_compiler 95 -#define cell_symbol_compiler 95 -// CONSTANT cell_symbol_arch 96 -#define cell_symbol_arch 96 -// CONSTANT cell_symbol_pmatch_car 97 -#define cell_symbol_pmatch_car 97 -// CONSTANT cell_symbol_pmatch_cdr 98 -#define cell_symbol_pmatch_cdr 98 -// CONSTANT cell_type_bytes 99 -#define cell_type_bytes 99 -// CONSTANT cell_type_char 100 -#define cell_type_char 100 -// CONSTANT cell_type_closure 101 -#define cell_type_closure 101 -// CONSTANT cell_type_continuation 102 -#define cell_type_continuation 102 -// CONSTANT cell_type_function 103 -#define cell_type_function 103 -// CONSTANT cell_type_keyword 104 -#define cell_type_keyword 104 -// CONSTANT cell_type_macro 105 -#define cell_type_macro 105 -// CONSTANT cell_type_number 106 -#define cell_type_number 106 -// CONSTANT cell_type_pair 107 -#define cell_type_pair 107 -// CONSTANT cell_type_port 108 -#define cell_type_port 108 -// CONSTANT cell_type_ref 109 -#define cell_type_ref 109 -// CONSTANT cell_type_special 110 -#define cell_type_special 110 -// CONSTANT cell_type_string 111 -#define cell_type_string 111 -// CONSTANT cell_type_struct 112 -#define cell_type_struct 112 -// CONSTANT cell_type_symbol 113 -#define cell_type_symbol 113 -// CONSTANT cell_type_values 114 -#define cell_type_values 114 -// CONSTANT cell_type_variable 115 -#define cell_type_variable 115 -// CONSTANT cell_type_vector 116 -#define cell_type_vector 116 -// CONSTANT cell_type_broken_heart 117 -#define cell_type_broken_heart 117 -// CONSTANT cell_symbol_test 118 -#define cell_symbol_test 118 -// src/module.mes -SCM make_module_type (); -SCM module_printer (SCM module); -SCM module_variable (SCM module, SCM name); -SCM module_ref (SCM module, SCM name); -SCM module_define_x (SCM module, SCM name, SCM value); -// src/posix.mes -SCM peek_byte (); -SCM read_byte (); -SCM unread_byte (SCM i); -SCM peek_char (); -SCM read_char (SCM port); -SCM unread_char (SCM i); -SCM write_char (SCM i); -SCM write_byte (SCM x); -SCM getenv_ (SCM s); -SCM setenv_ (SCM s, SCM v); -SCM access_p (SCM file_name, SCM mode); -SCM current_input_port (); -SCM open_input_file (SCM file_name); -SCM open_input_string (SCM string); -SCM set_current_input_port (SCM port); -SCM current_output_port (); -SCM current_error_port (); -SCM open_output_file (SCM x); -SCM set_current_output_port (SCM port); -SCM set_current_error_port (SCM port); -SCM force_output (SCM p); -SCM chmod_ (SCM file_name, SCM mode); -SCM isatty_p (SCM port); -SCM primitive_fork (); -SCM execl_ (SCM file_name, SCM args); -SCM waitpid_ (SCM pid, SCM options); -SCM current_time (); -SCM gettimeofday_ (); -SCM get_internal_run_time (); -SCM getcwd_ (); -SCM dup_ (SCM port); -SCM dup2_ (SCM old, SCM new); -SCM delete_file (SCM file_name); -// src/reader.mes -SCM read_input_file_env_ (SCM e, SCM a); -SCM read_input_file_env (SCM a); -SCM read_env (SCM a); -SCM reader_read_sexp (SCM c, SCM s, SCM a); -SCM reader_read_character (); -SCM reader_read_binary (); -SCM reader_read_octal (); -SCM reader_read_hex (); -SCM reader_read_string (); -// src/strings.mes -SCM string_equal_p (SCM a, SCM b); -SCM symbol_to_string (SCM symbol); -SCM symbol_to_keyword (SCM symbol); -SCM keyword_to_string (SCM keyword); -SCM string_to_symbol (SCM string); -SCM make_symbol (SCM string); -SCM string_to_list (SCM string); -SCM list_to_string (SCM list); -SCM read_string (SCM port); -SCM string_append (SCM x); -SCM string_length (SCM string); -SCM string_ref (SCM str, SCM k); -// src/struct.mes -SCM make_struct (SCM type, SCM fields, SCM printer); -SCM struct_length (SCM x); -SCM struct_ref (SCM x, SCM i); -SCM struct_set_x (SCM x, SCM i, SCM e); -// src/vector.mes -SCM make_vector_ (SCM n); -SCM vector_length (SCM x); -SCM vector_ref (SCM x, SCM i); -SCM vector_entry (SCM x); -SCM vector_set_x (SCM x, SCM i, SCM e); -SCM list_to_vector (SCM x); -SCM vector_to_list (SCM v); - -#endif //__MES_BUILTINS_H diff --git a/sysa/mes-0.22/include/mes/constants.h b/sysa/mes-0.22/include/mes/constants.h deleted file mode 100644 index 7606beb6..00000000 --- a/sysa/mes-0.22/include/mes/constants.h +++ /dev/null @@ -1,324 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#ifndef __MES_CONSTANTS_H -#define __MES_CONSTANTS_H - -/* Symbols */ - -// CONSTANT cell_nil 1 -#define cell_nil 1 -// CONSTANT cell_f 2 -#define cell_f 2 -// CONSTANT cell_t 3 -#define cell_t 3 -// CONSTANT cell_dot 4 -#define cell_dot 4 -// CONSTANT cell_arrow 5 -#define cell_arrow 5 -// CONSTANT cell_undefined 6 -#define cell_undefined 6 -// CONSTANT cell_unspecified 7 -#define cell_unspecified 7 -// CONSTANT cell_closure 8 -#define cell_closure 8 -// CONSTANT cell_circular 9 -#define cell_circular 9 -// CONSTANT cell_begin 10 -#define cell_begin 10 -// CONSTANT cell_call_with_current_continuation 11 -#define cell_call_with_current_continuation 11 - -// CONSTANT cell_vm_apply 12 -#define cell_vm_apply 12 -// CONSTANT cell_vm_apply2 13 -#define cell_vm_apply2 13 -// CONSTANT cell_vm_begin 14 -#define cell_vm_begin 14 -// CONSTANT cell_vm_begin_eval 15 -#define cell_vm_begin_eval 15 -// CONSTANT cell_vm_begin_expand 16 -#define cell_vm_begin_expand 16 -// CONSTANT cell_vm_begin_expand_eval 17 -#define cell_vm_begin_expand_eval 17 -// CONSTANT cell_vm_begin_expand_macro 18 -#define cell_vm_begin_expand_macro 18 -// CONSTANT cell_vm_begin_expand_primitive_load 19 -#define cell_vm_begin_expand_primitive_load 19 -// CONSTANT cell_vm_begin_primitive_load 20 -#define cell_vm_begin_primitive_load 20 -// CONSTANT cell_vm_begin_read_input_file 21 -#define cell_vm_begin_read_input_file 21 -// CONSTANT cell_vm_call_with_current_continuation2 22 -#define cell_vm_call_with_current_continuation2 22 -// CONSTANT cell_vm_call_with_values2 23 -#define cell_vm_call_with_values2 23 -// CONSTANT cell_vm_eval 24 -#define cell_vm_eval 24 -// CONSTANT cell_vm_eval2 25 -#define cell_vm_eval2 25 -// CONSTANT cell_vm_eval_check_func 26 -#define cell_vm_eval_check_func 26 -// CONSTANT cell_vm_eval_define 27 -#define cell_vm_eval_define 27 -// CONSTANT cell_vm_eval_macro_expand_eval 28 -#define cell_vm_eval_macro_expand_eval 28 -// CONSTANT cell_vm_eval_macro_expand_expand 29 -#define cell_vm_eval_macro_expand_expand 29 -// CONSTANT cell_vm_eval_pmatch_car 30 -#define cell_vm_eval_pmatch_car 30 -// CONSTANT cell_vm_eval_pmatch_cdr 31 -#define cell_vm_eval_pmatch_cdr 31 -// CONSTANT cell_vm_eval_set_x 32 -#define cell_vm_eval_set_x 32 -// CONSTANT cell_vm_evlis 33 -#define cell_vm_evlis 33 -// CONSTANT cell_vm_evlis2 34 -#define cell_vm_evlis2 34 -// CONSTANT cell_vm_evlis3 35 -#define cell_vm_evlis3 35 -// CONSTANT cell_vm_if 36 -#define cell_vm_if 36 -// CONSTANT cell_vm_if_expr 37 -#define cell_vm_if_expr 37 -// CONSTANT cell_vm_macro_expand 38 -#define cell_vm_macro_expand 38 -// CONSTANT cell_vm_macro_expand_car 39 -#define cell_vm_macro_expand_car 39 -// CONSTANT cell_vm_macro_expand_cdr 40 -#define cell_vm_macro_expand_cdr 40 -// CONSTANT cell_vm_macro_expand_define 41 -#define cell_vm_macro_expand_define 41 -// CONSTANT cell_vm_macro_expand_define_macro 42 -#define cell_vm_macro_expand_define_macro 42 -// CONSTANT cell_vm_macro_expand_lambda 43 -#define cell_vm_macro_expand_lambda 43 -// CONSTANT cell_vm_macro_expand_set_x 44 -#define cell_vm_macro_expand_set_x 44 -// CONSTANT cell_vm_return 45 -#define cell_vm_return 45 - -// CONSTANT cell_symbol_dot 46 -#define cell_symbol_dot 46 -// CONSTANT cell_symbol_lambda 47 -#define cell_symbol_lambda 47 -// CONSTANT cell_symbol_begin 48 -#define cell_symbol_begin 48 -// CONSTANT cell_symbol_if 49 -#define cell_symbol_if 49 -// CONSTANT cell_symbol_quote 50 -#define cell_symbol_quote 50 -// CONSTANT cell_symbol_define 51 -#define cell_symbol_define 51 -// CONSTANT cell_symbol_define_macro 52 -#define cell_symbol_define_macro 52 - -// CONSTANT cell_symbol_quasiquote 53 -#define cell_symbol_quasiquote 53 -// CONSTANT cell_symbol_unquote 54 -#define cell_symbol_unquote 54 -// CONSTANT cell_symbol_unquote_splicing 55 -#define cell_symbol_unquote_splicing 55 -// CONSTANT cell_symbol_syntax 56 -#define cell_symbol_syntax 56 -// CONSTANT cell_symbol_quasisyntax 57 -#define cell_symbol_quasisyntax 57 -// CONSTANT cell_symbol_unsyntax 58 -#define cell_symbol_unsyntax 58 -// CONSTANT cell_symbol_unsyntax_splicing 59 -#define cell_symbol_unsyntax_splicing 59 - -// CONSTANT cell_symbol_set_x 60 -#define cell_symbol_set_x 60 - -// CONSTANT cell_symbol_sc_expand 61 -#define cell_symbol_sc_expand 61 -// CONSTANT cell_symbol_macro_expand 62 -#define cell_symbol_macro_expand 62 -// CONSTANT cell_symbol_portable_macro_expand 63 -#define cell_symbol_portable_macro_expand 63 -// CONSTANT cell_symbol_sc_expander_alist 64 -#define cell_symbol_sc_expander_alist 64 - -// CONSTANT cell_symbol_call_with_values 65 -#define cell_symbol_call_with_values 65 -// CONSTANT cell_symbol_call_with_current_continuation 66 -#define cell_symbol_call_with_current_continuation 66 -// CONSTANT cell_symbol_boot_module 67 -#define cell_symbol_boot_module 67 -// CONSTANT cell_symbol_current_module 68 -#define cell_symbol_current_module 68 -// CONSTANT cell_symbol_primitive_load 69 -#define cell_symbol_primitive_load 69 -// CONSTANT cell_symbol_read_input_file 70 -#define cell_symbol_read_input_file 70 -// CONSTANT cell_symbol_write 71 -#define cell_symbol_write 71 -// CONSTANT cell_symbol_display 72 -#define cell_symbol_display 72 - -// CONSTANT cell_symbol_car 73 -#define cell_symbol_car 73 -// CONSTANT cell_symbol_cdr 74 -#define cell_symbol_cdr 74 -// CONSTANT cell_symbol_not_a_number 75 -#define cell_symbol_not_a_number 75 -// CONSTANT cell_symbol_not_a_pair 76 -#define cell_symbol_not_a_pair 76 -// CONSTANT cell_symbol_system_error 77 -#define cell_symbol_system_error 77 -// CONSTANT cell_symbol_throw 78 -#define cell_symbol_throw 78 -// CONSTANT cell_symbol_unbound_variable 79 -#define cell_symbol_unbound_variable 79 -// CONSTANT cell_symbol_wrong_number_of_args 80 -#define cell_symbol_wrong_number_of_args 80 -// CONSTANT cell_symbol_wrong_type_arg 81 -#define cell_symbol_wrong_type_arg 81 - -// CONSTANT cell_symbol_buckets 82 -#define cell_symbol_buckets 82 -// CONSTANT cell_symbol_builtin 83 -#define cell_symbol_builtin 83 -// CONSTANT cell_symbol_frame 84 -#define cell_symbol_frame 84 -// CONSTANT cell_symbol_hashq_table 85 -#define cell_symbol_hashq_table 85 -// CONSTANT cell_symbol_module 86 -#define cell_symbol_module 86 -// CONSTANT cell_symbol_procedure 87 -#define cell_symbol_procedure 87 -// CONSTANT cell_symbol_record_type 88 -#define cell_symbol_record_type 88 -// CONSTANT cell_symbol_size 89 -#define cell_symbol_size 89 -// CONSTANT cell_symbol_stack 90 -#define cell_symbol_stack 90 - -// CONSTANT cell_symbol_argv 91 -#define cell_symbol_argv 91 -// CONSTANT cell_symbol_mes_datadir 92 -#define cell_symbol_mes_datadir 92 -// CONSTANT cell_symbol_mes_version 93 -#define cell_symbol_mes_version 93 - -// CONSTANT cell_symbol_internal_time_units_per_second 94 -#define cell_symbol_internal_time_units_per_second 94 -// CONSTANT cell_symbol_compiler 95 -#define cell_symbol_compiler 95 -// CONSTANT cell_symbol_arch 96 -#define cell_symbol_arch 96 -// CONSTANT cell_symbol_pmatch_car 97 -#define cell_symbol_pmatch_car 97 -// CONSTANT cell_symbol_pmatch_cdr 98 -#define cell_symbol_pmatch_cdr 98 - -// CONSTANT cell_type_bytes 99 -#define cell_type_bytes 99 -// CONSTANT cell_type_char 100 -#define cell_type_char 100 -// CONSTANT cell_type_closure 101 -#define cell_type_closure 101 -// CONSTANT cell_type_continuation 102 -#define cell_type_continuation 102 -// CONSTANT cell_type_function 103 -#define cell_type_function 103 -// CONSTANT cell_type_keyword 104 -#define cell_type_keyword 104 -// CONSTANT cell_type_macro 105 -#define cell_type_macro 105 -// CONSTANT cell_type_number 106 -#define cell_type_number 106 -// CONSTANT cell_type_pair 107 -#define cell_type_pair 107 -// CONSTANT cell_type_port 108 -#define cell_type_port 108 -// CONSTANT cell_type_ref 109 -#define cell_type_ref 109 -// CONSTANT cell_type_special 110 -#define cell_type_special 110 -// CONSTANT cell_type_string 111 -#define cell_type_string 111 -// CONSTANT cell_type_struct 112 -#define cell_type_struct 112 -// CONSTANT cell_type_symbol 113 -#define cell_type_symbol 113 -// CONSTANT cell_type_values 114 -#define cell_type_values 114 -// CONSTANT cell_type_variable 115 -#define cell_type_variable 115 -// CONSTANT cell_type_vector 116 -#define cell_type_vector 116 -// CONSTANT cell_type_broken_heart 117 -#define cell_type_broken_heart 117 - -// CONSTANT cell_test 118 -#define cell_test 118 - -/* Cell types */ - -// CONSTANT TBYTES 0 -#define TBYTES 0 -// CONSTANT TCHAR 1 -#define TCHAR 1 -// CONSTANT TCLOSURE 2 -#define TCLOSURE 2 -// CONSTANT TCONTINUATION 3 -#define TCONTINUATION 3 -// CONSTANT TKEYWORD 4 -#define TKEYWORD 4 -// CONSTANT TMACRO 5 -#define TMACRO 5 -// CONSTANT TNUMBER 6 -#define TNUMBER 6 -// CONSTANT TPAIR 7 -#define TPAIR 7 -// CONSTANT TPORT 8 -#define TPORT 8 -// CONSTANT TREF 9 -#define TREF 9 -// CONSTANT TSPECIAL 10 -#define TSPECIAL 10 -// CONSTANT TSTRING 11 -#define TSTRING 11 -// CONSTANT TSTRUCT 12 -#define TSTRUCT 12 -// CONSTANT TSYMBOL 13 -#define TSYMBOL 13 -// CONSTANT TVALUES 14 -#define TVALUES 14 -// CONSTANT TVARIABLE 15 -#define TVARIABLE 15 -// CONSTANT TVECTOR 16 -#define TVECTOR 16 -// CONSTANT TBROKEN_HEART 17 -#define TBROKEN_HEART 17 - -/* Struct types */ - -// CONSTANT STRUCT_TYPE 0 -#define STRUCT_TYPE 0 -// CONSTANT STRUCT_PRINTER 1 -#define STRUCT_PRINTER 1 - -#define FRAME_SIZE 5 -#define FRAME_PROCEDURE 4 - -#endif //__MES_CONSTANTS_H diff --git a/sysa/mes-0.22/include/mes/lib-mini.h b/sysa/mes-0.22/include/mes/lib-mini.h deleted file mode 100644 index 4cc8d96d..00000000 --- a/sysa/mes-0.22/include/mes/lib-mini.h +++ /dev/null @@ -1,98 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#ifndef __MES_LIB_MINI_H -#define __MES_LIB_MINI_H - -#if HAVE_CONFIG_H -#include -#endif - -// CONSTANT STDIN 0 -#ifndef STDIN -#define STDIN 0 -#endif - -// CONSTANT STDOUT 1 -#ifndef STDOUT -#define STDOUT 1 -#endif - -// CONSTANT STDERR 2 -#ifndef STDERR -#define STDERR 2 -#endif - -char **environ; -int __stdin; -int __stdout; -int __stderr; - -int eputs (char const *s); -int puts (char const *s); -int oputs (char const *s); - -#if SYSTEM_LIBC - -#include -#include - -#else //!SYSTEM_LIBC - -#ifndef _SIZE_T -#define _SIZE_T -#ifndef __SIZE_T -#define __SIZE_T -#ifndef __MES_SIZE_T -#define __MES_SIZE_T -#undef size_t -typedef unsigned long size_t; -#endif -#endif -#endif - -#ifndef _SSIZE_T -#define _SSIZE_T -#ifndef __SSIZE_T -#define __SSIZE_T -#ifndef __MES_SSIZE_T -#define __MES_SSIZE_T -#undef ssize_t -#if __i386__ -typedef int ssize_t; -#else -typedef long ssize_t; -#endif -#endif -#endif -#endif - -#ifndef __MES_ERRNO_T -#define __MES_ERRNO_T 1 -typedef int error_t; -int errno; -#endif // !__MES_ERRNO_T - -size_t strlen (char const *s); -ssize_t _write (); -ssize_t write (int filedes, void const *buffer, size_t size); -#endif // !SYSTEM_LIBC - -#endif //__MES_LIB_MINI_H diff --git a/sysa/mes-0.22/include/mes/lib.h b/sysa/mes-0.22/include/mes/lib.h deleted file mode 100644 index 6b66107b..00000000 --- a/sysa/mes-0.22/include/mes/lib.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#ifndef __MES_LIB_H -#define __MES_LIB_H - -#include - -int __mes_debug (); -void __ungetc_init (); -void __ungetc_clear (int filedes); -void __ungetc_set (int filedes, int c); -int __ungetc_p (int filedes); -double abtod (char const **p, int base); -long abtol (char const **p, int base); -char *dtoab (double number, int base, int signed_p); -char *itoa (int number); -char *ltoa (long number); -char *ltoab (long x, int base); -char *ntoab (long number, int base, int signed_p); -char *ultoa (unsigned long number); -char *utoa (unsigned number); -int eputc (int c); -int fdgetc (int fd); -char * fdgets (char *s, int count, int fd); -int fdputc (int c, int fd); -int fdputs (char const *s, int fd); -int fdungetc (int c, int fd); -char * _getcwd (char *buffer, size_t size); -int isnumber (int c, int base); -int mes_open (char const *file_name, int flags, int mask); -int _open2 (char const *file_name, int flags); -int _open3 (char const *file_name, int flags, int mask); -int oputc (int c); -int oputs (char const *s); -char *search_path (char const *file_name); -ssize_t _read (int fd, void *buffer, size_t size); - -extern char *__brk; -extern void (*__call_at_exit) (void); - -#define __FILEDES_MAX 512 - -#if !SYSTEM_LIBC -void __assert_fail (char *s); -ssize_t __buffered_read (int filedes, void *buffer, size_t size); -size_t __buffered_read_clear (int filedes); -void _exit (int code); -long brk (void *addr); -#endif // !SYSTEM_LIBC - -#endif //__MES_LIB_H diff --git a/sysa/mes-0.22/include/mes/macros.h b/sysa/mes-0.22/include/mes/macros.h deleted file mode 100644 index 86dd0970..00000000 --- a/sysa/mes-0.22/include/mes/macros.h +++ /dev/null @@ -1,80 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#ifndef __MES_MACROS_H -#define __MES_MACROS_H - -#define TYPE(x) g_cells[x].type -#define CAR(x) g_cells[x].car -#define CDR(x) g_cells[x].cdr - -#define NTYPE(x) g_news[x].type -#define NCAR(x) g_news[x].car -#define NCDR(x) g_news[x].cdr - -#define BYTES(x) g_cells[x].car -#define LENGTH(x) g_cells[x].car -#define REF(x) g_cells[x].car -#define START(x) (g_cells[x].car >> 16) -#define LEN(x) (g_cells[x].car & 0xffff) -#define VARIABLE(x) g_cells[x].car - -#define CLOSURE(x) g_cells[x].cdr -#define CONTINUATION(x) g_cells[x].cdr - -#define CBYTES(x) (char*)&g_cells[x].cdr -#define CSTRING_STRUCT(x) (char*)&g_cells[x.cdr].cdr - -#define MACRO(x) g_cells[x].car -#define NAME(x) g_cells[x].cdr -#define PORT(x) g_cells[x].car -#define STRING(x) g_cells[x].cdr -#define STRUCT(x) g_cells[x].cdr -#define VALUE(x) g_cells[x].cdr -#define VECTOR(x) g_cells[x].cdr - -#define NLENGTH(x) g_news[x].car -#define NCBYTES(x) (char*)&g_news[x].cdr -#define NVALUE(x) g_news[x].cdr -#define NSTRING(x) g_news[x].cdr -#define NVECTOR(x) g_news[x].cdr - -#define CSTRING(x) CBYTES (STRING (x)) - -#define MAKE_BYTES0(x) make_bytes (x, strlen (x)) -#define NAME_SYMBOL(symbol,name) {size_t s = strlen (name); CAR (symbol) = s; CDR (symbol) = make_bytes (name, s);} - -#define MAKE_CHAR(n) make_cell__ (TCHAR, 0, n) -#define MAKE_CONTINUATION(n) make_cell__ (TCONTINUATION, n, g_stack) -#define MAKE_NUMBER(n) make_cell__ (TNUMBER, 0, (long)n) -#define MAKE_REF(n) make_cell__ (TREF, n, 0) -#define MAKE_STRING0(x) make_string (x, strlen (x)) -#define MAKE_STRING_PORT(x) make_cell__ (TPORT, -length__ (g_ports) - 2, x) -#define MAKE_MACRO(name, x) make_cell__ (TMACRO, x, STRING (name)) - -#define CAAR(x) CAR (CAR (x)) -#define CADR(x) CAR (CDR (x)) -#define CDAR(x) CDR (CAR (x)) -#define CDDR(x) CDR (CDR (x)) -#define CADAR(x) CAR (CDR (CAR (x))) -#define CADDR(x) CAR (CDR (CDR (x))) -#define CDADAR(x) CAR (CDR (CAR (CDR (x)))) - -#endif //__MES_MACROS_H diff --git a/sysa/mes-0.22/include/mes/mes.h b/sysa/mes-0.22/include/mes/mes.h deleted file mode 100644 index a9b6ba93..00000000 --- a/sysa/mes-0.22/include/mes/mes.h +++ /dev/null @@ -1,106 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#ifndef __MES_MES_H -#define __MES_MES_H - -#include - -typedef long SCM; - -struct scm -{ - long type; - SCM car; - SCM cdr; -}; - -// mes -extern int g_debug; -extern char *g_buf; -extern SCM g_continuations; -extern SCM g_symbols; -extern SCM g_symbol_max; - -// a/env -extern SCM r0; -// param 1 -extern SCM r1; -// save 2 -extern SCM r2; -// continuation -extern SCM r3; -// current-module -extern SCM m0; -// macro -extern SCM g_macros; -extern SCM g_ports; - -// gc -extern long ARENA_SIZE; -extern long MAX_ARENA_SIZE; -extern long STACK_SIZE; -extern long JAM_SIZE; -extern long GC_SAFETY; -extern long MAX_STRING; -extern char *g_arena; -extern long g_free; -extern SCM g_stack; -extern SCM *g_stack_array; -extern struct scm *g_cells; -extern struct scm *g_news; - -SCM alloc (long n); -SCM apply (SCM f, SCM x, SCM a); -SCM apply_builtin (SCM fn, SCM x); -SCM cstring_to_list (char const *s); -SCM cstring_to_symbol (char const *s); -SCM display_ (SCM x); -SCM fdisplay_ (SCM, int, int); -SCM gc_init (); -SCM gc_peek_frame (); -SCM gc_pop_frame (); -SCM gc_push_frame (); -SCM init_time (SCM a); -SCM make_bytes (char const *s, size_t length); -SCM make_cell__ (long type, SCM car, SCM cdr); -SCM make_hash_table_ (long size); -SCM make_hashq_type (); -SCM make_initial_module (SCM a); -SCM make_string (char const *s, size_t length); -SCM make_vector__ (long k); -SCM read_input_file_env (SCM); -SCM string_equal_p (SCM a, SCM b); -SCM struct_ref_ (SCM x, long i); -SCM struct_set_x_ (SCM x, long i, SCM e); -SCM vector_ref_ (SCM x, long i); -SCM vector_set_x_ (SCM x, long i, SCM e); -int peekchar (); -int readchar (); -int unreadchar (); -long length__ (SCM x); -size_t bytes_cells (size_t length); -void assert_max_string (size_t i, char const *msg, char *string); - -#include "mes/builtins.h" -#include "mes/constants.h" -#include "mes/macros.h" - -#endif //__MES_MES_H diff --git a/sysa/mes-0.22/include/pwd.h b/sysa/mes-0.22/include/pwd.h deleted file mode 100644 index 992c45f9..00000000 --- a/sysa/mes-0.22/include/pwd.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_PWD_H -#define __MES_PWD_H 1 - -#if SYSTEM_LIBC -#undef __MES_PWD_H -#include_next -#else // ! SYSTEM_LIBC - -#include - -struct passwd -{ - char *pw_name; - char *pw_passwd; - uid_t pw_uid; - gid_t pw_gid; - char *pw_gecos; - char *pw_dir; - char *pw_shell; -}; - -struct passwd *getpwuid (); - - -#endif // ! SYSTEM_LIBC - -#endif // __MES_PWD_H diff --git a/sysa/mes-0.22/include/setjmp.h b/sysa/mes-0.22/include/setjmp.h deleted file mode 100644 index 512ea111..00000000 --- a/sysa/mes-0.22/include/setjmp.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SETJMP_H -#define __MES_SETJMP_H 1 - -#if SYSTEM_LIBC -#undef __MES_SETJMP_H -#include_next -#else // ! SYSTEM_LIBC - -typedef struct -{ - long __bp; - long __pc; - long __sp; -} __jmp_buf; -typedef __jmp_buf jmp_buf[1]; - -#if __MESC__ -__jmp_buf buf[1]; -#else -jmp_buf buf; -#endif - -void longjmp (jmp_buf env, int val); -int setjmp (jmp_buf env); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_SETJMP_H diff --git a/sysa/mes-0.22/include/signal.h b/sysa/mes-0.22/include/signal.h deleted file mode 100644 index 877b2d55..00000000 --- a/sysa/mes-0.22/include/signal.h +++ /dev/null @@ -1,246 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SIGNAL_H -#define __MES_SIGNAL_H 1 - -#if SYSTEM_LIBC -#undef __MES_SIGNAL_H -#include_next -#else //! SYSTEM_LIBC - -#define _NSIG 64 - -#define _SIGSET_NITEMS (_NSIG / (8 * sizeof(unsigned long))) - -typedef struct { - unsigned long items[_SIGSET_NITEMS]; -} sigset_t; -typedef long stack_t; - -#include - -// *INDENT-OFF* -#define NSIG 30 -#define SIGHUP 1 -#define SIGINT 2 -#define SIGQUIT 3 -#define SIGILL 4 -#define SIGTRAP 5 -#define SIGABRT 6 -#define SIGIOT 6 -#define SIGBUS 7 -#define SIGFPE 8 -#define SIGKILL 9 -#define SIGUSR1 10 -#define SIGSEGV 11 -#define SIGUSR2 12 -#define SIGPIPE 13 -#define SIGALRM 14 -#define SIGTERM 15 -#define SIGSTKFLT 16 -#define SIGCHLD 17 -#define SIGCONT 18 -#define SIGSTOP 19 -#define SIGTSTP 20 -#define SIGTTIN 21 -#define SIGTTOU 22 -#define SIGURG 23 -#define SIGXCPU 24 -#define SIGXFSZ 25 -#define SIGVTALRM 26 -#define SIGPROF 27 -#define SIGWINCH 28 -#define SIGIO 29 -#define SIGPOLL SIGIO - -#define FPE_INTDIV 1 -#define FPE_INTOVF 2 -#define FPE_FLTDIV 3 -#define FPE_FLTOVF 4 -#define FPE_FLTUND 5 -#define FPE_FLTRES 6 -#define FPE_FLTINV 7 -#define FPE_FLTSUB 8 - -#define SA_NOCLDSTOP 0x00000001 -#define SA_NOCLDWAIT 0x00000002 -#define SA_SIGINFO 0x00000004 -#define SA_RESTORER 0x04000000 -#define SA_ONSTACK 0x08000000 -#define SA_RESTART 0x10000000 -#define SA_NODEFER 0x40000000 -#define SA_RESETHAND 0x80000000 - -#define SA_NOMASK SA_NODEFER -#define SA_ONESHOT SA_RESETHAND - -typedef struct siginfo_t -{ - int si_signo; - int si_errno; - int si_code; - int si_trapno; - pid_t si_pid; - uid_t si_uid; - int si_status; - clock_t si_utime; - clock_t si_stime; - sigval_t si_value; - int si_int; - void *si_ptr; - int si_overrun; - int si_timerid; - void *si_addr; - long si_band; - int si_fd; - short si_addr_lsb; - void *si_lower; - void *si_upper; - int si_pkey; - void *si_call_addr; - int si_syscall; - unsigned int si_arch; -} siginfo_t; -// *INDENT-ON* - -#if __MESC__ -typedef long sighandler_t; -#else -typedef void (*sighandler_t) (int); -#endif - -struct sigaction -{ - union - { - sighandler_t sa_handler; - void (*sa_sigaction) (int signum, siginfo_t *, void *); - }; - unsigned long sa_flags; -#if __x86_64__ - long _foo0; -#endif - sigset_t sa_mask; -#if __x86_64__ - long _foo1[15]; -#endif - //unsigned long sa_flags; // x86? - void (*sa_restorer) (void); -}; - - -#define SIG_DFL ((sighandler_t)0) -#define SIG_IGN ((sighandler_t)1) -#define SIG_ERR ((sighandler_t)-1) - -#ifdef __i386__ - -#define EBX 0 -#define ECX 1 -#define EDX 2 -#define ESI 3 -#define EDI 4 -#define EBP 5 -#define EAX 6 -#define DS 7 -#define ES 8 -#define FS 9 -#define GS 10 -#define ORIG_EAX 11 -#define EIP 12 -#define CS 13 -#define EFL 14 -#define UESP 15 -#define SS 16 -#define FRAME_SIZE 17 - -/* Type for general register. */ -typedef int greg_t; - -/* Number of general registers. */ -#define NGREG 19 - -/* Container for all general registers. */ -typedef greg_t gregset_t[NGREG]; - -/* Definitions taken from the kernel headers. */ -struct _libc_fpreg -{ - unsigned short int significand[4]; - unsigned short int exponent; -}; - -struct _libc_fpstate -{ - unsigned long int cw; - unsigned long int sw; - unsigned long int tag; - unsigned long int ipoff; - unsigned long int cssel; - unsigned long int dataoff; - unsigned long int datasel; - struct _libc_fpreg _st[8]; - unsigned long int status; -}; - -/* Structure to describe FPU registers. */ -typedef struct _libc_fpstate *fpregset_t; - -typedef struct -{ - gregset_t gregs; - /* Due to Linux's history we have to use a pointer here. The SysV/i386 - ABI requires a struct with the values. */ - fpregset_t fpregs; - unsigned long int oldmask; - unsigned long int cr2; -} mcontext_t; - -/* Userlevel context. */ -typedef struct ucontext -{ - unsigned long int uc_flags; - struct ucontext *uc_link; - stack_t uc_stack; - mcontext_t uc_mcontext; - sigset_t uc_sigmask; - struct _libc_fpstate __fpregs_mem; -} ucontext_t; -#endif // !__i386__ - -int kill (pid_t pid, int signum); -int sigaction (int signum, struct sigaction const *act, struct sigaction *oldact); -int sigaddset (sigset_t * set, int signum); -#if __MESC__ -void *signal (int signum, void *action); -#else -sighandler_t signal (int signum, sighandler_t action); -#endif -int sigemptyset (sigset_t * set); -#ifndef SIG_BLOCK -#define SIG_BLOCK 0 -#define SIG_UNBLOCK 1 -#define SIG_SETMASK 2 -#endif -int sigprocmask (int how, sigset_t const *set, sigset_t * oldset); - -#endif //! SYSTEM_LIBC - -#endif // __MES_SIGNAL_H diff --git a/sysa/mes-0.22/include/stdarg.h b/sysa/mes-0.22/include/stdarg.h deleted file mode 100644 index 6a8fee6a..00000000 --- a/sysa/mes-0.22/include/stdarg.h +++ /dev/null @@ -1,55 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_STDARG_H -#define __MES_STDARG_H 1 - -#if SYSTEM_LIBC -#undef __MES_STDARG_H -#include_next - -#define va_arg8(ap, type) va_arg(ap, type) - -#else // ! SYSTEM_LIBC - -#include - -#if __GNUC__ && __x86_64__ -#define __FOO_VARARGS 1 -#endif - -typedef char *va_list; -#define va_start(ap, last) (void)((ap) = (char*)(&(last) + 1)) -#define va_arg(ap, type) (type)(((long*)((ap) = ((ap) + sizeof (void*))))[-1]) -#define va_align(ap, alignment) ((char*)((((unsigned long) (ap)) + (alignment) - 1) &~ ((alignment) - 1))) -#define va_arg8(ap, type) (type)(((double*)((ap) = (va_align((ap), 8) + sizeof(double))))[-1]) -#define va_end(ap) (void)((ap) = 0) -#define va_copy(dest, src) dest = src - -int vexec (char const *file_name, va_list ap); -int vfprintf (FILE * stream, char const *template, va_list ap); -int vfscanf (FILE * stream, char const *template, va_list ap); -int vprintf (char const *format, va_list ap); -int vsprintf (char *str, char const *format, va_list ap); -int vsnprintf (char *str, size_t size, char const *format, va_list ap); -int vsscanf (char const *s, char const *template, va_list ap); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_STDARG_H diff --git a/sysa/mes-0.22/include/stdbool.h b/sysa/mes-0.22/include/stdbool.h deleted file mode 100644 index 6ad84b67..00000000 --- a/sysa/mes-0.22/include/stdbool.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_STDBOOL_H -#define __MES_STDBOOL_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_STDBOOL_H -#include_next - -#else // ! SYSTEM_LIBC -typedef int bool; -#define false 0 -#define true 1 -#endif // ! SYSTEM_LIBC - -#endif // __MES_STDBOOL_H diff --git a/sysa/mes-0.22/include/stddef.h b/sysa/mes-0.22/include/stddef.h deleted file mode 100644 index a597c9bb..00000000 --- a/sysa/mes-0.22/include/stddef.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_STDDEF_H -#define __MES_STDDEF_H 1 - -#if SYSTEM_LIBC -#undef __MES_STDDEF_H -#include_next -#else // ! SYSTEM_LIBC - -#include -#include -#include - -#ifndef offsetof -#if __MESC__ -#define offsetof(type, field) (&((type *)0)->field) -#else // !__MESC__ -#define offsetof(type, field) ((size_t)&((type *)0)->field) -#endif // !__MESC__ -#endif // offsetof - -#endif // ! SYSTEM_LIBC - -#endif // __MES_STDDEF_H diff --git a/sysa/mes-0.22/include/stdint.h b/sysa/mes-0.22/include/stdint.h deleted file mode 100644 index 8b8994e3..00000000 --- a/sysa/mes-0.22/include/stdint.h +++ /dev/null @@ -1,108 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * Copyright © 2018 Peter De Wachter - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_STDINT_H -#define __MES_STDINT_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_STDINT_H -#include_next - -#else // ! SYSTEM_LIBC - -#undef unsigned -#undef uint8_t -#undef int8_t - -#undef uint16_t -#undef int16_t - -#undef uint32_t -#undef int32_t - -#undef uint64_t -#undef int64_t - -#undef uintptr_t -#undef intmax_t -#undef intptr_t -#undef uintmax_t -#undef ptrdiff_t - -typedef unsigned char uint8_t; -typedef char int8_t; -typedef unsigned short uint16_t; -typedef short int16_t; -typedef unsigned uint32_t; -typedef int int32_t; -typedef unsigned long long uint64_t; -typedef long long int64_t; - -typedef int intmax_t; -typedef unsigned uintmax_t; - -#include - -#define CHAR_BIT 8 -#define CHAR_MAX 255 -#define UCHAR_MAX 255 - -#define INT8_MAX 127 -#define INT8_MIN (-INT8_MAX-1) -#define UINT8_MAX 255 - -#define INT16_MAX 32767 -#define INT16_MIN (-INT16_MAX-1) -#define UINT16_MAX 65535 - -#define INT32_MAX 2147483647 -#define INT32_MIN (-INT32_MAX-1) -#define UINT32_MAX 4294967295U - -#define INT64_MAX 9223372036854775807LL -#define INT64_MIN (-INT64_MAX-1) -#define UINT64_MAX 18446744073709551615ULL - -#define INT_MIN -2147483648 -#define INT_MAX 2147483647 -#if __i386__ -#define LONG_MIN INT_MIN -#define LONG_MAX INT_MAX -#define UINT_MAX UINT32_MAX -#define ULONG_MAX UINT32_MAX -#define LLONG_MIN INT64_MIN -#define LLONG_MAX INT64_MAX -#define SIZE_MAX UINT32_MAX -#elif __x86_64__ -#define LONG_MIN INT64_MIN -#define LONG_MAX INT64_MAX -#define UINT_MAX UINT32_MAX -#define ULONG_MAX UINT64_MAX -#define LLONG_MIN INT64_MIN -#define LLONG_MAX INT64_MAX -#define SIZE_MAX UINT64_MAX -#endif - -#endif // ! SYSTEM_LIBC - -#endif // __MES_STDINT_H diff --git a/sysa/mes-0.22/include/stdio.h b/sysa/mes-0.22/include/stdio.h deleted file mode 100644 index c8684e0f..00000000 --- a/sysa/mes-0.22/include/stdio.h +++ /dev/null @@ -1,94 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_STDIO_H -#define __MES_STDIO_H 1 - -#include - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_STDIO_H -#include_next - -#else // ! SYSTEM_LIBC - -#ifndef _IOFBF -#define _IOFBF 0 /* Fully buffered. */ -#define _IOLBF 1 /* Line buffered. */ -#define _IONBF 2 /* No buffering. */ -#endif - -#ifndef BUFSIZ -#define BUFSIZ 256 -#endif - -#ifndef L_tmpnam -#define L_tmpnam 100 -#endif - -#include - -#define stdin (FILE*)0 -#define stdout (FILE*)1 -#define stderr (FILE*)2 - -#define SEEK_SET 0 -#define SEEK_CUR 1 -#define SEEK_END 2 - -FILE *fdopen (int fd, char const *mode); -FILE *fopen (char const *file_name, char const *mode); -int eputc (int c); -int eputs (char const *s); -int fclose (FILE * stream); -int feof (FILE * stream); -int ferror (FILE * stream); -int fflush (FILE * stream); -int fgetc (FILE * stream); -char *fgets (char *s, int size, FILE * stream); -int fprintf (FILE * stream, char const *format, ...); -int fpurge (FILE * stream); -int fputc (int c, FILE * stream); -int fputs (char const *s, FILE * stream); -int fscanf (FILE * stream, char const *template, ...); -int fseek (FILE * stream, long offset, int whence); -int getc (FILE * stream); -int getchar (void); -char *getlogin (void); -int printf (char const *format, ...); -int putc (int c, FILE * stream); -int putchar (int c); -int puts (char const *s); -int remove (char const *file_name); -int setvbuf (FILE * stream, char *buf, int mode, size_t size); -int snprintf (char *str, size_t size, char const *format, ...); -int sprintf (char *str, char const *format, ...); -int sscanf (char const *str, char const *format, ...); -int ungetc (int c, FILE * stream); -long ftell (FILE * stream); -size_t fread (void *ptr, size_t size, size_t count, FILE * stream); -size_t freadahead (FILE * fp); -size_t fwrite (void const *ptr, size_t size, size_t count, FILE * stream); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_STDIO_H diff --git a/sysa/mes-0.22/include/stdlib.h b/sysa/mes-0.22/include/stdlib.h deleted file mode 100644 index 592a387b..00000000 --- a/sysa/mes-0.22/include/stdlib.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_STDLIB_H -#define __MES_STDLIB_H 1 - -#ifndef __MES_COMPARISON_FN_T -#define __MES_COMPARISON_FN_T -typedef int (*comparison_fn_t) (void const *, void const *); -#endif - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_STDLIB_H -#include_next -#else // ! SYSTEM_LIBC - -#include -#include - -void abort (void); -double atof (char const *s); -int atoi (char const *s); -int atexit (void (*function) (void)); -void *calloc (size_t nmemb, size_t size); -void _exit (int status); -void exit (int status); -void free (void *ptr); -char *getenv (char const *s); -int setenv (char const *s, char const *v, int overwrite_p); -void unsetenv (char const *name); -void *malloc (size_t); -void qsort (void *base, size_t nmemb, size_t size, int (*compar) (void const *, void const *)); -int rand (void); -void *realloc (void *p, size_t size); -double strtod (char const *string, char **tailptr); -float strtof (char const *string, char **tailptr); -long double strtold (char const *string, char **tailptr); -long strtol (char const *string, char **tailptr, int base); -long long strtoll (char const *string, char **tailptr, int base); -unsigned long strtoul (char const *string, char **tailptr, int base); -unsigned long long strtoull (char const *string, char **tailptr, int base); - -#define EXIT_FAILURE 1 -#define EXIT_SUCCESS 0 - -void *bsearch (void const *key, void const *array, size_t count, size_t size, comparison_fn_t compare); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_STDLIB_H diff --git a/sysa/mes-0.22/include/stdnoreturn.h b/sysa/mes-0.22/include/stdnoreturn.h deleted file mode 100644 index 1bc2278c..00000000 --- a/sysa/mes-0.22/include/stdnoreturn.h +++ /dev/null @@ -1,34 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_STDNORETURN_H -#define __MES_STDNORETURN_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_STDNORETURN_H -#include_next - -#else // ! SYSTEM_LIBC -// whut? -#endif // ! SYSTEM_LIBC - -#endif // __MES_STDNORETURN_H diff --git a/sysa/mes-0.22/include/string.h b/sysa/mes-0.22/include/string.h deleted file mode 100644 index 60b2887e..00000000 --- a/sysa/mes-0.22/include/string.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_STRING_H -#define __MES_STRING_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_STRING_H -#include_next - -#else // ! SYSTEM_LIBC - -#include - -void *memchr (void const *block, int c, size_t size); -void *memcpy (void *dest, void const *src, size_t n); -void *memmove (void *dest, void const *src, size_t n); -void *memset (void *s, int c, size_t n); -void *memchr (void const *block, int c, size_t size); -int memcmp (void const *s1, void const *s2, size_t n); -void *memmem (void const *haystack, int haystack_len, void const *needle, int needle_len); -char *strcat (char *dest, char const *src); -char *strchr (char const *s, int c); -int strcasecmp (char const *s1, char const *s2); -int strcmp (char const *, char const *); -char *strcpy (char *dest, char const *src); -size_t strlen (char const *); -char *strncpy (char *to, char const *from, size_t size); -int strncmp (char const *, char const *, size_t); -char *strrchr (char const *s, int c); -char *strstr (char const *haystack, char const *needle); -char *strlwr (char *string); -char *strupr (char *string); - - -char *strerror (int errnum); -void perror (char const *message); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_STRING_H diff --git a/sysa/mes-0.22/include/strings.h b/sysa/mes-0.22/include/strings.h deleted file mode 100644 index 04f94d66..00000000 --- a/sysa/mes-0.22/include/strings.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_STRINGS_H -#define __MES_STRINGS_H 1 - -#if SYSTEM_LIBC -#undef __MES_STRINGS_H -#include_next -#endif // (SYSTEM_LIBC) - -#endif // __MES_STRINGS_H diff --git a/sysa/mes-0.22/include/sys/cdefs.h b/sysa/mes-0.22/include/sys/cdefs.h deleted file mode 100644 index 26d12396..00000000 --- a/sysa/mes-0.22/include/sys/cdefs.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_CDEFS_H -#define __MES_SYS_CDEFS_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_CDEFS_H -#include_next -#endif // (SYSTEM_LIBC) - -#endif // __MES_SYS_CDEFS_H diff --git a/sysa/mes-0.22/include/sys/dir.h b/sysa/mes-0.22/include/sys/dir.h deleted file mode 100644 index 8bb60420..00000000 --- a/sysa/mes-0.22/include/sys/dir.h +++ /dev/null @@ -1,32 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_DIR_H -#define __MES_SYS_DIR_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_DIR_H -#include_next - -#else // ! SYSTEM_LIBC - - -#endif // ! SYSTEM_LIBC - -#endif // __MES_SYS_DIR_H diff --git a/sysa/mes-0.22/include/sys/file.h b/sysa/mes-0.22/include/sys/file.h deleted file mode 100644 index 4f122c40..00000000 --- a/sysa/mes-0.22/include/sys/file.h +++ /dev/null @@ -1,32 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_FILE_H -#define __MES_SYS_FILE_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_FILE_H -#include_next - -#else // ! SYSTEM_LIBC - - -#endif // ! SYSTEM_LIBC - -#endif // __MES_SYS_FILE_H diff --git a/sysa/mes-0.22/include/sys/ioctl.h b/sysa/mes-0.22/include/sys/ioctl.h deleted file mode 100644 index 2650929e..00000000 --- a/sysa/mes-0.22/include/sys/ioctl.h +++ /dev/null @@ -1,36 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_IOCTL_H -#define __MES_SYS_IOCTL_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_IOCTL_H -#include_next - -#else // ! SYSTEM_LIBC - -#define TCGETS 0x5401 -#define TCGETA 0x5405 -int ioctl (int fd, unsigned long request, ...); -int ioctl3 (int fd, unsigned long request, long data); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_SYS_IOCTL_H diff --git a/sysa/mes-0.22/include/sys/mman.h b/sysa/mes-0.22/include/sys/mman.h deleted file mode 100644 index 9f696b01..00000000 --- a/sysa/mes-0.22/include/sys/mman.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_MMAN_H -#define __MES_SYS_MMAN_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_MMAN_H -#include_next -#else // ! SYSTEM_LIBC - -#ifndef __MES_SIZE_T -#define __MES_SIZE_T -typedef unsigned long size_t; -#endif - -#define PROT_NONE 0 -#define PROT_READ 1 -#define PROT_WRITE 2 -#define PROT_EXEC 4 - -int mprotect (void *addr, size_t len, int prot); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_SYS_MMAN_H - diff --git a/sysa/mes-0.22/include/sys/param.h b/sysa/mes-0.22/include/sys/param.h deleted file mode 100644 index 6fe526f6..00000000 --- a/sysa/mes-0.22/include/sys/param.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_PARAM_H -#define __MES_SYS_PARAM_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_PARAM_H -#include_next - -#else // ! SYSTEM_LIBC - -#endif // ! SYSTEM_LIBC - -#endif // __MES_SYS_PARAM_H diff --git a/sysa/mes-0.22/include/sys/resource.h b/sysa/mes-0.22/include/sys/resource.h deleted file mode 100644 index dab45d17..00000000 --- a/sysa/mes-0.22/include/sys/resource.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_RESOURCE_H -#define __MES_SYS_RESOURCE_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_RESOURCE_H -#include_next - -#else // ! SYSTEM_LIBC - -#include - -struct rusage -{ - struct timeval ru_utime; - struct timeval ru_stime; - long int ru_maxrss; - long int ru_ixrss; - long int ru_idrss; - long int ru_isrss; - long int ru_minflt; - long int ru_majflt; - long int ru_nswap; - long int ru_inblock; - long int ru_oublock; - long int ru_msgsnd; - long int ru_msgrcv; - long int ru_nsignals; - long int ru_nvcsw; - long int ru_nivcsw; -}; - -#define RUSAGE_SELF 0 -#define RUSAGE_CHILDREN -1 -#define RLIMIT_NOFILE 1024 -#define OPEN_MAX RLIMIT_NOFILE - -int getrusage (int processes, struct rusage *rusage); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_SYS_RESOURCE_H diff --git a/sysa/mes-0.22/include/sys/select.h b/sysa/mes-0.22/include/sys/select.h deleted file mode 100644 index 420bd380..00000000 --- a/sysa/mes-0.22/include/sys/select.h +++ /dev/null @@ -1,30 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_SELECT_H -#define __MES_SYS_SELECT_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_SELECT_H -#include_next -#else //! SYSTEM_LIBC -typedef int fd_set; -#endif //! SYSTEM_LIBC - -#endif // __MES_SYS_SELECT_H diff --git a/sysa/mes-0.22/include/sys/stat.h b/sysa/mes-0.22/include/sys/stat.h deleted file mode 100644 index 891f31c8..00000000 --- a/sysa/mes-0.22/include/sys/stat.h +++ /dev/null @@ -1,123 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_STAT_H -#define __MES_SYS_STAT_H 1lei - -#if SYSTEM_LIBC -#undef __MES_SYS_STAT_H -#include_next - -#else // ! SYSTEM_LIBC - -#include -#include - -#ifndef __MES_MODE_T -#define __MES_MODE_T -typedef int mode_t; -#endif - -// *INDENT-OFF* -#if __i386__ -struct stat -{ - unsigned long st_dev; - unsigned long st_ino; - unsigned short st_mode; - unsigned short st_nlink; - unsigned short st_uid; - unsigned short st_gid; - unsigned long st_rdev; - long st_size; /* Linux: unsigned long; glibc: off_t (i.e. signed) */ - unsigned long st_blksize; - unsigned long st_blocks; - time_t st_atime; /* Linux: unsigned long; glibc: time_t */ - unsigned long st_atime_usec; - time_t st_mtime; /* Linux: unsigned long; glibc: time_t */ - unsigned long st_mtime_usec; - time_t st_ctime; /* Linux: unsigned long; glibc: time_t */ - unsigned long st_ctime_usec; - unsigned long __foo0; - unsigned long __foo1; -}; -#elif __x86_64__ -struct stat -{ - unsigned long st_dev; - unsigned long st_ino; - unsigned int st_mode; - unsigned int st_nlink; - unsigned int st_uid; - unsigned int st_gid; - unsigned long st_rdev; - long st_size; - unsigned long st_blksize; - unsigned long st_blocks; - time_t st_atime; - unsigned long st_atime_usec; - time_t st_mtime; - unsigned long st_mtime_usec; - time_t st_ctime; - unsigned long st_ctime_usec; - unsigned long __foo0; - unsigned long __foo1; -}; -#endif -// *INDENT-ON* - -int chmod (char const *file_name, mode_t mode); -int fstat (int filedes, struct stat *buf); -int mkdir (char const *file_name, mode_t mode); -int mknod (char const *file_name, mode_t mode, dev_t dev); -int chown (char const *file_name, uid_t owner, gid_t group); -int rmdir (char const *file_name); -int stat (char const *file_name, struct stat *buf); - -#define S_IFIFO 0010000 -#define S_IFCHR 0020000 -#define S_IFDIR 0040000 -#define S_IFBLK 0060000 -#define S_IFREG 0100000 -#define S_IFLNK 0120000 -#define S_IFMT 0170000 - -#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) -#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) -#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) - -#define S_IRWXU 00700 -#define S_IXUSR 00100 -#define S_IWUSR 00200 -#define S_IRUSR 00400 - -#define S_ISUID 0400 -#define S_ISGID 02000 -#define S_IXGRP 00010 -#define S_IXOTH 00001 -#define S_IRGRP 00040 -#define S_IROTH 00004 -#define S_IWGRP 00020 -#define S_IWOTH 00002 -#define S_IRWXG 00070 -#define S_IRWXO 00007 - -#endif // ! SYSTEM_LIBC - -#endif // __MES_SYS_STAT_H diff --git a/sysa/mes-0.22/include/sys/time.h b/sysa/mes-0.22/include/sys/time.h deleted file mode 100644 index 3a4dc2e9..00000000 --- a/sysa/mes-0.22/include/sys/time.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_TIME_H -#define __MES_SYS_TIME_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_TIME_H -#include_next - -#else // ! SYSTEM_LIBC - -struct timeval -{ - long tv_sec; - long tv_usec; -}; - -struct timezone -{ - int tz_minuteswest; - int tz_dsttime; -}; - -struct itimerval -{ - struct timeval it_interval; - struct timeval it_value; -}; - -#define ITIMER_REAL 0 -#define ITIMER_VIRTUAL 1 -#define ITIMER_PROF 2 - -int gettimeofday (struct timeval *tv, struct timezone *tz); -int setitimer (int which, struct itimerval const *new, struct itimerval *old); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_SYS_TIME_H diff --git a/sysa/mes-0.22/include/sys/timeb.h b/sysa/mes-0.22/include/sys/timeb.h deleted file mode 100644 index 13ec953e..00000000 --- a/sysa/mes-0.22/include/sys/timeb.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_TIMEB_H -#define __MES_SYS_TIMEB_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_TIMEB_H -#include_next -#endif // (SYSTEM_LIBC) - -#endif // __MES_SYS_TIMEB_H diff --git a/sysa/mes-0.22/include/sys/times.h b/sysa/mes-0.22/include/sys/times.h deleted file mode 100644 index 1b19d2f8..00000000 --- a/sysa/mes-0.22/include/sys/times.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_TIMES_H -#define __MES_SYS_TIMES_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_TIMES_H -#include_next - -#else // ! SYSTEM_LIBC - -#ifndef __MES_CLOCK_T -#define __MES_CLOCK_T -#undef clock_t -typedef long clock_t; -#endif - -#ifndef CLOCKS_PER_SEC -#define CLOCKS_PER_SEC 1000000 -#endif - -#ifndef HZ -#define HZ 100 -#endif - -struct tms -{ - clock_t tms_utime; - clock_t tms_stime; - clock_t tms_cutime; - clock_t tms_cstime; -}; - -#endif // ! SYSTEM_LIBC - -#endif // __MES_SYS_TIMES_H diff --git a/sysa/mes-0.22/include/sys/types.h b/sysa/mes-0.22/include/sys/types.h deleted file mode 100644 index a1b0726c..00000000 --- a/sysa/mes-0.22/include/sys/types.h +++ /dev/null @@ -1,152 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_TYPES_H -#define __MES_SYS_TYPES_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_TYPES_H -#include_next -#else // ! SYSTEM_LIBC - -#include - -#ifndef __MESCCLIB__ -#define __MESCCLIB__ 15 -#endif - -#ifndef EOF -#define EOF -1 -#endif - -#ifndef NULL -#define NULL 0 -#endif - -#ifndef __MES_CLOCK_T -#define __MES_CLOCK_T -#undef clock_t -typedef long clock_t; -#endif - -#ifndef __MES_DEV_T -#define __MES_DEV_T -#undef dev_t -typedef long dev_t; -#endif - -#if !defined (__MES_FILE_T) && ! defined (_FILE_T) -#define __MES_FILE_T -#define _FILE_T -typedef long FILE; -#endif - -#ifndef __MES_GID_T -#define __MES_GID_T -#undef gid_t -typedef unsigned gid_t; -#endif - -#ifndef __MES_INO_T -#define __MES_INO_T -#undef ino_t -typedef unsigned long ino_t; -#endif - -#ifndef __MES_INO64_T -#define __MES_INO64_T -#undef ino64_t -typedef unsigned long long ino64_t; -#endif - -#if !defined (__MES_INTPTR_T) && !defined (__intptr_t_defined) -#define __MES_INTPTR_T -#define __intptr_t_defined -#undef intptr_t -typedef long intptr_t; -#undef uintptr_t -typedef unsigned long uintptr_t; -#endif - -#ifndef __MES_OFF_T -#define __MES_OFF_T -#undef off_t -typedef long off_t; -#endif - -#ifndef __MES_OFF64_T -#define __MES_OFF64_T -#undef off64_t -typedef unsigned long long off64_t; -#endif - -#ifndef __MES_PID_T -#define __MES_PID_T -#undef pid_t -typedef int pid_t; -#endif - -#ifndef __PTRDIFF_T -#define __PTRDIFF_T -#ifndef __MES_PTRDIFF_T -#define __MES_PTRDIFF_T -#undef ptrdiff_t -typedef long ptrdiff_t; -#endif -#endif - -#ifndef __MES_SIGVAL_T -#define __MES_SIGVAL_T -#undef clock_t -typedef long sigval_t; -#endif - -#ifndef __SIZE_T -#define __SIZE_T -#ifndef __MES_SIZE_T -#define __MES_SIZE_T -#undef size_t -typedef unsigned long size_t; -#endif -#endif - -#ifndef __MES_SSIZE_T -#define __MES_SSIZE_T -#undef ssize_t -typedef long ssize_t; -#endif - -#ifndef __MES_UID_T -#define __MES_UID_T -#undef uid_t -typedef unsigned uid_t; -#endif - -#ifndef __WCHAR_T -#define __WCHAR_T -#ifndef __MES_WCHAR_T -#define __MES_WCHAR_T -#undef wchar_t -typedef int wchar_t; -#endif -#endif - -#endif // ! SYSTEM_LIBC - -#endif // __MES_SYS_TYPES_H diff --git a/sysa/mes-0.22/include/sys/ucontext.h b/sysa/mes-0.22/include/sys/ucontext.h deleted file mode 100644 index 3cc761d3..00000000 --- a/sysa/mes-0.22/include/sys/ucontext.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_UCONTEXT_H -#define __MES_SYS_UCONTEXT_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_UCONTEXT_H -#include_next -#endif // (SYSTEM_LIBC) - -#endif // __MES_SYS_UCONTEXT_H diff --git a/sysa/mes-0.22/include/sys/user.h b/sysa/mes-0.22/include/sys/user.h deleted file mode 100644 index 3e984344..00000000 --- a/sysa/mes-0.22/include/sys/user.h +++ /dev/null @@ -1,111 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_USER_H -#define __MES_SYS_USER_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_USER_H -#include_next - -#else // ! SYSTEM_LIBC - -/* These are the 32-bit x86 structures. */ -struct user_fpregs_struct -{ - long int cwd; - long int swd; - long int twd; - long int fip; - long int fcs; - long int foo; - long int fos; - long int st_space[20]; -}; - -struct user_fpxregs_struct -{ - unsigned short int cwd; - unsigned short int swd; - unsigned short int twd; - unsigned short int fop; - long int fip; - long int fcs; - long int foo; - long int fos; - long int mxcsr; - long int reserved; - long int st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ - long int xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */ - long int padding[56]; -}; - -struct user_regs_struct -{ - long int ebx; - long int ecx; - long int edx; - long int esi; - long int edi; - long int ebp; - long int eax; - long int xds; - long int xes; - long int xfs; - long int xgs; - long int orig_eax; - long int eip; - long int xcs; - long int eflags; - long int esp; - long int xss; -}; - -// *INDENT-OFF* -struct user -{ - struct user_regs_struct regs; - int u_fpvalid; - struct user_fpregs_struct i387; - unsigned long int u_tsize; - unsigned long int u_dsize; - unsigned long int u_ssize; - unsigned long int start_code; - unsigned long int start_stack; - long int signal; - int reserved; - struct user_regs_struct *u_ar0; - struct user_fpregs_struct *u_fpstate; - unsigned long int magic; - char u_comm [32]; - int u_debugreg [8]; -}; - -#define PAGE_SHIFT 12 -#define PAGE_SIZE (1UL << PAGE_SHIFT) -#define PAGE_MASK (~(PAGE_SIZE-1)) -#define NBPG PAGE_SIZE -#define UPAGES 1 -#define HOST_TEXT_START_ADDR (u.start_code) -#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) -// *INDENT-ON* - -#endif // ! SYSTEM_LIBC - -#endif // __MES_SYS_USER_H diff --git a/sysa/mes-0.22/include/sys/wait.h b/sysa/mes-0.22/include/sys/wait.h deleted file mode 100644 index 4cff86fc..00000000 --- a/sysa/mes-0.22/include/sys/wait.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_SYS_WAIT_H -#define __MES_SYS_WAIT_H 1 - -#if SYSTEM_LIBC -#undef __MES_SYS_WAIT_H -#include_next -#else // ! SYSTEM_LIBC - -#ifndef __MES_PID_T -#define __MES_PID_T -typedef int pid_t; -#endif - -#define WNOHANG 1 -#define W_EXITCODE(status, signal) ((status) << 8 | (signal)) - -pid_t waitpid (pid_t pid, int *status_ptr, int options); -pid_t wait (int *status_ptr); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_SYS_WAIT_H diff --git a/sysa/mes-0.22/include/termio.h b/sysa/mes-0.22/include/termio.h deleted file mode 100644 index af6c6283..00000000 --- a/sysa/mes-0.22/include/termio.h +++ /dev/null @@ -1,72 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_TERMIO_H -#define __MES_TERMIO_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_TERMIO_H -#include_next - -#else // ! SYSTEM_LIBC - -#define TIOCGWINSZ 0x5413 -#define TCGETA 0x5405 -#define TCSETAW 0x5407 - -#define VTIME 5 -#define VMIN 6 - -#define ISIG 0000001 -#define ICANON 0000002 -#define ECHO 0000010 -#define ECHOK 0000040 -#define ECHONL 0000100 - -#define ISTRIP 0000040 -#define INLCR 0000100 -#define ICRNL 0000400 - -#define CS8 0000060 -#define PARENB 0000400 - -struct winsize -{ - unsigned short ws_row; - unsigned short ws_col; - unsigned short ws_xpixel; - unsigned short ws_ypixel; -}; - -struct termio -{ - unsigned short c_iflag; - unsigned short c_oflag; - unsigned short c_cflag; - unsigned short c_lflag; - unsigned char c_line; - unsigned char c_cc[8]; -}; - -#endif // ! SYSTEM_LIBC - -#endif // __MES_TERMIO_H diff --git a/sysa/mes-0.22/include/time.h b/sysa/mes-0.22/include/time.h deleted file mode 100644 index 161d006f..00000000 --- a/sysa/mes-0.22/include/time.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_TIME_H -#define __MES_TIME_H 1 - -#if SYSTEM_LIBC -#undef __MES_TIME_H -#include_next -#else // ! SYSTEM_LIBC - -#ifndef __MES_TIME_T -#define __MES_TIME_T 1 -typedef long int clockid_t; -typedef long int time_t; -#endif - -struct tm -{ - int tm_sec; - int tm_min; - int tm_hour; - int tm_mday; - int tm_mon; - int tm_year; - int tm_wday; - int tm_yday; - int tm_isdst; -}; - -#ifndef __MES_STRUCT_TIMESPEC -#define __MES_STRUCT_TIMESPEC - -struct timespec -{ - long tv_sec; - long tv_nsec; -}; - -#endif // __MES_STRUCT_TIMESPEC - -#define CLOCK_PROCESS_CPUTIME_ID 2 -int clock_gettime (clockid_t clk_id, struct timespec *tp); -struct tm *localtime (time_t const *timep); -struct tm *gmtime (time_t const *time); -time_t mktime (struct tm *broken_time); -int nanosleep (struct timespec const *requested_time, struct timespec const *remaining); -time_t time (time_t * tloc); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_TIME_H diff --git a/sysa/mes-0.22/include/unistd.h b/sysa/mes-0.22/include/unistd.h deleted file mode 100644 index 86353729..00000000 --- a/sysa/mes-0.22/include/unistd.h +++ /dev/null @@ -1,98 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ -#ifndef __MES_UNISTD_H -#define __MES_UNISTD_H 1 - -#if SYSTEM_LIBC -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#endif -#undef __MES_UNISTD_H -#include_next - -#else // ! SYSTEM_LIBC - -#if defined (BOOTSTRAP_WITH_POSIX) -#define _POSIX_VERSION 199009L -#endif - -#include -#ifndef NULL -#define NULL 0 -#endif - -#ifndef STDIN_FILENO -#define STDIN_FILENO 0 -#define STDOUT_FILENO 1 -#define STDERR_FILENO 2 -#endif // STDIN_FILENO - -#ifndef STDIN_FILE_NO -#define STDIN_FILE_NO 0 -#define STDOUT_FILE_NO 1 -#define STDERR_FILE_NO 2 -#endif // STDIN_FILE_NO - -#ifndef R_OK -#define F_OK 0 -#define X_OK 1 -#define W_OK 2 -#define R_OK 4 -#endif - -int access (char const *s, int mode); -unsigned int alarm (unsigned int seconds); -int close (int fd); -int execv (char const *file_name, char *const argv[]); -int execl (char const *file_name, char const *arg, ...); -int execlp (char const *file_name, char const *arg, ...); -int execve (char const *file, char *const argv[], char *const env[]); -int execvp (char const *file, char *const argv[]); -int fork (void); -int fsync (int filedes); -char *getcwd (char *buf, size_t size); -uid_t getuid (void); -gid_t getgid (void); -int setgid (gid_t newgid); -int setuid (uid_t newuid); -uid_t geteuid (void); -gid_t getegid (void); -pid_t getpgrp (void); -pid_t getpid (void); -pid_t getppid (void); -int getpgid (pid_t pid); -int isatty (int fd); -int link (char const *old_name, char const *new_name); -off_t lseek (int fd, off_t offset, int whence); -ssize_t read (int fd, void *buffer, size_t size); -ssize_t readlink (char const *file_name, char *buffer, size_t size); -#if __SBRK_CHAR_PTRDIFF -/* xmalloc in binutils <= 2.10.1 uses this old prototype */ -char *sbrk (ptrdiff_t delta); -#else -void *sbrk (intptr_t delta); -#endif -int symlink (char const *old_name, char const *new_name); -int unlink (char const *file_name); -ssize_t write (int filedes, void const *buffer, size_t size); - -#endif // ! SYSTEM_LIBC - -#endif // __MES_UNISTD_H diff --git a/sysa/mes-0.22/lib/ctype/isalnum.c b/sysa/mes-0.22/lib/ctype/isalnum.c deleted file mode 100644 index f7917ac8..00000000 --- a/sysa/mes-0.22/lib/ctype/isalnum.c +++ /dev/null @@ -1,27 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -isalnum (int c) -{ - return isdigit (c) || isalpha (c); -} diff --git a/sysa/mes-0.22/lib/ctype/isalpha.c b/sysa/mes-0.22/lib/ctype/isalpha.c deleted file mode 100644 index 142a8844..00000000 --- a/sysa/mes-0.22/lib/ctype/isalpha.c +++ /dev/null @@ -1,27 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -isalpha (int c) -{ - return islower (c) || isupper (c); -} diff --git a/sysa/mes-0.22/lib/ctype/isascii.c b/sysa/mes-0.22/lib/ctype/isascii.c deleted file mode 100644 index 48fa8f88..00000000 --- a/sysa/mes-0.22/lib/ctype/isascii.c +++ /dev/null @@ -1,27 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -isascii (int c) -{ - return c >= 0 && c <= 127; -} diff --git a/sysa/mes-0.22/lib/ctype/iscntrl.c b/sysa/mes-0.22/lib/ctype/iscntrl.c deleted file mode 100644 index 82d4c3de..00000000 --- a/sysa/mes-0.22/lib/ctype/iscntrl.c +++ /dev/null @@ -1,27 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -iscntrl (int c) -{ - return c >= 0 && c < 32; -} diff --git a/sysa/mes-0.22/lib/ctype/isdigit.c b/sysa/mes-0.22/lib/ctype/isdigit.c deleted file mode 100644 index 71798cc2..00000000 --- a/sysa/mes-0.22/lib/ctype/isdigit.c +++ /dev/null @@ -1,27 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -isdigit (int c) -{ - return c >= '0' && c <= '9'; -} diff --git a/sysa/mes-0.22/lib/ctype/isgraph.c b/sysa/mes-0.22/lib/ctype/isgraph.c deleted file mode 100644 index 4d8458b7..00000000 --- a/sysa/mes-0.22/lib/ctype/isgraph.c +++ /dev/null @@ -1,27 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -isgraph (int c) -{ - return c > 32 && c < 127; -} diff --git a/sysa/mes-0.22/lib/ctype/islower.c b/sysa/mes-0.22/lib/ctype/islower.c deleted file mode 100644 index 4a34e7dc..00000000 --- a/sysa/mes-0.22/lib/ctype/islower.c +++ /dev/null @@ -1,27 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -islower (int c) -{ - return c >= 'a' && c <= 'z'; -} diff --git a/sysa/mes-0.22/lib/ctype/isnumber.c b/sysa/mes-0.22/lib/ctype/isnumber.c deleted file mode 100644 index 4c378865..00000000 --- a/sysa/mes-0.22/lib/ctype/isnumber.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -isnumber (int c, int base) -{ - if (base == 2) - return (c >= '0') && (c <= '1'); - if (base == 8) - return (c >= '0') && (c <= '7'); - if (base == 10) - return isdigit (c); - if (base == 16) - return isxdigit (c); -} diff --git a/sysa/mes-0.22/lib/ctype/isprint.c b/sysa/mes-0.22/lib/ctype/isprint.c deleted file mode 100644 index b0b4be8c..00000000 --- a/sysa/mes-0.22/lib/ctype/isprint.c +++ /dev/null @@ -1,27 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -isprint (int c) -{ - return c >= 32 && c < 127; -} diff --git a/sysa/mes-0.22/lib/ctype/ispunct.c b/sysa/mes-0.22/lib/ctype/ispunct.c deleted file mode 100644 index 5266012e..00000000 --- a/sysa/mes-0.22/lib/ctype/ispunct.c +++ /dev/null @@ -1,27 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -ispunct (int c) -{ - return isprint (c) && !isspace (c) && !isalnum (c); -} diff --git a/sysa/mes-0.22/lib/ctype/isspace.c b/sysa/mes-0.22/lib/ctype/isspace.c deleted file mode 100644 index 50f6e337..00000000 --- a/sysa/mes-0.22/lib/ctype/isspace.c +++ /dev/null @@ -1,27 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -isspace (int c) -{ - return (c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r' || c == ' '); -} diff --git a/sysa/mes-0.22/lib/ctype/isupper.c b/sysa/mes-0.22/lib/ctype/isupper.c deleted file mode 100644 index 7b702e30..00000000 --- a/sysa/mes-0.22/lib/ctype/isupper.c +++ /dev/null @@ -1,27 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -isupper (int c) -{ - return c >= 'A' && c <= 'Z'; -} diff --git a/sysa/mes-0.22/lib/ctype/isxdigit.c b/sysa/mes-0.22/lib/ctype/isxdigit.c deleted file mode 100644 index 13f7a66d..00000000 --- a/sysa/mes-0.22/lib/ctype/isxdigit.c +++ /dev/null @@ -1,28 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include -#include - -int -isxdigit (int c) -{ - return isdigit (c) || (c >= 'a' && c <= 'f'); -} diff --git a/sysa/mes-0.22/lib/ctype/tolower.c b/sysa/mes-0.22/lib/ctype/tolower.c deleted file mode 100644 index 19fa82c1..00000000 --- a/sysa/mes-0.22/lib/ctype/tolower.c +++ /dev/null @@ -1,29 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -tolower (int c) -{ - if (isupper (c)) - return c + ('a' - 'A'); - return c; -} diff --git a/sysa/mes-0.22/lib/ctype/toupper.c b/sysa/mes-0.22/lib/ctype/toupper.c deleted file mode 100644 index 444bae20..00000000 --- a/sysa/mes-0.22/lib/ctype/toupper.c +++ /dev/null @@ -1,29 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include - -int -toupper (int c) -{ - if (islower (c)) - return c - ('a' - 'A'); - return c; -} diff --git a/sysa/mes-0.22/lib/dirent/__getdirentries.c b/sysa/mes-0.22/lib/dirent/__getdirentries.c deleted file mode 100644 index 16be95d4..00000000 --- a/sysa/mes-0.22/lib/dirent/__getdirentries.c +++ /dev/null @@ -1,36 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright (C) 1993 Free Software Foundation, Inc. - * Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -// Taken from GNU C Library 1.06.4 - -#include -#include -#include -#include - -int -__getdirentries (int filedes, char *buffer, size_t nbytes, off_t * basep) -{ - if (basep) - *basep = lseek (filedes, (off_t) 0, SEEK_CUR); - - return read (filedes, buffer, nbytes); -} diff --git a/sysa/mes-0.22/lib/dirent/closedir.c b/sysa/mes-0.22/lib/dirent/closedir.c deleted file mode 100644 index 325e6920..00000000 --- a/sysa/mes-0.22/lib/dirent/closedir.c +++ /dev/null @@ -1,54 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright (C) 1991, 1993, 1995, 1996, 1998 Free Software Foundation, Inc. - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -// Taken from GNU C Library 2.2.5 - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -/* Close the directory stream DIRP. - Return 0 if successful, -1 if not. */ -int -closedir (DIR * dirp) -{ - int filedes; - - if (dirp == NULL) - { - errno = EINVAL; - return -1; - } - - filedes = dirp->fd; - free (dirp); - - return close (filedes); -} diff --git a/sysa/mes-0.22/lib/dirent/opendir.c b/sysa/mes-0.22/lib/dirent/opendir.c deleted file mode 100644 index f0916056..00000000 --- a/sysa/mes-0.22/lib/dirent/opendir.c +++ /dev/null @@ -1,82 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright (C) 1991-1996,98,2000,2001 Free Software Foundation, Inc. - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -// Taken from GNU C Library 2.2.5 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -/* Open a directory stream on NAME. */ -DIR * -opendir (char const *name) -{ - DIR *dirp; - struct stat statbuf; - int fd; - size_t allocation; - int save_errno; - - if (name[0] == '\0') - { - /* POSIX.1-1990 says an empty name gets ENOENT; - but `open' might like it fine. */ - errno = ENOENT; - return 0; - } - - fd = open (name, O_RDONLY | O_DIRECTORY); - if (fd < 0) - return 0; - - if (fstat (fd, &statbuf) < 0) - goto lose; - - if (fcntl (fd, F_SETFD, FD_CLOEXEC) < 0) - goto lose; - - allocation = statbuf.st_blksize; - - dirp = (DIR *) calloc (1, sizeof (DIR) + allocation); - if (!dirp) - lose: - { - save_errno = errno; - close (fd); - errno = save_errno; - return 0; - } - dirp->data = (char *) (dirp + 1); - dirp->allocation = allocation; - dirp->fd = fd; - - return dirp; -} diff --git a/sysa/mes-0.22/lib/dirent/readdir.c b/sysa/mes-0.22/lib/dirent/readdir.c deleted file mode 100644 index 2e340e22..00000000 --- a/sysa/mes-0.22/lib/dirent/readdir.c +++ /dev/null @@ -1,88 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright (C) 1991,92,93,94,95,96,97,99,2000 Free Software Foundation, Inc. - * Copyright © 2018 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -// Taken from GNU C Library 2.2.5 - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -int getdents (int filedes, char *buffer, size_t nbytes); - -/* Read a directory entry from DIRP. */ -struct dirent * -readdir (DIR * dirp) -{ - struct dirent *dp; - int saved_errno = errno; - - do - { - size_t reclen; - - if (dirp->offset >= dirp->size) - { - /* We've emptied out our buffer. Refill it. */ - - size_t maxread; - ssize_t bytes; - - maxread = dirp->allocation; - -#if 0 - off_t base; - bytes = __getdirentries (dirp->fd, dirp->data, maxread, &base); -#else - bytes = getdents (dirp->fd, dirp->data, maxread); -#endif - if (bytes <= 0) - { - /* Don't modifiy errno when reaching EOF. */ - if (bytes == 0) - errno = saved_errno; - dp = 0; - break; - } - dirp->size = (size_t) bytes; - - /* Reset the offset into the buffer. */ - dirp->offset = 0; - } - - dp = (struct dirent *) &dirp->data[dirp->offset]; - - reclen = dp->d_reclen; - dirp->offset += reclen; - dirp->filepos = dp->d_off; - - /* Skip deleted files. */ - } - while (dp->d_ino == 0); - - return dp; -} diff --git a/sysa/mes-0.22/lib/freebsd/x86-mes-gcc/crt1.c b/sysa/mes-0.22/lib/freebsd/x86-mes-gcc/crt1.c deleted file mode 100644 index a5998043..00000000 --- a/sysa/mes-0.22/lib/freebsd/x86-mes-gcc/crt1.c +++ /dev/null @@ -1,76 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include -//int main (int argc, char *argv[], char *envp[]); - -// *INDENT-OFF* -void -_start () -{ - asm ( - "mov $0,%%eax\n\t" - "mov %%eax,%0\n" - : "=r" (__stdin) - : //no inputs "" - ); - - asm ( - "mov $1,%%eax\n\t" - "mov %%eax,%0\n" - : "=r" (__stdout) - : //no inputs "" - ); - - asm ( - "mov $2,%%eax\n\t" - "mov %%eax,%0\n" - : "=r" (__stderr) - : //no inputs "" - ); - asm ( - "mov %%ebp,%%eax\n\t" - "add $4,%%eax\n\t" - "movzbl (%%eax),%%eax\n\t" - "add $3,%%eax\n\t" - "shl $2,%%eax\n\t" - "add %%ebp,%%eax\n\t" - "mov %%eax,%0\n\t" - "push %%eax\n\t" - : "=r" (environ) - : //no inputs "" - ); - asm ( - "mov %ebp,%eax\n\t" - "add $8,%eax\n\t" - "push %eax\n\t" - - "mov %ebp,%eax\n\t" - "add $4,%eax\n\t" - "movzbl (%eax),%eax\n\t" - "push %eax\n\t" - - "call main\n\t" - - "push %eax\n\t" - "call _exit\n\t" - "hlt \n\t" - ); -} diff --git a/sysa/mes-0.22/lib/freebsd/x86-mes-gcc/exit-42.S b/sysa/mes-0.22/lib/freebsd/x86-mes-gcc/exit-42.S deleted file mode 100644 index 503186db..00000000 --- a/sysa/mes-0.22/lib/freebsd/x86-mes-gcc/exit-42.S +++ /dev/null @@ -1,47 +0,0 @@ -/* - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -/** Commentary: */ - -/* Using gdb, esp. GUD in GNU Emacs is recommended -M-x gdb-display-disassembly-buffer -M-x gdb-display-io-buffer -set disassemble-next-line on -break _start -run -info registers -si -p/x $eax -RET -... -*/ - -/** Code: */ - -SYS_exit = 1 /* FreeBSD syscall: exit. */ - .globl _start /* Magic linker symbol: --entry-address. */ - - .text /* Program text. */ -_start: - mov $SYS_exit,%eax /* System call function: exit, in %eax. */ - push $42 /* Push first parameter: exit status. */ - push $00 /* Push ??. */ - int $0x80 /* Call system. */ - hlt /* Should not be reached. */ diff --git a/sysa/mes-0.22/lib/freebsd/x86-mes-gcc/hello-mes.S b/sysa/mes-0.22/lib/freebsd/x86-mes-gcc/hello-mes.S deleted file mode 100644 index 154babec..00000000 --- a/sysa/mes-0.22/lib/freebsd/x86-mes-gcc/hello-mes.S +++ /dev/null @@ -1,60 +0,0 @@ -/* - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -/** Commentary: */ - -/* Using gdb, esp. GUD in GNU Emacs is recommended -M-x gdb-display-disassembly-buffer -M-x gdb-display-io-buffer -set disassemble-next-line on -break _start -run -info registers -si -p/x $eax -RET -... -*/ - -/** Code: */ - -SYS_exit = 1 /* Linux syscalls. */ -SYS_write = 4 -stdout = 1 /* File discriptor */ - .globl _start /* Magic linker symbol: --entry-address. */ - - .text /* Program text. */ -_start: - mov $SYS_write,%eax /* System call function: write, in %eax. */ - push $(bye-hello) /* 3rd parameter: byte count. */ - push $hello /* 2nd parameter: address. */ - push $stdout /* 1st parameter: file descriptor. */ - push $0 /* ?? */ - int $0x80 /* Call system. */ - - mov $SYS_exit,%eax /* System call function: exit, in %eax. */ - push $0 /* 1st parameter: exit status. */ - push $0 /* ?? */ - int $0x80 /* Call system. */ - hlt /* Should not be reached. */ - - .data -hello: .ascii "Hello, GNU Mes!\n" -bye: .byte 0 diff --git a/sysa/mes-0.22/lib/freebsd/x86-mes-gcc/mini.c b/sysa/mes-0.22/lib/freebsd/x86-mes-gcc/mini.c deleted file mode 100644 index 7978ee25..00000000 --- a/sysa/mes-0.22/lib/freebsd/x86-mes-gcc/mini.c +++ /dev/null @@ -1,64 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include "mes/lib-mini.h" - -#define SYS_exit "0x01" -#define SYS_write "0x04" - -// *INDENT-OFF* -void -_exit (int code) -{ - asm ( - "mov $"SYS_exit",%%eax\n\t" - "mov %0,%%ebx\n\t" - "push %%ebx\n\t" - "push %%ebx\n\t" - "int $0x80\n\t" - : // no outputs "=" (r) - : "rm" (code) - : "eax", "ebx" - ); - // not reached - _exit (0); -} - -ssize_t -_write (int filedes, void const *buffer, size_t size) -{ - long r; - asm ( - "mov $"SYS_write",%%eax\n\t" - "mov %3,%%edx\n\t" - "push %%edx\n\t" - "mov %2,%%ecx\n\t" - "push %%ecx\n\t" - "mov %1,%%ebx\n\t" - "push %%ebx\n\t" - "push %%ebx\n\t" - "int $0x80\n\t" - "mov %%eax,%0\n\t" - : "=r" (r) - : "rm" (filedes), "rm" (buffer), "rm" (size) - : "eax", "ebx", "ecx", "edx" - ); - return r; -} diff --git a/sysa/mes-0.22/lib/freebsd/x86-mes-mescc/crt1.c b/sysa/mes-0.22/lib/freebsd/x86-mes-mescc/crt1.c deleted file mode 100644 index 0e92ad34..00000000 --- a/sysa/mes-0.22/lib/freebsd/x86-mes-mescc/crt1.c +++ /dev/null @@ -1,65 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017,2018,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -#include "mes/lib-mini.h" - -int main (int argc, char *argv[], char *envp[]); - -int -_start () -{ - asm ("mov____$i8,%eax !0"); - asm ("mov____%eax,0x32 &__stdin"); - - asm ("mov____$i8,%eax !1"); - asm ("mov____%eax,0x32 &__stdout"); - - asm ("mov____$i8,%eax !2"); - asm ("mov____%eax,0x32 &__stderr"); - - asm ("mov____%ebp,%eax"); - asm ("add____$i8,%eax !4"); - - asm ("movzbl_(%eax),%eax"); - asm ("add____$i8,%eax !3"); - - asm ("shl____$i8,%eax !0x02"); - asm ("add____%ebp,%eax"); - asm ("mov____%eax,0x32 &environ"); - asm ("push___%eax"); - - asm ("mov____%ebp,%eax"); - asm ("add____$i8,%eax !8"); - asm ("push___%eax"); - - asm ("mov____%ebp,%eax"); - asm ("add____$i8,%eax !4"); - asm ("movzbl_(%eax),%eax"); - asm ("push___%eax"); - - main (); - - asm ("mov____%eax,%ebx"); - asm ("mov____$i32,%eax %1"); - asm ("push___%ebx"); - asm ("push___%ebx"); - asm ("int____$0x80"); - asm ("hlt"); -} diff --git a/sysa/mes-0.22/lib/freebsd/x86-mes-mescc/mini.c b/sysa/mes-0.22/lib/freebsd/x86-mes-mescc/mini.c deleted file mode 100644 index 7756a7ae..00000000 --- a/sysa/mes-0.22/lib/freebsd/x86-mes-mescc/mini.c +++ /dev/null @@ -1,43 +0,0 @@ -/* -*-comment-start: "//";comment-end:""-*- - * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2019 Jan (janneke) Nieuwenhuizen - * - * This file is part of GNU Mes. - * - * GNU Mes is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or (at - * your option) any later version. - * - * GNU Mes is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Mes. If not, see . - */ - -void -_exit () -{ - asm ("mov____$i32,%eax SYS_exit"); - asm ("mov____0x8(%ebp),%ebx !8"); - asm ("push___%ebx"); - asm ("push___%ebx"); - asm ("int____$0x80"); -} - -void -_write () -{ - asm ("mov____$i32,%eax SYS_write"); - asm ("mov____0x8(%ebp),%edx !16"); - asm ("push___%edx"); - asm ("mov____0x8(%ebp),%ecx !12"); - asm ("push___%ecx"); - asm ("mov____0x8(%ebp),%ebx !8"); - asm ("push___%ebx"); - asm ("push___%ebx"); - asm ("int____$0x80"); -} diff --git a/sysa/mes-0.22/lib/freebsd/x86-mes/elf32-0exit-42.hex2 b/sysa/mes-0.22/lib/freebsd/x86-mes/elf32-0exit-42.hex2 deleted file mode 100644 index b00bc38d..00000000 --- a/sysa/mes-0.22/lib/freebsd/x86-mes/elf32-0exit-42.hex2 +++ /dev/null @@ -1,39 +0,0 @@ -### GNU Mes --- Maxwell Equations of Software -### Copyright © 2017,2019 Jan (janneke) Nieuwenhuizen -### -### This file is part of GNU Mes. -### -### GNU Mes is free software; you can redistribute it and/or modify it -### under the terms of the GNU General Public License as published by -### the Free Software Foundation; either version 3 of the License, or (at -### your option) any later version. -### -### GNU Mes is distributed in the hope that it will be useful, but -### WITHOUT ANY WARRANTY; without even the implied warranty of -### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -### GNU General Public License for more details. -### -### You should have received a copy of the GNU General Public License -### along with GNU Mes. If not, see . - -### Commentary: - -# elf32-exit-42.hex2: `exit 42' for i686-freebsd written in hex2 assembly, -# for usage with elf32-0header.hex2. This produces a 112-byte binary -# (70 hex). Inspiration was taken from GNU Gcc output of exit-42.S. - -### Code: - -# DEFINE SYS_exit 1 - -# @60 -:ELF_text -b8 01 00 00 00 # mov SYS_exit,%eax -68 2a 00 00 00 # push $42 -68 00 00 00 00 # push $00 -cd 80 # int $0x80 -f4 # hlt - - 00 00 00 00 00 00 # align to @80 -00 00 00 00 00 00 00 00 -:ELF_end diff --git a/sysa/mes-0.22/lib/freebsd/x86-mes/elf32-0header.hex2 b/sysa/mes-0.22/lib/freebsd/x86-mes/elf32-0header.hex2 deleted file mode 100644 index 542fa55d..00000000 --- a/sysa/mes-0.22/lib/freebsd/x86-mes/elf32-0header.hex2 +++ /dev/null @@ -1,85 +0,0 @@ -### Copyright (C) 2016 Jeremiah Orians -### Copyright (C) 2017,2019 Jan (janneke) Nieuwenhuizen -### -### This file is part of GNU Mes. -### -### GNU Mes is free software; you can redistribute it and/or modify it -### under the terms of the GNU General Public License as published by -### the Free Software Foundation; either version 3 of the License, or (at -### your option) any later version. -### -### GNU Mes is distributed in the hope that it will be useful, but -### WITHOUT ANY WARRANTY; without even the implied warranty of -### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -### GNU General Public License for more details. -### -### You should have received a copy of the GNU General Public License -### along with GNU Mes. If not, see . - -### Commentary: - -# elf32-0header.hex2: Simplest 32 bit elf header in hex2. Only a text -# segment, no data segment, no symbol tables. - -# stage0's hex2 format for x86 -# !