Skip to content

Commit 638e93d

Browse files
committed
Editorial: Clarify consistency requirements for supported time zones
Adds notes in the appropriate places to prohibit cases such as time zones becoming unsupported after they had previously been observed to be supported, or becoming primary after they had previously been observed to be primary. Co-Authored-By: Richard Gibson <[email protected]> Closes: #1921
1 parent 1472464 commit 638e93d

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

spec/intl.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,8 @@ <h1>AvailableNamedTimeZoneIdentifiers ( ): a List of Time Zone Identifier Record
132132

133133
<emu-note>
134134
Time zone identifiers in the IANA Time Zone Database can change over time.
135-
At a minimum, it is recommended that implementations limit changes to the result of AvailableNamedTimeZoneIdentifiers to the changes allowed by GetAvailableNamedTimeZoneIdentifier, for the lifetime of the surrounding agent.
135+
At a minimum, implementations must limit changes to the result of AvailableNamedTimeZoneIdentifiers to the changes allowed by GetAvailableNamedTimeZoneIdentifier, for the lifetime of the surrounding agent.
136+
That is, implementations must not remove support for or change the primary vs. non-primary status of an identifier that was already reported as available, and they must not add support for an identifier that was already reported as not available.
136137
Due to the complexity of supporting these recommendations, it is recommended that the result of AvailableNamedTimeZoneIdentifiers remains the same for the lifetime of the surrounding agent.
137138
</emu-note>
138139
</emu-clause>

spec/mainadditions.html

+7
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,13 @@ <h1>AvailableNamedTimeZoneIdentifiers ( ): a List of Time Zone Identifier Record
262262
1. Assert: _result_ contains a Time Zone Identifier Record _r_ such that _r_.[[Identifier]] is *"UTC"* and _r_.[[PrimaryIdentifier]] is *"UTC"*.
263263
1. Return _result_.
264264
</emu-alg>
265+
266+
<emu-note>
267+
Time zone identifiers in the IANA Time Zone Database can change over time.
268+
At a minimum, implementations must limit changes to the result of AvailableNamedTimeZoneIdentifiers to the changes allowed by GetAvailableNamedTimeZoneIdentifier, for the lifetime of the surrounding agent.
269+
That is, implementations must not remove support for or change the primary vs. non-primary status of an identifier that was already reported as available, and they must not add support for an identifier that was already reported as not available.
270+
Due to the complexity of supporting these recommendations, it is recommended that the result of AvailableNamedTimeZoneIdentifiers remains the same for the lifetime of the surrounding agent.
271+
</emu-note>
265272
</emu-clause>
266273

267274
<emu-clause id="sec-systemtimezoneidentifier" oldids="sec-defaulttimezone" type="implementation-defined abstract operation">

spec/timezone.html

+10-3
Original file line numberDiff line numberDiff line change
@@ -544,9 +544,16 @@ <h1>
544544
1. Return ~empty~.
545545
</emu-alg>
546546
<emu-note>
547-
For any _timeZoneIdentifier_, or any value that is an ASCII-case-insensitive match for it, the resulting Time Zone Identifier Record must contain the same field values for the lifetime of the surrounding agent.
548-
Furthermore, time zone identifiers must not dynamically change from primary to non-primary during the lifetime of the surrounding agent, meaning that if _timeZoneIdentifier_ is an ASCII-case-insensitive match for the [[PrimaryIdentifier]] field of the result of a previous call to GetAvailableNamedTimeZoneIdentifier, then GetAvailableNamedTimeZoneIdentifier(_timeZoneIdentifier_) must return a record where [[Identifier]] is [[PrimaryIdentifier]].
549-
Due to the complexity of supporting these requirements, it is recommended that the result of AvailableNamedTimeZoneIdentifiers (and therefore GetAvailableNamedTimeZoneIdentifier) remains the same for the lifetime of the surrounding agent.
547+
<p>
548+
For any _timeZoneIdentifier_, or any value that is an ASCII-case-insensitive match for it, the result of this operation must remain the same for the lifetime of the surrounding agent.
549+
Specifically, if that result is a Time Zone Identifier Record, its fields must contain the same values.
550+
</p>
551+
<p>
552+
Furthermore, time zone identifiers must not dynamically change from primary to non-primary or vice versa during the lifetime of the surrounding agent, meaning that if _timeZoneIdentifier_ is an ASCII-case-insensitive match for the [[PrimaryIdentifier]] field of the result of a previous call to GetAvailableNamedTimeZoneIdentifier, then GetAvailableNamedTimeZoneIdentifier(_timeZoneIdentifier_) must return a record where [[Identifier]] is [[PrimaryIdentifier]].
553+
</p>
554+
<p>
555+
Due to the complexity of supporting these requirements, it is recommended that the result of AvailableNamedTimeZoneIdentifiers (and therefore GetAvailableNamedTimeZoneIdentifier) remains the same for the lifetime of the surrounding agent.
556+
</p>
550557
</emu-note>
551558
</emu-clause>
552559

0 commit comments

Comments
 (0)