[e-lang] Versioning of E and Kernel-E

Kevin Reid kpreid at attglobal.net
Fri Aug 4 07:39:54 EDT 2006


Karp, Alan H <alan.karp at hp.com> wrote:

> The operative word being "correct".  My concern was with an incorrect
> expander producing invalid Kernel-E that might expose a flaw in the AST
> evaluator.

If the evaluator accepts invalid Kernel-E, then that is a flaw in the
evaluator. The evaluator does not necessarily invoke the expander.

(In E-on-Java, there is no such thing as an unexpanded E tree, so user
invocation of the evaluator is /always/ using Kernel-E.)

There are also few ways for a Kernel-E tree to be invalid, and they
mostly have natural failure modes if uncaught:

  - Subnodes of the wrong type. This includes unexpanded subnodes, and
invalid AssignExprs (e`x && y := 2`).
    (Likely would cause the compiler/evaluator to fail later but
consistently.)

  - Assignment of a final value - e`def x := 1; x := 2`.
    (Likely to become a runtime error by the AssignExpr being evaluated
as a call to the slot.)

  - Pseudo-cyclic definition: e`def x := x` or e`def x :x := 1`.
    (Refers to a previous definition of x.)

All of these failures seem to me unlikely to cause security problems.

-- 
Kevin Reid                            <http://homepage.mac.com/kpreid/>


More information about the e-lang mailing list