proposal-accessible-object-hasownproperty icon indicating copy to clipboard operation
proposal-accessible-object-hasownproperty copied to clipboard

Tracking issue for tc39 process requirements

Open jamiebuilds opened this issue 3 years ago • 29 comments

Stage 1

  • [x] introduced to TC39 (Presented on April 20, 2021)
  • [x] champions identified (@bnb)
  • [x] initial explainer (Explainer)

Stage 2

  • [x] committee approval (Approved on April 20, 2021)
  • [x] spec text written
  • [x] spec reviewers selected (@ljharb, @leobalter, @Felienne)

Stage 3

  • [x] committee approval
  • [x] spec editor sign off
  • [x] spec reviewer sign off
    • [x] @ljharb
    • [x] @leobalter
    • [x] @Felienne
  • [x] received developer/implementer feedback

Stage 4

  • [x] committee approval
  • [x] implemented in two browsers
    • [x] V8 (Shipped in v8 9.3) (PR: https://chromium-review.googlesource.com/c/v8/v8/+/2922117)
    • [x] SpiderMonkey (feature-flagged, on track to ship in Firefox 92) (PR: https://hg.mozilla.org/try/rev/94515f78324e83d4fd84f4b0ab764b34aabe6d80)
    • [ ] JavaScriptCore (Bug: https://bugs.webkit.org/show_bug.cgi?id=226291)
    • [x] engine262 (PR: https://github.com/engine262/engine262/pull/163)
  • [x] significant in-the-field experience (#18)
    • [x] SpiderMonkey has had Object.hasOwn enabled in nightly for the last month (as of July 2021) and has not received any bug reports (https://bugzilla.mozilla.org/show_bug.cgi?id=1711872#c8)
    • [x] v8 says that they are on track to ship Object.hasOwn() in Chrome 93 in late August.
  • [x] write test262 tests (PR: https://github.com/tc39/test262/pull/2995)
  • [x] merge test262 tests (PR: https://github.com/tc39/test262/pull/2995)
  • [x] prepare ecma262 pr (PR: https://github.com/tc39/ecma262/pull/2415)
  • [x] editor-approved ecma262 pr (Approval: https://github.com/tc39/ecma262/pull/2415#pullrequestreview-669344525)

jamiebuilds avatar Apr 19 '21 21:04 jamiebuilds

@leobalter @Felienne ping on reviews. Happy to do whatever I can to help if it's needed ❤️

bnb avatar Apr 27 '21 20:04 bnb

My review for stage 3 advancement:

Normative spec is good! I have nitpicks for editorial. This can be fixed with the PR to ecma-262 and perhaps the current rendered text in this repo can be preserved as is for a better illustration.

The parameters and spec steps values should switch to match consistency with spec. See getOwnPropertyDescriptor for an example.

In this case: Object.hasOwn( O, P ).

leobalter avatar Apr 28 '21 03:04 leobalter

Updated!

jamiebuilds avatar Apr 28 '21 21:04 jamiebuilds

How should we collect developer/implementor feedback? I drafted a survey to send out for community members to give feedback, which we can do. I'm also not sure who to ask from implementors though

jamiebuilds avatar Apr 30 '21 17:04 jamiebuilds

On some level, the popularity of has (alone, as well as when also considering similar packages) seems like sufficient developer feedback to me.

ljharb avatar Apr 30 '21 18:04 ljharb

Spec text LGTM as an editor.

bakkot avatar May 13 '21 21:05 bakkot

received developer/implementer feedback

Would it be possible for this proposal to get all the implementor feedback it needs during a future TC39 meeting? I assume since hasOwnProperty already exists, that they'd have an easy time saying if this is okay or not.

jamiebuilds avatar May 14 '21 18:05 jamiebuilds

Would it be possible for this proposal to get all the implementor feedback it needs during a future TC39 meeting?

I imagine preliminary approval can be given here, but we'll still have to wait until web compat results come back. Eg, if anything has already defined Object.hasOwn but done so improperly (eg, didn't make it non-enumerable).

jridgewell avatar May 14 '21 19:05 jridgewell

we'll still have to wait until web compat results come back

Is that something that I can start on?

jamiebuilds avatar May 14 '21 20:05 jamiebuilds

Web compat feedback is only expected within stage 3; the kind of feedback needed for stage 3 is more like "we think we can implement this", which given that it already exists, seems like a given.

ljharb avatar May 14 '21 21:05 ljharb

I just looked at this together with @codehag and it looks good to me!

Felienne avatar May 18 '21 13:05 Felienne

Made it to stage 3!

jamiebuilds avatar May 25 '21 18:05 jamiebuilds

Question: Does SerenityOS's LibJS count as a "browser" for stage 4 requirements? https://github.com/SerenityOS/serenity/commit/3ee092cd0cacb999469e50aa5ff220e397df2d79

jamiebuilds avatar May 25 '21 18:05 jamiebuilds

@jamiebuilds it counts as an implementation, but no, definitely not a browser

ljharb avatar May 25 '21 19:05 ljharb

PR for test262 tests is here: https://github.com/tc39/test262/pull/2995

jamiebuilds avatar May 25 '21 21:05 jamiebuilds

PR for ecma262 spec is here: https://github.com/tc39/ecma262/pull/2415

jamiebuilds avatar May 26 '21 06:05 jamiebuilds

Implemented in V8! https://chromium-review.googlesource.com/c/v8/v8/+/2922117

Currently behind the flag: --harmony-object-has-own

jamiebuilds avatar Jun 08 '21 01:06 jamiebuilds

Implemented in SpiderMonkey! https://bugzilla.mozilla.org/show_bug.cgi?id=1711872

Currently only available in nightly builds

This brings us to two browsers with implementations, so that requirement should now be met for Stage 4

jamiebuilds avatar Jun 09 '21 06:06 jamiebuilds

@jamiebuilds requirements are intentionally vague; sometimes it means “two unflagged browsers”, sometimes it means “one unflagged browser and one other”, sometimes it means “two anything”. For anything with web compat risk, it tends to require at least one fully unflagged browser.

ljharb avatar Jun 09 '21 14:06 ljharb

@ljharb Is there something that can be done to evaluate web compat risk?

In other news, my company, Rome, has joined TC39 pending Ecma GA approval on June 22-23, so I should hopefully be able to co-champion this into stage 4 by the next meeting

jamiebuilds avatar Jun 09 '21 14:06 jamiebuilds

@jamiebuilds there's metrics-gathering that can be done, but that's often more expensive than simply shipping the feature and seeing if it breaks anything.

Basically anything that's API is going to require at least one unflagged browser implementation, altho static properties are safer than prototype properties.

ljharb avatar Jun 09 '21 17:06 ljharb

Is there something needed to unblock browsers to ship the feature unflagged or in stable releases? Or will that naturally happen

jamiebuilds avatar Jun 09 '21 22:06 jamiebuilds

That'll happen naturally as part of their normal process.

bakkot avatar Jun 09 '21 23:06 bakkot

Test262 tests have been merged! https://github.com/tc39/test262/pull/2995

jamiebuilds avatar Jun 16 '21 21:06 jamiebuilds

Put together slides for a stage 3 update for the next TC39 meeting: https://docs.google.com/presentation/d/1UbbNOjNB6XpMGo1GGwl0b8lVsNoCPPPLBByPYc7i5IY/edit?usp=sharing

jamiebuilds avatar Jun 16 '21 21:06 jamiebuilds

Based on the latest feedback from v8 and SpiderMonkey that they have had Object.hasOwn in nightly for over a month and haven't received any reports about it, and the fact that they both plan to ship the feature unflagged in the next month or so, I'm likely going to seek stage 4 at the next TC39 meeting (I'm assuming it will be sometime after August).

jamiebuilds avatar Jul 17 '21 20:07 jamiebuilds

I'm assuming it will be sometime after August

Next meeting is August 31 & September 1 - the next couple meetings are always listed at the bottom of the agenda for a given meeting.

bakkot avatar Jul 17 '21 20:07 bakkot

Shipped in v8 9.3 https://v8.dev/blog/v8-release-93

jamiebuilds avatar Aug 11 '21 19:08 jamiebuilds

Reached Stage 4!

jamiebuilds avatar Aug 31 '21 14:08 jamiebuilds