/insomniac

What started as an attempt at a byte code interpreting scheme has turned into an experiment with GC.

Primary LanguageCGNU Affero General Public License v3.0AGPL-3.0

To setup an build environment, run setup.sh.  If all goes well, you will find a build tree configured in the directory build.

* Preamble/Postamble

These two files contain a very basic bootstrap for core scheme.  The goal is to
get the system up and running with this very crude core and then do most of the
real coding work using scheme.  

* GC

For the moment, I'm playing around with the idea of a mark/sweep garbage collector for use with the final product.   I'm working on means of decoupling the structure of a cell from the GC code.  That's going to require a method of specifying the structure and size of a cell without the GC knowing about the core type.  Array's are going to be the really tricky part here.


TODO:

* Build out define-record-type and assorted functions -- This will be a big help in getting the code ready for the metacircular interpreter.

* Sweep is currently limited by stack size, this should be adjusted to work in an iterative manner, if possible.  This will take some work to get right and is not immediately necessary, thankfully.

* VM code recreates gc types every time that a vm is instance is created.  This needs to be rectified.

* Rework compiler to produce CPS style code (begin, etc) -- This will likely be delayed until the system is metacircular.