W3C home > Mailing lists > Public > public-script-coord@w3.org > October to December 2009

Re: Conflicts between W3C specs and ES5?

From: Maciej Stachowiak <mjs@apple.com>
Date: Tue, 17 Nov 2009 11:03:55 -0800
Cc: James Graham <jgraham@opera.com>, "Mark S. Miller" <erights@google.com>, public-script-coord@w3.org
Message-id: <D0336B54-C261-415E-B8AF-D9BC574DA146@apple.com>
To: Brendan Eich <brendan@mozilla.org>

On Nov 17, 2009, at 7:32 AM, Brendan Eich wrote:

> On Nov 16, 2009, at 4:28 PM, Maciej Stachowiak wrote:
>
>>> The opportunity cost (that you spend time on trailing edge stuff  
>>> instead of better leading edge work) is very high too.
>>
>> Did you look at the contents of the Wiki page? foo.arguments is not  
>> in there, nor is anything of a similar level of evil.
>
> You're right -- I brought foo.arguments up because it is implemented  
> by V8, and based on stealth-mode development combined with web  
> testing. So why isn't it on that wiki page? In principle it should  
> be, since it was required for web compatibility according to V8  
> developers' testing.

You'd have to ask the authors of the page that. I assume it's because  
the page constitutes scratch notes and is not exhaustive.

>
>
>> Many of the things on that page (for example the HTML-formatting  
>> String functions) look like things we should just spec in ECMAScript.
>
> We tried removing those HTML String.prototype functions once, a  
> while back:
>
> https://bugzilla.mozilla.org/show_bug.cgi?id=276030
>
> These methods are just HTML-oriented extensions, so not  
> objectionable in a standard. But the core language standard,  
> ECMA-262, is used in many domains where HTML processors are missing.  
> If these really should consume scarce specification resources, why  
> not in w3c? Or whatwg, if necessary.

I'm personally fine with specifying this kind of functionality at the  
HTML level. But is it appropriate for a spec layered on top of  
ECMAScript to add methods to String.prototype?

>
>> Let's save our outrage for features that actually break conceptual  
>> integrity of the language, rather than just being slightly lame.
>
> This is not about "evil" or "outrage", it's about economics. How  
> much time should we spend on trailing edge stuff that may be so  
> little used it could be evangelized away?

Is it economically worthwhile evangelizing away the String.prototype  
functions, relative to the cost of specifying them (since they are  
already interoperably implemented)?

>
> Anyway, we didn't slow ES5 down for the stuff on the wiki page, and  
> I do not think we should have delayed it one day.

As far as I can tell, no one has argued that you should have. I think  
the relevant question is what, if anything, to do with this info in  
the future.

>
>
>> You also said (earlier) that the page describes browser  
>> differences, but from my reading many (most?) of the things  
>> mentioned are totally cross-browser compatible, just not specified  
>> anywhere yet.
>
> RegExp statics probably do not interoperate fully (we save, clear,  
> and restore across certain boundaries; other ugly details elude my  
> memory at the moment).

They seem to interoperate enough that you have to implement them. Do  
you believe they can and should be evangelized away?

> Date.parse we've discussed. Non-interoperable mess in detail, many  
> corner cases (IE seems to apply heuristics, not sure whether locale- 
> specific, to mm/dd vs. dd/mm month-day order, for example).

Indeed, and these notes don't even try to define some sort of  
interoperable subset. Regrettably we may want to leave this one alone.

>
> Date.UTC. I agree that's a small issue, easy to spec -- a bug on ES5  
> if you will. Too bad it wasn't reported (AFAIK).

Maybe it can get picked up in the next version.

>
> Global scope vs. global |this| is indeed a conflict as Mark said in  
> his original post.

Yep. Hopefully we can find a clever way out of this in the future.

>
> Evil eval (outside of what ES5 specs; and yes, I'm moralizing now,  
> you'll know it when I do :-P) is a non-interoperable zoo, see Pratap  
> Lakshman's "JScript Deviations from ES3" doc:
>
> http://wiki.ecmascript.org/lib/exe/fetch.php?id=resources%3Aresources&cache=cache&media=resources:jscriptdeviationsfromes3.pdf

It does seem that sites depend on the intersection semantics. Is this  
one to evangelize again?

>
> HTML comments is a worthwhile spec for someone to construct but  
> again, it seems better left ouf of the core language spec, since it  
> is embedding-domain-specific. Sure, an important embedding, the most  
> important -- but it is separable (ignoring E4X) and probably better  
> dealt with in w3c/whatwg.org as a practical matter.

So you think it's appropriate for a W3C spec to add to the lexical  
syntax? I think it's been previously assumed this would be a bad idea.  
Note that it's not completely HTML-specific because JavaScript in an  
SVG <script> element, or in an external script, or (as far as I know)  
passed to eval()

>
> Property Enumeration is an ongoing issue in Ecma TC39. I believe you  
> did some useful testing and posted results to es-discuss. Anyway,  
> I'm not picking on everything in the wiki page, and probably Mark  
> was not either. He was on the look-out for stuff to spec in Ecma,  
> and probably for stuff we want to deprecate, at a guess. I'm with  
> him on that last point.

I think he was concerned that there were other unflagged direct  
conflicts between HTML5 (or other W3C specs) and ES5, hopefully we  
have laid that to rest.

>
> Object Properties (__proto__, really) and Getters and Setters were  
> thrown under the bus in favor of ES5's new and better ways of doing  
> most of what these do.

I think it's probably fine to leave the pre-standard way of doing  
getters and setters behind, assuming we can clear away any actual uses.

>
> IIRC, you objected after the fact that ES5 (3.1 at the time) didn't  
> standardize my fine old hacks (these all came from Mozilla about ten  
> years ago).

If it was still 3.1 at the time, then that was hardly after the fact.  
But I'm not actually sure what you're referring to. I think I  
generally advocated for specifying de facto behavior and in particular  
for not having the spec require things contrary to de facto behavior,  
but I don't believe I made a bright line principle.

> I think you were too late, and although I agree in general de-facto  
> beats a de-jure "cleanup" that incompatibly innovates, I'd say ES5's  
> APIs are "better enough" that the design-by-(sub-)committee exercise  
> led by Allen Wirfs-Brock worked, this time. But this is not a clean  
> situation and I don't (and didn't) moralize about it.
>
> The argument I was having, which you kindly interrupted (no  
> problem! ;-), was against indefinite and blind over-specification.  
> The wiki page is a mix, as you say. But only some of it fits in  
> ECMA-262. Where does the rest, if we agree to cut the crazy over- 
> specification, belong?

I think the argument you were having was against a position that no  
one has taken.

Regards,
Maciej
Received on Tuesday, 17 November 2009 19:04:30 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 8 May 2013 19:30:02 UTC