Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 42c1f97

Browse files
aphillipscatamorphismeemeli
authored
Update the stability policy (#834)
* Update the stability policy Based on discussion in the 2024-07-22 call and in PR #829, update the stability policy. * A deeper, more thorough rewrite - Standardizes the phrasing completely. - Moves all potential future changes (which are not, after all, stability policies) to an "important" block - Removes duplication - Separates functions, options, and option values into separate guarantees - Clarifies the note about formatting changing over time * Update spec/README.md Co-authored-by: Tim Chevalier <[email protected]> * Update spec/README.md Co-authored-by: Eemeli Aro <[email protected]> * remove well-formed * Update spec/README.md --------- Co-authored-by: Tim Chevalier <[email protected]> Co-authored-by: Eemeli Aro <[email protected]>
1 parent 343ef56 commit 42c1f97

File tree

1 file changed

+52
-31
lines changed

1 file changed

+52
-31
lines changed

spec/README.md

Lines changed: 52 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -79,64 +79,65 @@ A reference to a _term_ looks like this.
7979
> The provisions of the stability policy are not in effect until
8080
> the conclusion of the technical preview and adoption of this specification.
8181
82-
Updates to this specification will not change
83-
the syntactical meaning, the runtime output, or other behaviour
84-
of valid messages written for earlier versions of this specification
85-
that only use functions defined in this specification.
82+
Updates to this specification will not make any valid _message_ invalid.
83+
8684
Updates to this specification will not remove any syntax provided in this version.
87-
Future versions MAY add additional structure or meaning to existing syntax.
85+
86+
Updates to this specification MUST NOT specify an error for any message
87+
that previously did not specify an error.
88+
89+
Updates to this specification MUST NOT specify the use of a fallback value for any message
90+
that previously did not specify a fallback value.
91+
92+
Updates to this specification will not change the syntactical meaning
93+
of any syntax defined in this specification except for that syntax marked as
94+
"reserved for future standardization".
95+
96+
Updates to this specification will not assign any meaning to or change the syntactical
97+
requirements for any private-use annotation.
8898

8999
Updates to this specification will not remove any reserved keywords or sigils.
90100

91-
> [!NOTE]
92-
> Future versions may define new keywords.
101+
Updates to this specification will not add any additional Unicode code points to
102+
those in `reserved-annotation-start`.
93103

94-
Updates to this specification will not reserve or assign meaning to
95-
any character "sigils" except for those in the `reserved` production.
104+
Updates to this specification will not remove any functions defined in the default registry.
96105

97-
Updates to this specification
98-
will not remove any functions defined in the default registry nor
99-
will they remove any options or option values.
100-
Additional options or option values MAY be defined.
106+
Updates to this specification will not remove any options or option values
107+
defined in the default registry.
101108

102109
> [!NOTE]
103-
> This does not guarantee that the results of formatting will never change.
104-
> Even when the specification doesn't change,
110+
> The foregoing policies are _not_ a guarantee that the results of formatting will never change.
111+
> Even when this specification or its implementation do not change,
105112
> the functions for date formatting, number formatting and so on
106-
> will change their results over time.
107-
108-
Later specification versions MAY make previously invalid messages valid.
113+
> can change their results over time or behave differently due to local runtime
114+
> differences in implementation or changes to locale data
115+
> (such as due to the release of new CLDR versions).
109116
110117
Updates to this specification will not introduce message syntax that,
111118
when parsed according to earlier versions of this specification,
112119
would produce syntax or data model errors.
113-
Such messages MAY produce errors when formatted
114-
according to an earlier version of this specification.
120+
Messages that use syntax introduced in a future version of this specification
121+
could produce resolution or message function errors
122+
when formatted according to an earlier version of this specification.
115123

116-
From version 2.0, MessageFormat will only reserve, define, or require
124+
Updates to this specification will only reserve, define, or require
117125
function names or function option names
118126
consisting of characters in the ranges a-z, A-Z, and 0-9.
119127
All other names in these categories are reserved for the use of implementations or users.
120128

121129
> [!NOTE]
122130
> Users defining custom names SHOULD include at least one character outside these ranges
123131
> to ensure that they will be compatible with future versions of this specification.
132+
> They SHOULD also use the namespace feature to avoid collisions with other implementations.
124133
125-
Later versions of this specification will not introduce changes
134+
Future versions of this specification will not introduce changes
126135
to the data model that would result in a data model representation
127136
based on this version being invalid.
128137

129138
> For example, existing interfaces or fields will not be removed.
130139
131-
Later versions of this specification MAY introduce changes
132-
to the data model that would result in future data model representations
133-
not being valid for implementations of this version of the data model.
134-
135-
> For example, a future version could introduce a new keyword,
136-
> whose data model representation would be a new interface
137-
> that is not recognized by this version's data model.
138-
139-
Later specification versions will not introduce syntax that cannot be
140+
Future versions of this specification will not introduce syntax that cannot be
140141
represented by this version of the data model.
141142

142143
> For example, a future version could introduce a new keyword.
@@ -146,3 +147,23 @@ represented by this version of the data model.
146147
> Both data models would be "valid" in their context,
147148
> but this version's would be missing any functionality for the new statement type.
148149
150+
> [!IMPORTANT]
151+
> This stability policy allows any of the following, non-exhaustive list, of changes
152+
> in future versions of this specification:
153+
> - Future versions may add additional structure or meaning to existing syntax.
154+
> - Future versions may define new keywords.
155+
> - Future versions may define annotations that use portions of the `reserved-annotation`
156+
> syntax.
157+
> - Future versions may make previously invalid messages valid.
158+
> - Future versions may define additional functions in the default registry
159+
> or may reserve the names of functions for the purposes of interoperability.
160+
> - Future versions may define additional options to existing functions.
161+
> - Future versions may define additional option values for existing options.
162+
> - Future versions may deprecate functions, options, or option values.
163+
> - Future versions of this specification may introduce changes
164+
> to the data model that would result in future data model representations
165+
> not being valid for implementations of this version of the data model.
166+
> - For example, a future version could introduce a new keyword,
167+
> whose data model representation would be a new interface
168+
> that is not recognized by this version's data model.
169+

0 commit comments

Comments
 (0)