Saturday, June 7, 2008

The Wasp Lisp Rewind

First, some back of the envelope statistics: there are 283 primitives in the WaspVM virtual machine, as of 2008/05/25. Of these, 116 are used by the Wasp REPL -- determined by some clever partial compilation and finding the subset of global variable references that have the same name as a primitive. None of these primitives have had documentation outside of the CHANGES file since WaspVM forked from MOSVM. Few of these have had test cases written for them, and none of these test cases could be considered even slightly rigorous. For a project which wants to achieve a production-quality environment, this is dire news.

When I made my decision last week to increase my efforts with Wasp Lisp, it was obvious that feature creep was running away with the language (again), and it would be necessary to get out the refactoring chainsaw. My new objective is to get the virtual machine primitive count down to those currently used by the compiler, then improve code, test, and work on documentation quality.

After we have 100% test coverage of primitive functionality, and 100% reference documentation of primitive objects contained by the Wasp Virtual Machine, it will be safe to bring back these features, along with a number of modules that have bitrotted since the fork.

It will not be glorious work, but the resulting polish should be worth it. The winnowing portion should be fairly quick, I have already removed a couple dozen and damned autoconf in the new WaspVM Rewind branch.