What do you mean by “nobody’s stuff broke”? I would be surprised if nothing broke if v8 or JavaScriptCore or Chakra switched to the FireFox approach (which is only broken in the specific case where the target is a JSArray, based on what Jordan is saying). If you can prove that nothing breaks if other browsers implement that change (and, if similar changes are implemented for pop/shift/unshift, since IMHO those apis need to behave consistently), then maybe it’s not an unreasonable change.
> On Oct 29, 2016, at 7:07 PM, Jann Horn <[email protected]> wrote: > > On Sat, Oct 29, 2016 at 03:15:48PM -0700, Jordan Harband wrote: >> That just means anyone relying on that behavior is broken in Firefox - if >> their code would work in all of the other browsers, then it's a Firefox >> bug, not something the spec can change. > > But apparently, nobody's stuff broke. > In the Linux kernel, the approach to API changes is basically "you can > change things as long as no existing userspace code breaks because of > those changes", which I think is reasonable. > And as far as I can tell, ECMAScript uses a similar approach; for > example, AFAIK in ECMAScript 6.0, the following code would have worked, > but ECMAScript 7.0 breaks it (by making %ObjectPrototype% an immutable > prototype exotic object): > > Reflect.setPrototypeOf(Object.prototype, {__proto__:null, a:1}); > console.log(({}).a); > > So clearly, reasonable breakage in new ECMAScript versions is permitted. > _______________________________________________ > 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

