unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* Mes 0.9 released
@ 2017-07-26 12:11 Jan Nieuwenhuizen
  2017-07-26 20:09 ` Arne Babenhauserheide
  2017-07-27 14:54 ` Christopher Allan Webber
  0 siblings, 2 replies; 4+ messages in thread
From: Jan Nieuwenhuizen @ 2017-07-26 12:11 UTC (permalink / raw)
  To: guile-user; +Cc: guix-devel, epsilon-devel, bootstrappable

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=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, 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.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%25201.5%2520Programmers%2520Manual.pdf

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Mes 0.9 released
  2017-07-26 12:11 Mes 0.9 released Jan Nieuwenhuizen
@ 2017-07-26 20:09 ` Arne Babenhauserheide
  2017-07-26 20:28   ` Jan Nieuwenhuizen
  2017-07-27 14:54 ` Christopher Allan Webber
  1 sibling, 1 reply; 4+ messages in thread
From: Arne Babenhauserheide @ 2017-07-26 20:09 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel, guile-user, epsilon-devel, bootstrappable

[-- Attachment #1: Type: text/plain, Size: 542 bytes --]


Jan Nieuwenhuizen <janneke@gnu.org> writes:

> I am pleased to announce the release of Mes 0.9, representing 107
> commits over 5 weeks.

Congrats!

> Mescc now compiles to a surprisingly readable
> stage0 M1 macro assembler output format.

Nice! Can you give a short example of that format?

> Also, mescc can now compile a
> modified TinyCC into a running [mostly segfaulting] executable.

Very cool!

Thank you for your great work!

Best wishes,
Arne
-- 
Unpolitisch sein
heißt politisch sein
ohne es zu merken

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Mes 0.9 released
  2017-07-26 20:09 ` Arne Babenhauserheide
@ 2017-07-26 20:28   ` Jan Nieuwenhuizen
  0 siblings, 0 replies; 4+ messages in thread
From: Jan Nieuwenhuizen @ 2017-07-26 20:28 UTC (permalink / raw)
  To: Arne Babenhauserheide
  Cc: guix-devel, guile-user, epsilon-devel, bootstrappable

Arne Babenhauserheide writes:

>> I am pleased to announce the release of Mes 0.9, representing 107
>> commits over 5 weeks.
>
> Congrats!

Thanks!

>> Mescc now compiles to a surprisingly readable
>> stage0 M1 macro assembler output format.
>
> Nice! Can you give a short example of that format?

Here's the result of compiling scaffold/hello.c

--8<---------------cut here---------------start------------->8---
:main
	push___%ebp
	mov____%esp,%ebp
	sub____%esp,$i32 %0x1054
					# eputs("Hello, Mescc!\n"); 
	push___$i32 &string_0
	call32 %eputs
	add____$i8,%esp !0x4
	test___%eax,%eax
	mov____$i32,%eax %0x2a
	leave
	ret

:ELF_data

:string_0
"Hello, Mescc!
"
--8<---------------cut here---------------end--------------->8---

>> Also, mescc can now compile a
>> modified TinyCC into a running [mostly segfaulting] executable.
>
> Very cool!
>
> Thank you for your great work!

:-)

Thanks for the support!
janneke

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Mes 0.9 released
  2017-07-26 12:11 Mes 0.9 released Jan Nieuwenhuizen
  2017-07-26 20:09 ` Arne Babenhauserheide
@ 2017-07-27 14:54 ` Christopher Allan Webber
  1 sibling, 0 replies; 4+ messages in thread
From: Christopher Allan Webber @ 2017-07-27 14:54 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel, guile-user, epsilon-devel, bootstrappable

Jan Nieuwenhuizen writes:

> 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.

Amazing stuff, Jan!  You are doing the work of saints.



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-07-27 14:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-26 12:11 Mes 0.9 released Jan Nieuwenhuizen
2017-07-26 20:09 ` Arne Babenhauserheide
2017-07-26 20:28   ` Jan Nieuwenhuizen
2017-07-27 14:54 ` Christopher Allan Webber

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).