[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