[E-Lang] Announcing 0.8.10alpha1: Language Improvements
Mark S. Miller
markm@caplet.com
Sun, 16 Sep 2001 06:37:32 -0700
The third and last part of the Highlights section:
* The new, much improved, Seaborn-Karp when-catch-finally expression:
o In "when (x) -> done(y) {...", the success case will only see a y
that's the same as x. Further, a remote promise only resolved once
per vat, and so we can't get an intra-vat divergent resolution
inconsistency. (We all agree that we can't prevent a malicious vat
from causing an inter-vat inconsistency.) (*** need to find email link)
o The syntax and semantics are now more parallel to try-catch-finally:
there can be a chain of catch clauses followed by an optional finally
clause. These catch not just a broken resolution, but any problems
thrown by the success clause. (*** need to find email link)
o The when-catch-finally expression evaluates to a promise for the value
its done function will return. (The done function is the result of
expanding everything to the left of the "->".) (*** need to find
email link)
* Swinging Vats. We figured out and solved (due to Dean, thanks!) a terrible
lurking concurrency conflict between E's vat-scheduling assumptions vs
AWT/Swing. We now have front-end ("fe") vats, that execute in the AWT-Event
thread and use the AWT Event queue for their turns, and back-end ("be")
vats, that have their own thread and queue. All synchronous interaction with
AWT and Swing widgets should happen only in fe vats.
( Track this issue... )
* optMeta(brand). CapTP is now correctly using optMeta(brand) for opaque
rights amplification so that a given instance of a CapTP system will
recognize and see into its own remote pointers, but the remote pointers of
another instance (or of a different CapTP-like system) will be as opaque to
it as a local promise. (*** need to find email link)
Cheers,
--MarkM