Tuesday, November 22, 2011

pLisp v0.1 released

pLisp (The 'p' stands for 'personal', at least as of now) is an interpreter for a Lisp-1 dialect I have been working on. I had four broad objectives when I started out:
  1. Use the experience to learn Lisp at a much deeper level than what a casual user would attain
  2. Build my own language/development environment, one that I would use for all my personal projects from now on
  3. If I manage to take the project sufficiently forward, build a Lisp development environment for newbies that rivals those of Smalltalk
  4. Use pLisp as a test bed for new research ideas related to programming
I think things are sufficiently mature enough to warrant a 0.1 release, although a not-infrequent assertion failure or segfault cannot be ruled out.

These are the features currently supported:
  1. Basic operators like CAR, CDR, and other language primitives (cf. Paul Graham's 'Roots of Lisp')
  2. Other operators and utility functions written in pLisp itself (there is a rudimentary library at present)
  3. Error handling in the form of an '(error "...")' operator
  4. Garbage collection
  5. A somewhat buggy foreign function interface
  6. Ability to store and load images (aka serialization)
  7. Macros
  8. A rudimentary debugger (step, break, resume, abort)
  9. A package system
TODO list:
  1. More comprehensive error handling; there are a lot of places where sanity checking of parameters is absent, leading to assertion failures or core dumps
  2. Enhancements to the core library
  3. Graphical development environment
  4. Compiler
  5. Continuations and implementations of other 'cool' research ideas
pLisp uses tpl for serialization and libffi for the foreign function interface.