There is another approach to using JavaScript to specify JavaScript that we 
have discussed within TC39.  The idea to use the exact same style of 
specification as current used for ES5 but to use JavaScript as the "meta 
language" rather than pseudo-code.

Because this work is relevant to this discussion but hasn't had visibility 
outside of TC39 I've made it available on the ES wiki:
http://wiki.ecmascript.org/lib/exe/fetch.php?id=strawman%3Astrawman&cache=cache&media=strawman:es5definterp.js.txt

Allen


From: es-discuss-boun...@mozilla.org [mailto:es-discuss-boun...@mozilla.org] On 
Behalf Of Mark S. Miller
Sent: Thursday, May 20, 2010 8:52 AM
To: Joseph Politz; Arjun Guha; Ankur Taly; John Mitchell; Sergio Maffeis
Cc: es-discuss@mozilla.org
Subject: Re: Specification Language

On Thu, May 20, 2010 at 8:49 AM, Mark S. Miller 
<erig...@google.com<mailto:erig...@google.com>> wrote:
I'd just like to express my enthusiasm for taking a formal approach to the 
kernel language. For everything outside the kernel, defining it by 
self-hosting, by a meta-circular interpreter (where the interpreter is written 
only in the kernel subset of the language) or by desugaring is fine. These 
other techniques may or may not be ideal for expressing the semantics of these 
non-kernel constructs, but it does ensure that an adversary's code cannot take 
any action beyond those actions allowed by the kernel language.

All security reasoning is reasoning about limits on what an adversary may do. 
Thus, all security arguments rest on an induction over all the actions 
available to the adversary. I think it is no accident that both prominent 
attempts to formalize the semantics of JS (LambdaJS and 
<http://www-cs-students.stanford.edu/~ataly/Papers/>) took security as their 
driving motivation.

I had meant to link to 
<http://www-cs-students.stanford.edu/~ataly/#publications> above.



The related pressing issue is how to tighten up the chapter 16 exemptions. So 
long as these exemptions are this broad, the induction is broken and all 
security arguments are unsound. I do not yet have concrete suggestions about 
how we can tighten these up in ways that JS vendors will agree to. But until we 
do, we are just as vulnerable to disasters such as having "foo[-6]", for 
function foo, give foo's caller. By ch16, the major browser that did indeed 
ship this cannot even be said to have violated the spec. This simple extension 
allowed by ch16 simultaneously broke all secure JS subsets (Caja, FBJS, 
WebSandbox, ADsafe, Jacaranda) and all proof about security of any possible 
subsets.



On Wed, May 19, 2010 at 7:03 PM, Joseph Politz 
<j...@cs.brown.edu<mailto:j...@cs.brown.edu>> wrote:
> d) If you're serious about suggesting lambda-JS as a basis (or starting 
> point, anyway) for future editions of ECMA-262, may I make a suggestion? Do a 
> proof-of-concept by taking the ES5 document and rewriting some of it in your 
> suggested style.
If I understand your suggestion right, this is exactly what's going on
here: http://github.com/arjunguha/ML-LambdaJS/blob/master/data/es5-lib.es5

In the repo Arjun pointed to
(http://github.com/arjunguha/ML-LambdaJS), there is:

1.  An updated LambdaJS for ES5, with an interpreter;
2.  An implementation of desugaring (elaboration) from JavaScript
source to ES5-LambdaJS;
3.  A start at writing down built-in objects and functions from the
specification in ES5-LambdaJS.

The implementation passes around 5-6% of the tests at
http://es5conform.codeplex.com/, predominantly those that test the
object model (e.g. Object.defineProperty,
Object.getOwnPropertyDescriptor).  We're on our way to implementing
more of the built-in objects' functionality.

We are serious about using LambdaJS to model real JavaScript, and
we're quite focused on getting the abstractions right at the levels of
semantics, libraries, and elaboration.  I'd love for people to check
out the implementation and give feedback on this and any other issues
as we move forward with it.

Joe
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org<mailto:es-discuss@mozilla.org>
https://mail.mozilla.org/listinfo/es-discuss


--
    Cheers,
    --MarkM



--
    Cheers,
    --MarkM
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to