Coder Social home page Coder Social logo

mes's Introduction

About GNU 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 Reduced Binary Seed bootstrap of GNU Guix. The final goal is to help create a full source bootstrap as part of the 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 being simplified to be transpiled by M2-Planet.

Mes has a Garbage Collector, a library of loadable Scheme modules– notably Dominique Boucher’s LALR, Pre-R6RS portable syntax-case with R7RS ellipsis, Matt Wette’s Nyacc –and test suite, just enough to support a REPL and a C99 compiler: mescc.

Mes+MesCC can compile an only 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: LISP-1.5 – John McCarthy page 13, GNU Guix’s source/binary packaging transparency and Jeremiah Orians’s 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 COPYING.

Get it

git clone git://git.savannah.gnu.org/mes.git

Build it (see INSTALL for full instructions)

./configure
make all
make check

REPL it

./pre-inst-env mes

MesCC compiler

./pre-inst-env mescc -c scaffold/main.c

Bugs

Please send Mes bug reports to [email protected].

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 <[email protected]>

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's People

Contributors

daym avatar janneke avatar oriansj avatar pdewacht avatar rain-1 avatar vagrantc avatar

Watchers

 avatar

Forkers

bittorf

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.