Skip to content

Another Development Release

Pre-release
Pre-release
Compare
Choose a tag to compare
@BrentSeidel BrentSeidel released this 29 Jul 21:47
· 38 commits to master since this release

This release includes a couple of major changes to the internals:

  • The symbol table was split into two parts. The dynamic part works like the old symbol table. The new part is the static part. This is defined at compile time and is fixed. It contains all the symbols for the core language. This frees up space in the dynamic symbol table and in the string table since the fixed symbol names are no longer stored there.
  • The element and value records were merged into one. This simplifies the logic since, among other things, all the checks that an element represents a value are no longer needed.
  • The stack, symbol, and string tables were moved into separate packages and routines written to access them. This should offer some flexibility in restructuring them without greatly impacting the rest of the software.
  • The parser was updated to use a tagged record for getting input. This allows the use of different input sources besides standard input. The immediate use is the READ operation with parses a Lisp string. Other uses may present themselves in the future.

A few new operations were added.

  • DOLIST - iterates over a list
  • EVAL - evaluates a list as a Lisp operation
  • READ - parses a Lisp string into a list

A number of other bug fixes and minor changes that I can't think of right now.