Override Mistake (specs change)

Specs change (with links to V8 telemetry):

Normative: Make non-writable prototype properties not prevent assigning to instance https://github.com/tc39/ecma262/pull/1320

Slides:

Older discussion (closed):

Make non-writable prototype properties not prevent assigning to instance

It seems these are mostly blocked by finding someone who is willing to implement the expected web compatibility hack for older versions of lodash. The usage counter was heavily skewed and not as useful because of the heavy usage of lodash on the web.

This PR has been closed for now, we need to gather alternate data with better signal/noise ratio and probably have 3 paths forward:

  1. propose a new DirectiveProlog: “use fixedOverride” or some such. VMs will not like this approach. We could also enable this using a syntactic goal symbol instead if that user experience is desired.
  2. propose a different assignment operator. … seems unrealistic …
  3. perform a set of web compat hacks to improve signal/noise and proofed as somewhat safe by Node. Then run browsers against some number of sites to see if anything changes in heap dumps (these can be done locally using headless browsers). Finally, find a browser that finds this to be sufficient to ship in a canary build. This is hard.

Complaints remain about just fixing Strict Mode, but it may be possible to do so. However, the usage counter still showed 1.5% of websites hitting the changed codepath in Strict Mode. It may be possible to just fix strict mode, but we would need to get that number down to closer to 0.025% of websites for the standard breaking change to be considered. I am unclear on how to get that number down or to prove that the change is non-problematic.

My suggestion is to go for a new Mode or syntactic goal symbol.