doc: Release update.
* ROADMAP (release 0.x, unsorted): Rewrite, move done items ... (DONE): ...here. * build-aux/GNUmakefile.in: Update release process. (gen-announce): Remove trailing '-'. * NEWS (Changes in 0.23 since 0.22): Add section. * README: Add armhf-linux, aarch64-linux, NLNet sponsoring, remove confusing references to mes-m2 fork. * doc/announce/ANNOUNCE-0.23: New file. * mes/module/mes/repl.mes: Update copyright years. * doc/mes.texi (Porting GNU Mes): Mention that armhf-linux is supported. (Regular Requirements): Update. * INSTALL (Other GNU/Linux): Likewise.
This commit is contained in:
parent
2e9b02043b
commit
a1196c87b5
15
INSTALL
15
INSTALL
|
@ -22,17 +22,18 @@ similar way.
|
||||||
#+BEGIN_SRC bash
|
#+BEGIN_SRC bash
|
||||||
guix environment -l guix.scm #64 bit + 32bit
|
guix environment -l guix.scm #64 bit + 32bit
|
||||||
guix environment --system=i686-linux -l guix.scm #32 bit only
|
guix environment --system=i686-linux -l guix.scm #32 bit only
|
||||||
|
guix environment --system=armhf-linux -l guix.scm #32 bit only
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Other GNU/Linux
|
*** Other GNU/Linux
|
||||||
- [[https://savannah.gnu.org/projects/mescc-tools/][mescc-tools]], 0.6.1 is known to work.
|
- [[https://savannah.gnu.org/projects/mescc-tools/][mescc-tools]], 0.7.0 is known to work.
|
||||||
- [[https://savannah.gnu.org/projects/nyacc][Nyacc]], 0.93.0 is known to work.
|
- [[https://savannah.gnu.org/projects/nyacc][Nyacc]], 1.00.2 is known to work.
|
||||||
- GNU Gcc, 4.9.3 is known to work.
|
- GNU Gcc, 7.5.0 is known to work.
|
||||||
- GNU Guile, version 2.0.12 or is know to work.
|
- GNU Guile, version 3.0.4 is know to work.
|
||||||
- SH, /bin/sh, GNU Bash 4.3 is known to work.
|
- SH, /bin/sh, GNU Bash 5.0.16 is known to work.
|
||||||
- GNU coreutils
|
- GNU coreutils
|
||||||
- sed, GNU sed 4.2 is known to work.
|
- sed, GNU sed 4.8 is known to work.
|
||||||
- Perl, 5.22 is known to work.
|
- Perl, 5.30 is known to work.
|
||||||
|
|
||||||
** Build it
|
** Build it
|
||||||
|
|
||||||
|
|
20
NEWS
20
NEWS
|
@ -2,7 +2,7 @@
|
||||||
#+TITLE: GNU Mes NEWS – history of user-visible changes
|
#+TITLE: GNU Mes NEWS – history of user-visible changes
|
||||||
#+STARTUP: content hidestars
|
#+STARTUP: content hidestars
|
||||||
|
|
||||||
Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
Copyright © 2016,2017,2018,2019,2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
|
||||||
Copying and distribution of this file, with or without modification,
|
Copying and distribution of this file, with or without modification,
|
||||||
are permitted in any medium without royalty provided the copyright
|
are permitted in any medium without royalty provided the copyright
|
||||||
|
@ -10,6 +10,24 @@ Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
|
||||||
Please send Mes bug reports to bug-mes@gnu.org.
|
Please send Mes bug reports to bug-mes@gnu.org.
|
||||||
|
|
||||||
|
* Changes in 0.23 since 0.22
|
||||||
|
** Core
|
||||||
|
*** Mes and Mes C Library can now be built with GCC 10.x.
|
||||||
|
** MesCC
|
||||||
|
*** The Mes C Library now supports an armhf-linux bootstrap.
|
||||||
|
*** MesCC now supports ARM.
|
||||||
|
*** mini.c library was split into _exit.c, and _write.c.
|
||||||
|
*** When building with GCC, -lgcc is now used.
|
||||||
|
*** MesCC now has it's own support library libmescc.a (-lmescc).
|
||||||
|
*** MesCC now requires mescc-tools-0.7.0 or later for ARM.
|
||||||
|
*** MesCC can be now built with nyacc-1.00.2:
|
||||||
|
note that nyacc-1.03.0 is not (backwards) compatible.
|
||||||
|
*** MesCC can be built with Guile 3.0.x:
|
||||||
|
See https://bugs.gnu.org/43831; use guild compile -O1 with Guile 3.0.x.
|
||||||
|
*** MesCC now raises SIGABRT on abort, if supported.
|
||||||
|
** Noteworthy bug fixes
|
||||||
|
*** unreadchar on EOF is now a no-op.
|
||||||
|
*** malloc now aligns the blocks it gives out to max_align_t.
|
||||||
* Changes in 0.22 since 0.21
|
* Changes in 0.22 since 0.21
|
||||||
** Core
|
** Core
|
||||||
*** Mes now builds reproducibly with MesCC, cross distribution
|
*** Mes now builds reproducibly with MesCC, cross distribution
|
||||||
|
|
2
PORTING
2
PORTING
|
@ -22,7 +22,7 @@ to your config.scm and run guix system reconfigure.
|
||||||
|
|
||||||
For example (note: ARM is no longer a 'port', see HACKING)
|
For example (note: ARM is no longer a 'port', see HACKING)
|
||||||
#+BEGIN_SRC bash
|
#+BEGIN_SRC bash
|
||||||
guix environment -s armhf-linux --pure --ad-hoc bash coreutils diffutils findutils gawk gcc-toolchain@7 grep git guile@2.2 gzip help2man make mescc-tools nyacc openssh-sans-x pkg-config sed tar texinfo
|
guix environment --system=armhf-linux --pure --ad-hoc bash coreutils diffutils findutils gawk gcc-toolchain@7 grep git guile@2.2 gzip help2man make mescc-tools nyacc openssh-sans-x pkg-config sed tar texinfo
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Try it
|
** Try it
|
||||||
|
|
26
README
26
README
|
@ -12,7 +12,7 @@ effort for UNIX-like operating systems.
|
||||||
|
|
||||||
The Scheme interpreter is written in ~5,000 LOC of simple C, and the C
|
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
|
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.c is now being simplified to be transpiled by [[https://github.com/oriansj/mes-m2]bto be transpiled by [[https://github.com/oriansj/m2-planet][M2-Planet]].
|
||||||
|
|
||||||
Mes has a Garbage Collector, a library of loadable Scheme modules--
|
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
|
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
|
||||||
|
@ -23,12 +23,15 @@ Mes+MesCC can compile an only [[http://gitlab.com/janneke/tinycc][lightly patche
|
||||||
self-hosting. Using this tcc and the Mes C library we now have a
|
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,
|
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
|
binutils-2.20.1, gcc-2.95.3. This is enough to bootstrap Guix for
|
||||||
i686-linux and x86_64-linux.
|
i686-linux, x86_64-linux, armhf-linux and aarch64-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
|
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
|
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.
|
Jeremiah Orians's [[https://github.com/oriansj/stage0][stage0]] ~500 byte self-hosting hex assembler.
|
||||||
|
|
||||||
|
We are very grateful to NLNet for sponsoring the [[https://nlnet.nl/project/GNUMes][Reduced Binary Seed
|
||||||
|
bootstrap]] and the [[https://nlnet.nl/project/GNUMes-arm][ARM port]].
|
||||||
|
|
||||||
GNU Mes is free software, it is distributed under the terms of the GNU
|
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]].
|
General Public Licence version 3 or later. See the file [[file:COPYING][COPYING]].
|
||||||
|
|
||||||
|
@ -64,17 +67,18 @@ General Public Licence version 3 or later. See the file [[file:COPYING][COPYING
|
||||||
|
|
||||||
* Links
|
* Links
|
||||||
[0] https://www.gnu.org/software/mes
|
[0] https://www.gnu.org/software/mes
|
||||||
[1] https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/
|
[1] https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25
|
||||||
[2] https://www.gnu.org/software/guix
|
[2] https://www.gnu.org/software/guix
|
||||||
[3] https://bootstrappable.org
|
[3] https://bootstrappable.org
|
||||||
[4] https://github.com/oriansj/mes-m2
|
[4] https://github.com/oriansj/m2-planet
|
||||||
[5] https://github.com/oriansj/m2-planet
|
[5] https://github.com/schemeway/lalr-scm
|
||||||
[6] https://github.com/schemeway/lalr-scm
|
[6] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
|
||||||
[7] https://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
|
[7] https://www.nongnu.org/nyacc
|
||||||
[8] https://www.nongnu.org/nyacc
|
[8] https://gitlab.com/janneke/tinycc
|
||||||
[9] https://gitlab.com/janneke/tinycc
|
[9] [[http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf]]
|
||||||
[10] [[http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf]]
|
[10] https://github.com/oriansj/stage0
|
||||||
[11] https://github.com/oriansj/stage0
|
[11] https://nlnet.nl/project/GNUMes
|
||||||
|
[12] https://nlnet.nl/project/GNUMes-arm
|
||||||
|
|
||||||
* Legalese
|
* Legalese
|
||||||
Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <[[mailto:janneke@gnu.org][janneke@gnu.org]]>
|
Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <[[mailto:janneke@gnu.org][janneke@gnu.org]]>
|
||||||
|
|
45
ROADMAP
45
ROADMAP
|
@ -1,7 +1,7 @@
|
||||||
-*- org -*-
|
-*- org -*-
|
||||||
#+TITLE: Tentative GNU Mes Road Map
|
#+TITLE: Tentative GNU Mes Road Map
|
||||||
|
|
||||||
Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
Copyright © 2016,2017,2018,2019,2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
|
|
||||||
Copying and distribution of this file, with or without modification,
|
Copying and distribution of this file, with or without modification,
|
||||||
are permitted in any medium without royalty provided the copyright
|
are permitted in any medium without royalty provided the copyright
|
||||||
|
@ -23,23 +23,23 @@ on Freenode!
|
||||||
|
|
||||||
* TODO
|
* TODO
|
||||||
** release 0.x, unsorted
|
** release 0.x, unsorted
|
||||||
- Merge the Scheme-only bootstrap which uses Gash and Gash Core
|
- Integrate Reduced Binary Seed bootstrap for ARM on GNU Guix;
|
||||||
Utilities to remove from bootstrap-binary seed : Awk, Bash, Core
|
see branch wip-arm-bootstrap.
|
||||||
Utilities, Grep, Gzip, Sed, Tar.
|
- Introduce the Reduced Binary Seed bootstrap to NixOS (Debian,
|
||||||
- Introduce the Reduced Binaries Seed bootstrap to NixOS (Debian,
|
Arch, Gentoo, ...?).
|
||||||
Arch, Gentoo, ...?)
|
- Full Source Bootstrap:
|
||||||
- Full Source Bootstrap: compile mes.c using M2-Planet. Jeremiah
|
+ compile mes.c using M2-Planet; see branch wip-m2,
|
||||||
branched-out from mes; see https://github.com/oriansj/mes-m2, also see the
|
+ integrate into GNU Guix; see branch wip-full-source-bootstrap.
|
||||||
branches: wip-full-source-bootstrap, wip-m2-merge and wip-m2.
|
- Full Guile-compatible module support; see branch wip-module.
|
||||||
- Full Guile-compatible module support: define-module, define-public,
|
- RISC-V support: Mes C Library and MesCC.
|
||||||
export, use-modules, ...
|
- AArch64 support: Mes C Library and MesCC.
|
||||||
- ARMv7/AArch64 support: Mes C Library and MesCC.
|
- Simplify eval-apply and other core functionality
|
||||||
- Simplify eval-apply and other core functionality (see mes-m2).
|
+ See https://github.com/oriansj/mes-m2 fork/rewrite of mes.
|
||||||
- Support native x86_64 bootstrap.
|
- Support native x86_64 bootstrap.
|
||||||
- Simplify MesCC ``MesCC should optimize ease of convincing us of its
|
- Simplify MesCC ``MesCC should optimize ease of convincing us of its
|
||||||
correctness''
|
correctness''.
|
||||||
- tcc: remove or upstream patches from tcc-boot.
|
- Switch to Autotools for development build (bootstrap builds use
|
||||||
- tcc: build 0.9.27 directly instead of via 0.9.26, see tinycc
|
kaem.run and bootstrap.sh); see branch wip-auto.
|
||||||
** after release 1.0
|
** after release 1.0
|
||||||
- Build Guix packages using Mes: run or simplify (guix build utils),
|
- Build Guix packages using Mes: run or simplify (guix build utils),
|
||||||
(guix build gnu-build-system).
|
(guix build gnu-build-system).
|
||||||
|
@ -48,9 +48,12 @@ on Freenode!
|
||||||
- Bootstrap support for the Hurd. Most needed now are fork and exec.
|
- Bootstrap support for the Hurd. Most needed now are fork and exec.
|
||||||
- Replace the initial gcc-2.95.3 with gcc-4.6.4.
|
- Replace the initial gcc-2.95.3 with gcc-4.6.4.
|
||||||
- FreeBSD, *BSD?
|
- FreeBSD, *BSD?
|
||||||
wip-bootstrappable@0.9.27 branch
|
- Tiny CC:
|
||||||
- Skip tcc: Build gcc using MesCC.
|
+ remove or upstream patches from tcc-boot,
|
||||||
- better garbage collector.
|
+ build 0.9.27 directly instead of via 0.9.26; see tinycc branch
|
||||||
|
wip-bootstrappable@0.9.27
|
||||||
|
- Skip Tiny CC: Build gcc using MesCC.
|
||||||
|
- Better garbage collector.
|
||||||
- mes/mescc: proper docstrings, api reference documentation.
|
- mes/mescc: proper docstrings, api reference documentation.
|
||||||
- mes/mescc: bootstrap a minimal Guile?
|
- mes/mescc: bootstrap a minimal Guile?
|
||||||
+ libguile/{eval,init,list,strings,values,..}.
|
+ libguile/{eval,init,list,strings,values,..}.
|
||||||
|
@ -61,6 +64,10 @@ on Freenode!
|
||||||
https://srfi.schemers.org/srfi-72/srfi-72.html, or
|
https://srfi.schemers.org/srfi-72/srfi-72.html, or
|
||||||
+ ... drop it?
|
+ ... drop it?
|
||||||
* DONE
|
* DONE
|
||||||
|
- GNU Mes now supports building Tiny CC on ARM.
|
||||||
|
- 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.
|
||||||
- 0.22 GNU Mes now builds reproducibly cross-platform, runs on the
|
- 0.22 GNU Mes now builds reproducibly cross-platform, runs on the
|
||||||
Hurd and has better support for other distributions and kernels.
|
Hurd and has better support for other distributions and kernels.
|
||||||
- 0.21 GNU Mes now supports a Scheme-only bootstrap and is packaged in
|
- 0.21 GNU Mes now supports a Scheme-only bootstrap and is packaged in
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# GNU Mes --- Maxwell Equations of Software
|
# GNU Mes --- Maxwell Equations of Software
|
||||||
# Copyright © 2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
# Copyright © 2018,2019,2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
#
|
#
|
||||||
# This file is part of GNU Mes.
|
# This file is part of GNU Mes.
|
||||||
#
|
#
|
||||||
|
@ -323,16 +323,37 @@ tag:
|
||||||
|
|
||||||
# Release process
|
# Release process
|
||||||
# 0. Prepare git, see history:
|
# 0. Prepare git, see history:
|
||||||
# - doc: Release update
|
# - doc: Release update (NEWS, etc.)
|
||||||
# + NEWS, etc.
|
# - Generate announcement
|
||||||
# + doc/announce/ANNOUNCE-0.22, using xxx for checksums
|
# + touch mes-0.23.tar.gz
|
||||||
# - Release 0.22
|
# + make gen-announce VERSION=0.23
|
||||||
# 1. make tag VERSION=0.22
|
# + Update and commit doc/announce/ANNOUNCE-0.23,
|
||||||
# 2. make sign-dist
|
# using xxx (32,40) for checksums
|
||||||
# 3. make release
|
# - create "Release 0.23" commit (see Release 0.22).
|
||||||
# - Update doc/announce/ANNOUNCE-0.22
|
# + configure
|
||||||
|
# + configure.sh
|
||||||
|
# 1. Tag for release
|
||||||
|
# make tag VERSION=0.23
|
||||||
|
# 2. Create signed tarball
|
||||||
|
# make sign-dist
|
||||||
|
# 3. Update Guix package description
|
||||||
|
# - make release
|
||||||
|
# 4. Finish announcement
|
||||||
|
# - Update doc/announce/ANNOUNCE-0.23
|
||||||
# - doc: Post-release update.
|
# - doc: Post-release update.
|
||||||
# 4. verify bootstrap
|
# - build-aux/GNUMakefile.in: gen-announce: update previous-version
|
||||||
|
# 5. Verify
|
||||||
|
# - Update package in Guix master.
|
||||||
|
# - If applicable, verify bootstrap.
|
||||||
|
# 6. Upload to ftp.gnu.org
|
||||||
|
# 7. Create blog post
|
||||||
|
# cp doc/announce/ANNOUNCE-0.23 ~/src/web/joyofsource.com/posts/announce-0.23.md
|
||||||
|
# fix urls and all
|
||||||
|
# 8. Send mail
|
||||||
|
# To: info-gnu@gnu.org
|
||||||
|
# Cc: guix-devel@gnu.org
|
||||||
|
# Cc: bootstrappable@freelists.org
|
||||||
|
# Cc: rb-general@lists.reproducible-builds.org
|
||||||
|
|
||||||
guix-build:
|
guix-build:
|
||||||
./pre-inst-env $(GUIX) build mes@$(VERSION) --with-source=$(TARBALL)
|
./pre-inst-env $(GUIX) build mes@$(VERSION) --with-source=$(TARBALL)
|
||||||
|
@ -349,12 +370,12 @@ gen-announce:
|
||||||
$(GEN_ANNOUNCE)\
|
$(GEN_ANNOUNCE)\
|
||||||
--release-type=beta\
|
--release-type=beta\
|
||||||
--package-name=mes\
|
--package-name=mes\
|
||||||
--previous-version='0.21 '\
|
--previous-version='0.22 '\
|
||||||
--current-version=$(VERSION)\
|
--current-version=$(VERSION)\
|
||||||
--gpg-key-id=$(GPG_KEY_ID)\
|
--gpg-key-id=$(GPG_KEY_ID)\
|
||||||
--url-directory=https://ftp.gnu.org/gnu/mes\
|
--url-directory=https://ftp.gnu.org/gnu/mes\
|
||||||
--news=NEWS\
|
--news=NEWS\
|
||||||
> doc/announce/ANNOUNCE-$(VERSION)-
|
> doc/announce/ANNOUNCE-$(VERSION)
|
||||||
|
|
||||||
installdirs: mkinstalldirs
|
installdirs: mkinstalldirs
|
||||||
mkdir -p\
|
mkdir -p\
|
||||||
|
|
120
doc/announce/ANNOUNCE-0.23
Normal file
120
doc/announce/ANNOUNCE-0.23
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
|
||||||
|
Subject: GNU Mes 0.23 released
|
||||||
|
|
||||||
|
<#secure method=pgpmime mode=sign>
|
||||||
|
|
||||||
|
We are happy to announce the release of GNU Mes 0.23, representing 125
|
||||||
|
commits over one year by four people.
|
||||||
|
|
||||||
|
Mes was ported to ARM and can now be used in the GNU Guix Reduced Binary
|
||||||
|
Seed bootstrap as described here
|
||||||
|
|
||||||
|
https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25/
|
||||||
|
|
||||||
|
and now also for armhf-linux and aarch-linux. Work to integrate this
|
||||||
|
into Guix is ongoing: tinycc and gcc-core-2.95.3 have been built.
|
||||||
|
|
||||||
|
We are excited that the Nlnet Foundation is now sponsoring this work!
|
||||||
|
|
||||||
|
Enjoy,
|
||||||
|
Janneke and Danny.
|
||||||
|
|
||||||
|
* 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 now being simplified to be transpiled by M2-Planet[4].
|
||||||
|
|
||||||
|
Mes 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
|
||||||
|
enough to support a REPL and a C99 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-2.95.3. This is enough to bootstrap Guix for
|
||||||
|
i686-linux, x86_64-linux, armhf-linux and aarch64-linux.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
We are very grateful to NLNet for sponsoring the Reduced Binary Seed
|
||||||
|
bootstrap[11] and the ARM port[12].
|
||||||
|
|
||||||
|
* 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.23.tar.gz
|
||||||
|
https://ftp.gnu.org/gnu/mes/mes-0.23.tar.gz.sig
|
||||||
|
|
||||||
|
Use a mirror for higher download bandwidth:
|
||||||
|
https://ftpmirror.gnu.org/mes/mes-0.23.tar.gz
|
||||||
|
https://ftpmirror.gnu.org/mes/mes-0.23.tar.gz.sig
|
||||||
|
|
||||||
|
Here are the MD5 and SHA1 checksums:
|
||||||
|
|
||||||
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx mes-0.23.tar.gz
|
||||||
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx mes-0.23.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.23.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.
|
||||||
|
|
||||||
|
* NEWS
|
||||||
|
* Changes in 0.23 since 0.22
|
||||||
|
** Core
|
||||||
|
*** Mes and Mes C Library can now be built with GCC 10.x.
|
||||||
|
** MesCC
|
||||||
|
*** The Mes C Library now supports an armhf-linux bootstrap.
|
||||||
|
*** MesCC now supports ARM.
|
||||||
|
*** mini.c library was split into _exit.c, and _write.c.
|
||||||
|
*** When building with GCC, -lgcc is now used.
|
||||||
|
*** MesCC now has it's own support library libmescc.a (-lmescc).
|
||||||
|
*** MesCC now requires mescc-tools-0.7.0 or later for ARM.
|
||||||
|
*** MesCC can be now built with nyacc-1.00.2:
|
||||||
|
note that nyacc-1.03.0 is not (backwards) compatible.
|
||||||
|
*** MesCC can be built with Guile 3.0.x:
|
||||||
|
See https://bugs.gnu.org/43831; use guild compile -O1 with Guile 3.0.x.
|
||||||
|
*** MesCC now raises SIGABRT on abort, if supported.
|
||||||
|
** Noteworthy bug fixes
|
||||||
|
*** unreadchar on EOF is now a no-op.
|
||||||
|
*** malloc now aligns the blocks it gives out to max_align_t.
|
||||||
|
|
||||||
|
[0] https://www.gnu.org/software/mes
|
||||||
|
[1] https://guix.gnu.org/blog/2020/guix-further-reduces-bootstrap-seed-to-25
|
||||||
|
[2] https://www.gnu.org/software/guix
|
||||||
|
[3] https://bootstrappable.org
|
||||||
|
[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://savannah.nongnu.org/projects/stage0
|
||||||
|
[11] https://nlnet.nl/project/GNUMes
|
||||||
|
[12] https://nlnet.nl/project/GNUMes-arm
|
22
doc/mes.texi
22
doc/mes.texi
|
@ -13,7 +13,7 @@
|
||||||
@set OPENPGP-SIGNING-KEY-ID 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
|
@set OPENPGP-SIGNING-KEY-ID 1A858392E331EAFDB8C27FFBF3C1A0D9C1D65273
|
||||||
|
|
||||||
@copying
|
@copying
|
||||||
Copyright @copyright{} 2018,2019 Jan (janneke) Nieuwenhuizen@*
|
Copyright @copyright{} 2018,2019,2020,2021 Jan (janneke) Nieuwenhuizen@*
|
||||||
|
|
||||||
Permission is granted to copy, distribute and/or modify this document
|
Permission is granted to copy, distribute and/or modify this document
|
||||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||||
|
@ -508,11 +508,11 @@ GNU Mes depends on the following packages:
|
||||||
|
|
||||||
@itemize
|
@itemize
|
||||||
@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.13 or
|
@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.13 or
|
||||||
later, including 2.2.x;
|
later, including 2.2.x and 3.0.x,
|
||||||
@item @url{http://www.gnu.org/software/make/, GNU Make}.
|
@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{https://savannah.gnu.org/projects/nyacc/, NYACC}, version 1.00.2,
|
||||||
@item @url{http://gcc.gnu.org, GCC's gcc}, version 2.95.3 or later.
|
@item @url{http://gcc.gnu.org, GCC's gcc}, version 2.95.3 or later, including 10.2.0,
|
||||||
@item @url{https://savannah.gnu.org/projects/mescc-tools/, mescc-tools}, version 0.6.1 or later,
|
@item @url{https://savannah.gnu.org/projects/mescc-tools/, mescc-tools}, version 0.7.0 or later,
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@cindex Guile, compatibility
|
@cindex Guile, compatibility
|
||||||
|
@ -640,7 +640,7 @@ The Reduced Binary Seed bootstrap currently adopted by Guix@footnote{See
|
||||||
@file{gnu/packages/commencement.scm} in the @var{master} branch in Guix
|
@file{gnu/packages/commencement.scm} in the @var{master} branch in Guix
|
||||||
git
|
git
|
||||||
@url{http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/commencement.scm}}.
|
@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.
|
In its intiial form it is only available for x86-linux arm armhf-linux.
|
||||||
|
|
||||||
Currently, it goes like this:
|
Currently, it goes like this:
|
||||||
|
|
||||||
|
@ -1053,12 +1053,12 @@ lives in the top build tree of Mes).
|
||||||
@node Porting GNU Mes, The Perfect Setup, Running Mes From the Source Tree, Contributing
|
@node Porting GNU Mes, The Perfect Setup, Running Mes From the Source Tree, Contributing
|
||||||
@section Porting GNU Mes
|
@section Porting GNU Mes
|
||||||
|
|
||||||
Mes was written for x86-linux. A 64 bit (x86_64) is almost done, only a
|
Mes is supported for x86-linux and armhf-linux. A 64 bit (x86_64-linux)
|
||||||
few bugs remain. The Guix bootstrap for x86_64 uses x86 mes and that is
|
is almost done, only a few bugs remain. The Guix bootstrap for
|
||||||
not expected to change.
|
x86_64-linux uses mes for x86-lunix and that is not expected to change.
|
||||||
|
Likewise, aarch64-linux uses mes for armhf-linux.
|
||||||
|
|
||||||
An ARM (armv4/armv7l) linux port is underway. A port to GNU/Hurd
|
A port to GNU/Hurd (x86-gnu) is underway.
|
||||||
(x86-gnu) is also underway.
|
|
||||||
|
|
||||||
Initial scaffold, built by @file{build-aux/build-scaffold.sh}:
|
Initial scaffold, built by @file{build-aux/build-scaffold.sh}:
|
||||||
@example
|
@example
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
;;; -*-scheme-*-
|
;;; -*-scheme-*-
|
||||||
|
|
||||||
;;; GNU Mes --- Maxwell Equations of Software
|
;;; GNU Mes --- Maxwell Equations of Software
|
||||||
;;; Copyright © 2016,2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
;;; Copyright © 2016,2017,2018,2019,2020,2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Mes.
|
;;; This file is part of GNU Mes.
|
||||||
;;;
|
;;;
|
||||||
|
@ -29,8 +29,8 @@
|
||||||
|
|
||||||
(define welcome
|
(define welcome
|
||||||
(string-append "GNU Mes " %version "
|
(string-append "GNU Mes " %version "
|
||||||
Copyright (C) 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
Copyright (C) 2016,2017,2018,2019,2020,2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
Copyright (C) 2019 Danny Milosavljevic <dannym@scratchpost.org>
|
Copyright (C) 2019,2020,2021 Danny Milosavljevic <dannym@scratchpost.org>
|
||||||
|
|
||||||
GNU Mes comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
|
GNU Mes comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
|
||||||
This program is free software, and you are welcome to redistribute it
|
This program is free software, and you are welcome to redistribute it
|
||||||
|
|
Loading…
Reference in a new issue