From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Jan Nieuwenhuizen Newsgroups: gmane.comp.gnu.guix.devel,gmane.lisp.guile.user Subject: Mes 0.9 released Date: Wed, 26 Jul 2017 14:11:05 +0200 Message-ID: <87eft3e6ue.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: blaine.gmane.org 1501071357 10370 195.159.176.226 (26 Jul 2017 12:15:57 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 26 Jul 2017 12:15:57 +0000 (UTC) Cc: guix-devel@gnu.org, epsilon-devel@gnu.org, bootstrappable@freelists.org To: guile-user@gnu.org Original-X-From: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Wed Jul 26 14:15:51 2017 Return-path: Envelope-to: gcggd-guix-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1daLEF-0002OS-Qd for gcggd-guix-devel@m.gmane.org; Wed, 26 Jul 2017 14:15:51 +0200 Original-Received: from localhost ([::1]:37918 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1daLEL-0003OI-Jg for gcggd-guix-devel@m.gmane.org; Wed, 26 Jul 2017 08:15:57 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:39698) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1daLA6-0007yj-TX for guix-devel@gnu.org; Wed, 26 Jul 2017 08:11:36 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1daLA5-0005Tp-K5 for guix-devel@gnu.org; Wed, 26 Jul 2017 08:11:34 -0400 Original-Received: from fencepost.gnu.org ([2001:4830:134:3::e]:55801) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1daL9g-0005Ar-CN; Wed, 26 Jul 2017 08:11:08 -0400 Original-Received: from peder.onsbrabantnet.nl ([88.159.206.46]:43484 helo=dundal.peder.onsbrabantnet.nl) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1daL9f-0004DK-UB; Wed, 26 Jul 2017 08:11:08 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Original-Sender: "Guix-devel" Xref: news.gmane.org gmane.comp.gnu.guix.devel:38729 gmane.lisp.guile.user:13980 Archived-At: 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. Also, mescc can now compile 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=3Dv0.= 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. Th= anks, rain1! ** Mescc *** Mescc now compiles a modified tinycc into a running [mostly segfaultin= g] 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 >>=3D, <<=3D, ^=3D, ~. *** 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, Guile= -2.2 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. ** Noteworthy bug fixes *** 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.h= tml [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%25201.5%25= 20Programmers%2520Manual.pdf --=20 Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.com