ES4 work

Michael O'Brien mob at mbedthis.com
Wed Feb 20 22:49:23 PST 2008


Graydon,

Thanks -- that helps to understand the status.

You are in a somewhat unique position having implemented more than any 
other. Given Jeff's roadmap outline and the goal of weighing the 
features against implementation experience -- which of the features that 
you have implemented do you feel were difficult, costly or problematic?

In our implementation (Ejscript), we have implemented (with bugs):

 - classes
 - namespaces, including use pragmas
 - block scope
 - packages
 - units
 - pragmas
 - let, const, let-const
 - type expressions / definitions / annotations
 - runtime type checks ("standard mode")
 - destructuring assignment
 - hashcode
 - meta objects
 - strict mode (incomplete checking)
 - type parameters
 - numbers & decimal
 - getters & setters

Namespaces was a much bigger and more intrusive change that I first 
anticipated. Difficult to get it to perform well, but we're still 
working on it. However, once byte-code is generated for bound code, 
there is no cost.  Similarly, block scope added considerable complexity. 
Program units were fairly straight forward as is strict mode and pragmas.

Structural types and type checking is next on our high priority list.

Michael

Graydon Hoare wrote:
> Michael O'Brien wrote:
>
>> Could Graydon give a snapshot of what is not implemented in the RI in 
>> terms of the proposals / features?  I know the trac database lists 
>> all, but a punch list of the high priority deficits would be helpful.
>
> Sure. I can describe the state of most issues as named by the 
> proposals page, I think. Some of the proposals have sort of 
> no-longer-sensible names so I'm going to use the proposals page as a 
> rough guide and name the things that have seemed, in my work, to be 
> separate "features" of the RI.
>
> Implemented, may have bugs:
>
>  - classes and interfaces
>  - namespaces
>  - pragmas
>  - let, const, let-const
>  - iterators
>  - enumerability control
>  - type expressions / definitions / annotations
>  - runtime type checks ("standard mode")
>  - nullability
>  - destructuring assignment
>  - slice syntax
>  - hashcode
>  - catchalls
>  - map & vector
>  - date & time improvements
>  - meta objects
>  - static generics
>  - string trim
>  - typeof
>  - globals
>  - expression closures
>  - name objects
>  - type operators (is / to / cast / wrap)
>
> Implemented and partly working, but still in flux / work to do:
>
>  - inheritance checking
>  - strict mode
>  - type parameters
>  - structural types
>  - numbers & decimal
>  - getters & setters (structural part is incomplete)
>  - packages
>
> Partially implemented / not yet working:
>
>  - program units
>  - generic function
>  - updates to unicode
>  - updates to regexps
>
> Unimplemented:
>
>  - generators
>  - tail calls
>  - triple quotes
>  - stack inspection
>  - reformed with
>  - resurrected eval (eval exists but may be wrong)
>  - help for the argument object
>  - "this function" / "this generator"
>
> In my mind the "high priority" deficits where I actually know what to 
> do are:
>
>  - extending strict mode
>  - extending the part of the definer that checks inheritance
>
> The remaining issues on my list all involve some spec/discussion work 
> (units and packages, type parameters, structural typechecks, tail 
> calls, reformed rules for with/this/eval/arguments)
>
> -Graydon
>



More information about the Es4-discuss mailing list