@@ -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+
8684Updates 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
8999Updates 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
110117Updates to this specification will not introduce message syntax that,
111118when parsed according to earlier versions of this specification,
112119would 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
117125function names or function option names
118126consisting of characters in the ranges a-z, A-Z, and 0-9.
119127All 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
126135to the data model that would result in a data model representation
127136based 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
140141represented 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