proposal-accessible-object-hasownproperty
proposal-accessible-object-hasownproperty copied to clipboard
Tracking issue for tc39 process requirements
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
- [x] developers (has, lodash.has)
- [x] implementers
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] SpiderMonkey has had
- [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)
@leobalter @Felienne ping on reviews. Happy to do whatever I can to help if it's needed ❤️
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 )
.
Updated!
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
On some level, the popularity of has
(alone, as well as when also considering similar packages) seems like sufficient developer feedback to me.
Spec text LGTM as an editor.
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.
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).
we'll still have to wait until web compat results come back
Is that something that I can start on?
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.
I just looked at this together with @codehag and it looks good to me!
Made it to stage 3!
Question: Does SerenityOS's LibJS count as a "browser" for stage 4 requirements? https://github.com/SerenityOS/serenity/commit/3ee092cd0cacb999469e50aa5ff220e397df2d79
@jamiebuilds it counts as an implementation, but no, definitely not a browser
PR for test262 tests is here: https://github.com/tc39/test262/pull/2995
PR for ecma262 spec is here: https://github.com/tc39/ecma262/pull/2415
Implemented in V8! https://chromium-review.googlesource.com/c/v8/v8/+/2922117
Currently behind the flag: --harmony-object-has-own
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 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 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 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.
Is there something needed to unblock browsers to ship the feature unflagged or in stable releases? Or will that naturally happen
That'll happen naturally as part of their normal process.
Test262 tests have been merged! https://github.com/tc39/test262/pull/2995
Put together slides for a stage 3 update for the next TC39 meeting: https://docs.google.com/presentation/d/1UbbNOjNB6XpMGo1GGwl0b8lVsNoCPPPLBByPYc7i5IY/edit?usp=sharing
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).
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.
Shipped in v8 9.3 https://v8.dev/blog/v8-release-93
Reached Stage 4!