And spec'ing the union of every browser's quirks is not practical. Chrome's implementation, in particular, is very lenient, even accepting "JanZ ..Zu.aZ.r.Zzy.Z . 1 .... 2016" as 2016-01-01.

On 6/9/16 2:09 PM, Jim Blandy wrote:
The more I think about this, the more I'm coming around to Shaver's position. The volume of code on the web is such that it's not a bad first approximation to just think of it as a complete cover of every observable behavior the APIs exhibit. And so much of it is poorly maintained, or not actively maintained at all. So changing anything at all is just guaranteed to break things that will never get fixed.

Adding a new method doesn't make people notice it or use it. People will still crib from old code that calls the Date constructor. But that's the status quo; you haven't made anything worse than it is already. And for actively maintained code, web developers are used to tracking progressing standards, and knowing what the modern thing to use is; a new Date method will participate in that process like everything else. Consider how well moment.js has been picked up, even as a third-party library.

Following the "complete cover" principle, adding a new method to Date is going to break something too: there's guaranteed to be crazy code that somehow depends on the new function not being there. But that's going to be a much smaller impact than changing the behavior of something ancient and widely used, like the Date constructor.



On Thu, Jun 9, 2016 at 1:25 PM, Jim Blandy <[email protected] <mailto:[email protected]>> wrote:

    I certainly get the argument in favor of new APIs over changes to
    old APIs.

    But when an API behaves inconsistently from one browser to the
    next, it seems to me the argument for preserving its specification
    gets a lot weaker. ECMAScript has pinned down under-specified
    behaviors plenty of times.


    On Thu, Jun 9, 2016 at 11:54 AM, Mike Shaver
    <[email protected] <mailto:[email protected]>> wrote:

        I agree with the motivation of the proposal: provide reliable
        cross-browser date parsing capability. The choices are:

        - change the behaviour of an existing, fragile API
        - add a new API with well-specified behaviour

        To take advantage of the former case, a program must know that
        it's running in an engine that has updated to the spec, by
        version checks or (less likely on the web, IMO) probing with
        known patterns. To be damaged by the former case, it need only
        trip over an edge case that was deemed insignificant.

        To take advantage of the latter case, a program must also know
        that it's running in an engine that has update to the spec,
        but it can do that through feature testing. A program can't be
        damaged by the latter case.

        I am in favour of the latter case.

        Mike


        On Thu, Jun 9, 2016 at 11:49 AM, Jim Blandy
        <[email protected] <mailto:[email protected]>> wrote:

            I'm not sure where you're going with this, other than,
            yes, any observable change to an API can have a negative
            impact. Making behavior consistent across browsers often
            has a positive impact as well.

            Do the observations you made suggest ways to improve the
            proposal?

            On Thu, Jun 9, 2016 at 11:43 AM, Mike Shaver
            <[email protected] <mailto:[email protected]>> wrote:

                On Thu, Jun 9, 2016 at 11:42 AM, Jim Blandy
                <[email protected] <mailto:[email protected]>> wrote:

                    The current behavior varies from one browser to
                    another anyway. Assuming the new grammar only
                    codifies existing practice, won't any such
                    programs already be behaving inconsistently across
                    browsers?


                Many programs adapt to the browser they're running in.

                Mike






_______________________________________________
dev-tech-js-engine-internals mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to