2008/10/3 Waldemar Horwat <[EMAIL PROTECTED]>:
> An open issue is whether const violations should be compile or run-time
> errors. Clearly some of them are undecidable and can only be reported at
> run-time, but what about the clear-cut cases?
>
> {
> a = x;
> const x = 2;
> }
It would be nice if a compilation error is reported for
const x = x + 1;
This way ECMAScript can beat C++ where
const int i = i + 1;
is syntactically valid and the language does not require any
diagnostic from the implementation.
Regards, Igor
>
> - <Object.clone> was proposed. Waldemar shot it down due to various
> technical deficiencies and the committee agreed.
>
> - A syntactic rule was proposed to disallow any statement following a
> <return>, <break>, <continue>, or <throw> statement in order to cut down on
> errors. Waldemar pointed out that this would fire for non-dead code such as:
>
> if (x)
> ...
> else
> return z;
> foo();
>
> where foo() isn't dead at all. Other legitimate places to have statements
> are after a <break> in a <switch>. There wasn't much desire to change its
> semantics so that it would look for dead code (that would require specifying
> whether ... can proceed or not), so it was dropped.
>
> - We were wondering why ES4 had a version of <eval> that did not capture the
> enclosing scope. This does not appear to be permitted by ES3, which requires
> that <eval> either evaluate in the current scope or throw an EvalError.
>
> - The contained <statement> inside a labeled statement should be a
> <substatement> in the grammar.
>
> - In strict mode, a variable reference inside a nested scope must not
> evaluate to a Reference whose base is null rather than a Reference to a
> property of the global object. The latter would prohibit legitimate
> references to Window.foo inside a function.
>
> - Discussion about syntax of <use strict> directive. Most favored option is
> the string literal "use strict" or "use strict,xxxxx" where xxxxx are
> arbitrary characters at the beginning of the program.
>
> - The semantics of Function.bind were essentially broken and need to be
> rewritten. We also changed its semantics so that bind works exactly as
> though the additional arguments were supplied at the point of the call, which
> means that you can use bound functions with both function calls and the <new>
> operator and have them behave as expected.
>
> - Dropped efforts to reflect the names of parameters. Many of the ones in
> the ES3.1 spec have names that are convenient for the algorithm writeups but
> don't make sense otherwise: <Object.defineProperty> would have the
> parameters ["O", "P", "Attributes"]. This also wouldn't extend to the rest
> parameters that we'll introduce in ES-Harmony, so it's premature to
> standardize it now.
>
> 11.9.3: Step 15 on is dead code.
> Step 19 is dead code.
>
> 15.13.1.1: What's a 34 digit integer? For example, 7 is not a 34 digit
> integer.
>
> 15.12.1: What does it mean to parse 1?
>
> 15.12.2: What does it mean to contain cycles? What if the cycle is filtered
> out? What if the object modifies itself as it's being read (due to getters
> or side effects from toJSON routines)?
>
>
> DECIMAL AND IEEE 754-2008
>
> Mike Cowlishaw gave a presentation about Decimal and the IEEE 754-2008
> standard which replaces IEEE 754-1985. New things in there (most of which
> apply to both binary and decimal floating-point values) include:
>
> - New 64 and 128-bit decimal types and 128-bit binary type. The decimal
> types each have two incompatible representations.
> - Hexadecimal float literals
> - Round-to-nearest-ties-away-from-zero mode
> - Fused multiply-add
> - minnum and maxnum (min and max that ignore NaNs)
> - Number-string conversions now must be correctly rounded. ES3 already
> specified that.
> - Classification routines (isNaN, isFinite, etc.)
> - quantize and sameQuantum
> - Signed NaNs
> - 36 trigonometric and such functions which must be correctly rounded to the
> last bit. Apparently that's now possible to do, although nobody has actually
> done for the power function. Luckily these don't have to set the inexact
> flag correctly ;-).
>
> Most of the above are mandatory. Making things mandatory even where they
> don't necessarily apply seems to be the culture of the IEEE 754 committee.
>
> Deleted from IEEE 754:
>
> - Some ways of detecting underflows
> - Traps are no longer mandatory
>
> Mike Cowlishaw published a decFloats C package under an MIT-style open source
> license: http://speleotrove.com/decimal
>
>
> Mike Cowlishaw's preferred semantics of Decimal keeps track of trailing
> zeroes in some ways that several in the committee consider bizarre:
>
> 1.00 + 1 --> 2.00
> 1e12 - 1e12 --> 0e12
> 5 + 5 --> 10
> 1/.1 --> 1e1
> 1/3 - 1/3 --> 0e-34
>
> The values 10 and 1e1 are operationally different. This causes problems for
> array lookups where the index is converted to a string: a[1e4] and
> a[100*100] would refer to different elements. IBM gave in on this point and
> we all agreed to not track trailing zeros (i.e. distinguish among cohort
> members) at all in ECMAScript.
>
> The "m" decimal literal suffix is in for ES3.1. It's the only
> non-downwards-compatible-with-existing-browsers syntax change in that spec.
> The spec needs to be updated to include it.
>
> We discussed and agreed that four of the Math routines (min, max, abs, round)
> should work on both binary and decimal floats in the natural way. The other
> ones can coerce to and return only binary floats.
>
> Sam is implementing Decimal in V8 (and Mozilla?).
>
> Waldemar reviewed the current writeup of Decimal and struggled to understand
> it. We now agree on what the behavior should be, but pretty much every
> section of the writeup needs to be corrected or rewritten. Sam will do the
> work and Waldemar will review.
>
>
> ES-HARMONY
>
> We spent most of Friday on ES-Harmony, with a long discussion about the role
> of types. We agreed that having types be symbols or badges ("interfaces")
> that some classes can export and can be used to annotate variables and
> parameters would be a good direction to follow. We got at least tentative
> agreement on:
> - Types should be sound. If <a> has type T, and no one changes <a>, then <a>
> should continue to have type T.
> - There should be a mechanism for requesting a concrete type (instead of
> anyone who claims to implement an interface) in situations that call for it.
> The simplest way to do this would be to allow classes to be used as types (in
> addition to interfaces), but that's still considered controversial. Other
> possibilities include some way of "freezing" a badge. I hope we can make a
> bit faster progress on this.
>
>
> UPCOMING MEETINGS
>
> (I assume that the first day of each meeting is for the secure scripting
> subgroup.)
>
> Nov 18-20, Royal Kona Resort, Hawaii (heh, in today's economy the hotels
> there are cheaper than in Redmond)
> Jan 27-29, Google Mountain View
> Mar 24-26, Washington DC
>
>
> Waldemar
> _______________________________________________
> Es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
Es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss