Skip to content

Commit 4ab5aff

Browse files
authored
Provide normative guidance on allowing optional options, values, and functions
See #924 for the origin of this PR.
1 parent 5f6657b commit 4ab5aff

File tree

1 file changed

+29
-6
lines changed

1 file changed

+29
-6
lines changed

spec/registry.md

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,34 @@
11
# MessageFormat 2.0 Default Function Registry
22

3-
This section describes the functions for which each implementation MUST provide
4-
a _function handler_ to be conformant with this specification.
5-
6-
Implementations MAY implement additional _functions_ or additional _options_.
7-
In particular, implementations are encouraged to provide feedback on proposed
8-
_options_ and their values.
3+
This section defines the **standard** _functions_ which are REQUIRED for conformance with this specification,
4+
along with **optional** _functions_ that SHOULD be implemented to support
5+
additional functionality.
6+
7+
Implementations MUST define and support each **standard** _function_ and
8+
MUST accept all _options_ and _option_ values defined as **standard** listed in this specification.
9+
10+
When defined and supported by an implementation, each **optional** _function_
11+
MUST accept all _options_ and _option_ values listed as **standard** in this specification.
12+
13+
Implementations SHOULD implement _options_ and _option_ values that are marked as **optional**.
14+
15+
Implementations MAY implement _functions_ not defined in this specification.
16+
Such functions MUST use an implementation-defined _namespace_.
17+
In addition, implementations are encouraged to provide mechanisms for users to
18+
register and use user-defined _functions_ and their associated _functional handlers_.
19+
20+
Implementations MAY implement additional _options_ not defined here.
21+
Such _options_ MUST use an implementation-specific _namespace_.
22+
23+
Implementations MAY implement additional _option_ values for _options_ defined here,
24+
although care needs to be exercised to ensure interoperability
25+
and to avoid collisions with future standardization.
26+
There is no namespace mechanism for _option_ values,
27+
however, the [stability policy](#stability-policy) for this specification
28+
permits only the ranges a-z, A-Z, and 0-9 in _option_ values.
29+
Implementation-defined values SHOULD use a distinguishing character
30+
or character sequence, such as by prefixing with a `_` U+005F LOW LINE,
31+
to ensure that they don't collide with future standardization.
932

1033
> [!NOTE]
1134
> The [Stability Policy](/spec#stability-policy) allows for updates to

0 commit comments

Comments
 (0)