ref: e8d69c4cd659cee7e94e8fb024a0cd26c05d277f
dir: /README.md/
# femtolisp 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 `]`, `{` and `}` are synonyms to `(` and `)` * `λ` as a shorthand for `lambda` * 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) * bigints ## Building ### POSIX meson setup build -Dbuildtype=release ninja -C build test ### Plan 9 mk all test ## Characteristics * lexical scope, lisp-1 * unrestricted macros * case-sensitive * 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 * exceptions * 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