I've been focusing on refactoring and making internal improvements to the Parable VM this month. It's been going well. Here are some highlights:
* The stack is now implemented as an array of tuples
* The dictionary is now implemented as an array of tuples
* Backtrace on abort
* Assigned error code E05 to bytecode type/depth errors
* Improved line condenser (no more need of \ to join lines)
* Refactored the stack\_change\_type() routine
* Now using Python string interpolation to construct errors, other reportings
* Internal stack value to readable value conversions
* New tokenizer which can better detect unbalanced quotations
* Various bug fixes for cases when invalid types or values were causing crashes
* Reduced memory usage
* Better type preservations in the byte codes (e.g., BC\_MEM\_COPY, BC\_REVERSE, etc)
* Removed BC\_ROUND and finished renumbering the remaining byte codes
* BC\_ADD now allows for additional forms: append or prepend character to a string and concatenate two characters into a string
The standard library has seen some updates:
* Added **byKey:** for arrays of key:value pairs
* Added **vocab{** and **}vocab**
* Added **/rem**
* Added **cycle**
And on the interface front, I have a fully functional PaaS backend, a slightly nicer web interface, and have done some work on Allegory.
Parable 2016.04 will support generation of a ctags-compatible database, and Allegory will be able to use/update this to track definition points.
### Other Stuff
I picked up a Kindle Voyage when Amazon had their sale last week. It arrived Monday; I've been enjoying it since then - it's nice to read without distractions and it'll fit nicely into my bike bag when I start biking to work again in a couple of weeks. (The iPad doesn't really fit, so I'll be leaving it behind more as the weather improves).
I was sick for a couple of days (stomach bug), but am mostly ok now.