On Apr 17, 2009, at 12:26 PM, Allen Wirfs-Brock wrote:
1. RFC 4329 (http://www.ietf.org/rfc/rfc4329.txt) mandates user agent
parsing of version parameter, but does not specify legal values. Not
all user agents comply (does IE8? I have not tested). This may become
important over time, so bug-fixing soonest is best.
To the best of my knowledge, IE8 still ignores the version parameter
on script tags. The issue, is what to do with the version request
after it is parsed. I think, that we would find considerable
support within Microsoft for interpreting the version as an explicit
opt-in requests for new functionality (or at least new syntax) where
the new functionality is not accessible without an explicit opt-in.
That's good to hear.
I think there would be considerable resistance to outright rejection
of scripts that specify unknown or unsupported versions.
Here is what RFC 4329 has to say:
Updates of this document may introduce new optional parameters;
implementations MUST consider the impact of such an update. For the
application/ecmascript media type, implementations MUST NOT process
content labeled with a "version" parameter as if no such parameter
had been specified; this is typically achieved by treating the
content as unsupported. This error handling behavior allows
extending the definition of the media type for content that cannot
be
processed by implementations of [ECMA].
The fear would be that we would reject too many unnecessarily over-
specified version requests that might arise from copy and paste page
authors.
Maybe; any evidence for that? IE coerces media types elsewhere (CSS,
historically), flouting the RFCs. In general this just makes for more
interop problems. Those who configure their servers well are punished
by IE overriding wrongly based on sniffing or a filename suffix, those
who misconfigure still don't get "Do What I Mean" because that never
works, in the long run or at scale.
On the other hand, script type= attribute overrides content-type
header, in all browsers I know of, not just in IE.
None of this seems particularly "evidence-based" :-/. But the current
cross-browser behavior is a settled de-facto standard.
Anyway, RFC 4329 is pretty plain. It leaves some wiggle room for
perhaps evaluating the script tag content such that the content can
tell it is not running under the configured version, instead of being
run observably as if fetched or served with a version-free type. We
should draw on expertise from Björn Höhrmann and others in this thread.
* Versioning to opt into new APIs on Object, or in the global object
(JSON, conspicuously, in ES5) will not work as expected: precedent
from ES1-3 and ongoing in Mozilla's JS number line, and in the
prototype ES5 implementations I've seen (Mozilla has one in open
source; there's a JScript DLL I've seen in action from Microsoft, not
released) all expose new properties unconditionally.
IE8 does have a form of global object versioning. In IE8 the JSON
object and associated toJSON methods, the methods
Object.defineProperty and Object.getOwnPropertyDescriptor(they only
supports DOM objects in IE8), and a few other minor standards/interp
conformance fixes are only provided for pages/iframes operating in
"IE8 standards mode" (the default mode). This was a very late
change in the IE development cycle a was primarily made in response
to user feedback concerning the IE8 release candidate (http://blogs.msdn.com/ie/archive/2009/03/20/rtm-platform-changes.aspx
). We'll see how it works out...
Sorry, I think you mentioned this and I forgot. But this is an all-or-
nothing mode, I take it -- not a subjective-programming (ES4
namespaces) facility where one script might run in IE7 mode and see no
JSON property on the very same global object on which another script
in IE8 mode sees the ES5 JSON object. Or so I hope!
/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss