[E-Lang] Announcing 0.8.9.t1: Transformer interim development release

Dean Tribble tribble@e-dean.com
Sun, 16 Sep 2001 00:47:51 -0700


The first look at the new interpreter for E is available on the E 
website at:

http://www.erights.org/download/stl-0-8-9-t-1/index.html

This is an interim development release for a faster E interpreter. This 
release is to seed joint development, so the minimal documentation 
in the release is not yet intended for users.  This interpreter is 
intended to provide both faster interactive E execution, and a starting 
point for full compilation.  When complete and integrated with the main 
line of E development, it is expected to replace the current E 
interpreter.

The primary change in this interpreter is to use an addressing-oriented 
execution model. Specifics include:

* Outers, fields, and locals are stored and accessed from Arrays rather 
  than through Hash tables (i.e., noun get and store are via a single 
  array indirection)
* Final nouns (which is expected to be most nouns) point directly at 
  their value, not indirectly through Slots
* The execution state at any given point is always represented as three 
  arrays: outers, fields, and locals
* Locals are used in a stack-like fashion
* Each expr node points at its scope map, so the values in scope can 
  be reconstructed in a future debugger
* All non-finals use slot objects so that they can be copied into nested 
  objects but still behave as shared mutable variables (i.e., as in 
  the cells used in Scheme compilation)
* Numerous minor optimizations
* All ENodes point at immutable ScopeMaps that describe which variables 
  are visible and where to find them in the EvalContext (for future 
  debugging support)
* Clarified semantics of mutable, interactive scopes, import, and other 
  scoping-related issues.

This is still a work in progress; already there is an update with 
additional functionality in the works.  If you wish to start from 
this release, please contact me so I can let you know what changes 
are already in progress.  Specific current deficiencies:

* The parser in this version does not yet actually generate 
  FinalPattern nodes, so the change in representation 
  of Finals is not yet used (and indeed, depends on bug 
  fixes not yet integrated from the main development line). 
* Some cleanups, comments, and the scopeMap-per-node mentioned 
  above did not get included in the release, and so will appear 
  in the next one.
* Additional complimentary optimizations will be included 
  in future releases that eliminate method dispatch overhead, 
  comparison overhead, etc.

In summary, the transformer work is going very well. For actual E
development, however, follow the main line of development.  When 
finished, the E transformer-interpreter will be folded into the 
main development line.

Thanks,
Dean Tribble