GNU Mes 0.19 released

2018-12-16 Thread Jan Nieuwenhuizen
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

gcc-9-20181216 is now available

2018-12-16 Thread gccadmin
Snapshot gcc-9-20181216 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/9-20181216/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 9 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/trunk revision 267191

You'll find:

 gcc-9-20181216.tar.xzComplete GCC

  SHA256=98b9affb6b456b31357a0476840667301b2250ef32f07fb48ad3260c1e91c9b1
  SHA1=aefe3e1bbc32f7e13f5b123359c4647bdfd36c5c

Diffs from 9-20181209 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-9
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.


Re: GNU Mes 0.19 released

2018-12-16 Thread Arne Babenhauserheide

Jan Nieuwenhuizen  writes:

> Mes has now brought the Reduced Binary Seed bootstrap to Guix (bootstrap
> a GNU/Linux system without binary GNU toolchain or equivalent)

That’s awesome!

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

Wow! I did not expect such a huge difference.

> Next targets:
>
>  - translate mes.c into unsnarfed mes.M2
>  - use Gash to remove bash, coreutils&co, grep, sed, tar from the Guix
>bootstrap binaries

Is this about configure+make?

>  - bootstrap gcc-3.x or 4.x directly, drop initial gcc-2.95.3 target?

Do you have a document showing the bootstrap path — ideally in graph
form, i.e. with plantuml activity diagram?
http://plantuml.com/activity-diagram-legacy

>  - Debian?
- Gentoo?

>  - ARM, the Hurd?

The Hurd would be nice!

Thank you for your great work!

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


signature.asc
Description: PGP signature