clone: git://shithub.us/sigrid/femtolisp gits://shithub.us/sigrid/femtolisp
patches to: sigrid on 9gridchan, or firstname.lastname@example.org
– Sigrid Solveig Haflínudóttir <email@example.com>
on 2023/07/10 07:22
fix plan 9 arm build
A compact interpreter for a minimal lisp/scheme dialect.
This is a reanimation of
https://github.com/lambdaconservatory/femtolisp with bigger plans.
Supported OS: [9front](http://9front.org), OpenBSD, Linux.
Supported CPUs: any decent 32-bit or 64-bit CPU, either LE or BE.
Tested on: 9front-latest/arm64, OpenBSD-current/amd64, Debian/ppc, Alpine/amd64, Android-termux/arm64, Debian/sparc64.
Some of the changes from the original include:
* aggressive clean up and removal (like Windows and Mac OS X support)
* `[` and `]` are synonyms to `(` and `)`
* some of the previously available (but not merged) patches from the community and [Julia](https://github.com/JuliaLang/julia) are applied
* "boot" image is built into the executable
* vm opcode definitions and tables are generated from a single file
* fixed bootstrap (makes it work properly when opcodes change)
* lexical scope, lisp-1
* unrestricted macros
* simple compacting copying garbage collector
* Scheme-style varargs (dotted formal argument lists)
* "human-readable" bytecode with self-hosted compiler
* circular structure can be printed and read
* `#.` read macro for eval-when-read and readably printing builtins
* read macros for backquote
* symbol character-escaping printer
* gensyms (can be usefully read back in, too)
* `#| multiline comments |#`, `#;(block comment...`, lots of other lexical syntax
* generic compare function, cyclic equal
* cvalues system providing C data types and a C FFI
* constructor notation for nicely printing arbitrary values