Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update "Conformance" section for new options/constructors #467

Closed
anba opened this issue Jun 24, 2020 · 10 comments
Closed

Update "Conformance" section for new options/constructors #467

anba opened this issue Jun 24, 2020 · 10 comments
Labels
c: spec Component: spec editorial issues editorial Involves an editorial fix s: help wanted Status: help wanted; needs proposal champion
Milestone

Comments

@anba
Copy link
Contributor

anba commented Jun 24, 2020

https://tc39.es/ecma402/#conformance lists which options are allowed to have implementation-defined behaviour. This section hasn't been kept up to date:

  • NumberFormat: "notation", "compactDisplay", "signDisplay", "currencySign", and "unitDisplay" are missing
  • PluralRules: Add the same exceptions for "minimumIntegerDigits", "minimumFractionDigits", "maximumFractionDigits", "minimumSignificantDigits" as already present for NumberFormat
  • PluralRules: "type" option is missing
  • RelativeTimeFormat: "style" and "numeric" options are missing
@leobalter leobalter added the editorial Involves an editorial fix label Jun 24, 2020
@sffc sffc added c: spec Component: spec editorial issues s: help wanted Status: help wanted; needs proposal champion labels Jun 24, 2020
@sffc sffc added this to the ES 2021 milestone Jun 24, 2020
@sffc
Copy link
Contributor

sffc commented Jun 24, 2020

Appendix A has the list of implementation-depedent locale data: https://tc39.es/ecma402/#annex-implementation-dependent-behaviour

I don't know if we want to keep adding things to Section 2 that don't throw RangeError. Many of the newest features were written such that browsers would be more consistent, instead of creating a situation like "Chrome supports this other option, so that becomes web reality".

@sffc sffc added s: discuss Status: TG2 must discuss to move forward and removed s: help wanted Status: help wanted; needs proposal champion labels Jun 24, 2020
@anba
Copy link
Contributor Author

anba commented Jun 24, 2020

If we can agree to remove all extensions listed in Section 2 which aren't actually used by any implementation, I'm certainly up to it.

I don't know the motivation for Section 2, maybe it was added to match the previous extension from "16 Error Handling and Language Extensions":

An implementation may define behaviour other than throwing RangeError for toFixed, toExponential, and toPrecision when the fractionDigits or precision argument is outside the specified range.

That one was removed in tc39/ecma262#857.

@leobalter
Copy link
Member

If we can agree to remove all extensions listed in Section 2 which aren't actually used by any implementation, I'm certainly up to it.

Can we specifically flag what are those not being currently used by any implementation?

@sffc
Copy link
Contributor

sffc commented Aug 13, 2020

July 9 discussion: https://github.com/tc39/ecma402/blob/master/meetings/notes-2020-07-09.md#update-conformance-section-for-new-optionsconstructors-467

@leobalter was going to reach out to @caridy for more information on the back story of this section of the spec.

@caridy
Copy link
Contributor

caridy commented Aug 13, 2020

I believe that predates my time as editor, probably from the dates of the word doc, we can validate this by looking at first or second editions. I do agree with the sentiment here though. If new features are not throwing RangeErrors, they don't need to be listed there.

@sffc
Copy link
Contributor

sffc commented Aug 13, 2020

@NorbertLindenberg @rwaldron Could you share some insight on the back story for Section 2 "Conformance" in the 402 spec? Why does it exist? What would be the consequences of the following three outcomes:

  1. Continue adding items to Section 2 that could throw RangeErrors.
  2. Keep Section 2 stable without adding new options to it.
  3. Remove items from Section 2 to make conformance requirements stricter.

Also CC @litherum, who's been an advocate for stricter conformance requirements.

@rwaldron
Copy link
Contributor

Hi! That section predates my term as editor.

@NorbertLindenberg
Copy link

This section was inspired by the Conformance section in ECMA-262. The idea was that the standard defines the minimal set of functionality, while implementations are allowed to extend the functionality. The RangeError statements came in because ECMA-402 methods often throw RangeError when they don’t recognize a property value, so allowing them not to throw the RangeError is equivalent to allowing them to recognize additional property values.

At the time, the thinking was that implementations should have significant freedom to experiment and enhance. To what extent that’s still appropriate today is up to today’s TC39 to decide.

sffc added a commit to tc39/agendas that referenced this issue Sep 10, 2020
@sffc
Copy link
Contributor

sffc commented Jan 14, 2021

This was discussed on 2020-08-13: https://github.com/tc39/ecma402/blob/master/meetings/notes-2020-08-13.md#update-conformance-section-for-new-optionsconstructors

We didn't reach a clear consensus, but I think the path forward on this ticket is to verify that Section 2 is up-to-date and self-consistent. Each individual property should be handled on a case-by-case basis.

@sffc sffc added s: help wanted Status: help wanted; needs proposal champion and removed s: discuss Status: TG2 must discuss to move forward labels Jan 14, 2021
@sffc sffc modified the milestones: ES 2021, ES 2022 Mar 22, 2021
@sffc sffc modified the milestones: ES 2022, ES 2023 Jun 1, 2022
@sffc sffc moved this to Priority Issues in ECMA-402 Meeting Topics Aug 22, 2024
@ben-allen
Copy link
Contributor

ben-allen commented Sep 24, 2024

All of the relevant items are as of 2024 appear to be present in the Conformance section list, unless I'm missing something important.

Closing, will reopen if folks think the "keep status quo, update as needed" consensus from 2020 merits further discussion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c: spec Component: spec editorial issues editorial Involves an editorial fix s: help wanted Status: help wanted; needs proposal champion
Projects
Archived in project
Development

No branches or pull requests

7 participants