## What's going on here? Seax is a VM for interpreting Lisp programs. ## Goals + A complete implementation of a simple Lisp * Probably Scheme * like Scheme, it's minimal, elegant, & still expressive + Modular/general purpose enough to interpret other languages * there should be a modular API for front ends + Performant enough to support "Real Programs" * Speed should be at least as good as Python ## Stretch goals These are things that I would like to add, if there's time, but I may not be able to add all of them. + Foreign function interface * so that you can make Real Software and I don't have to write a whole standard library * probably into the C stdlib 'cause it's everwhere * this will require some additional research + some kind of JIT compilation * I don't know how feasible this is * this will require additional research as well + Additional language frontends * one or more * this can include "toy languages" that are interesting but not really useful * the goal is to demonstrate that the SECD architecture is capable of interpreting multiple programming languages ## Why Rust? I'm using the Rust programming language. Here's why: + It's intended for systems programming * reasonably good performance (not C but pretty close) - compiled - interesting approach to memory management (eliminates a lot of GC) * access to low-level stuff + But it's not C * modern syntax * nice build system (Cargo) + I've wanted to learn it for a while