xref: /aosp_15_r20/system/timezone/RELEASE_NOTES.md (revision 2fd832c65f8b41db7ddb4ac802b9196762fe4888)
1*2fd832c6SAndroid Build Coastguard Worker### 2022a rev. 2
2*2fd832c6SAndroid Build Coastguard Worker
3*2fd832c6SAndroid Build Coastguard WorkerTZDB 2022b introduces `Europe/Kyiv` and merges more time zones which were
4*2fd832c6SAndroid Build Coastguard Workeralike since 1970. These changes require ICU patches.
5*2fd832c6SAndroid Build Coastguard Worker
6*2fd832c6SAndroid Build Coastguard WorkerThough the reason why 2022b was released are changes in Chile. As they have
7*2fd832c6SAndroid Build Coastguard Workerto be delivered by the 3rd of September and ICU patches are not ready,
8*2fd832c6SAndroid Build Coastguard Workerdecision was made to prepare smaller release which does not need ICU patches.
9*2fd832c6SAndroid Build Coastguard Worker
10*2fd832c6SAndroid Build Coastguard Workertzdata archieve is prepared manually by applying Iran and Chile changes on
11*2fd832c6SAndroid Build Coastguard Workertop of 2022a tag.
12*2fd832c6SAndroid Build Coastguard Worker
13*2fd832c6SAndroid Build Coastguard Worker
14*2fd832c6SAndroid Build Coastguard Worker### 2022a
15*2fd832c6SAndroid Build Coastguard Worker
16*2fd832c6SAndroid Build Coastguard WorkerThis update includes pre-1970
17*2fd832c6SAndroid Build Coastguard Worker[changes](https://github.com/eggert/tz/commit/1edbb16e933a6ba6dceefd2bd7057b5ce00dd13c)
18*2fd832c6SAndroid Build Coastguard Workerwhich were reverted manually in Android and resulted in Android releasing
19*2fd832c6SAndroid Build Coastguard Workerupdates we called `2021a rev 2` and `2021a rev 3` instead of tracking TZDB's
20*2fd832c6SAndroid Build Coastguard Worker`2021b` and `2021c` releases. Android has made changes to reduce the impact of
21*2fd832c6SAndroid Build Coastguard Workerthese changes. This might have app compat issues as some methods in Android's
22*2fd832c6SAndroid Build Coastguard WorkerICU4J APIs such as `TimeZone.getCanonicalID(id)` will return different time
23*2fd832c6SAndroid Build Coastguard Workerzone IDs than before. After this release, the canonical zone IDs returned will
24*2fd832c6SAndroid Build Coastguard Workerbe different for some input IDs, and will more often be associated with
25*2fd832c6SAndroid Build Coastguard Workerdifferent regions.
26*2fd832c6SAndroid Build Coastguard Worker
27*2fd832c6SAndroid Build Coastguard Worker`Africa/Casablanca` is a time zone modelled by the TZDB using a negative DST
28*2fd832c6SAndroid Build Coastguard Workersaving to represent the period of Ramadan. Several of Android's embedded time
29*2fd832c6SAndroid Build Coastguard Workerlibraries do not support negative DST savings, so we use TZDB's rearguard
30*2fd832c6SAndroid Build Coastguard Workerformat, which flips standard and daylight saving time definitions for affected
31*2fd832c6SAndroid Build Coastguard Workerzones. Also, `Africa/Casablanca` transitions follow lunar calendar, which
32*2fd832c6SAndroid Build Coastguard Workeris not supported by TZif format so transitions are pre-generated (as of now up
33*2fd832c6SAndroid Build Coastguard Workerto year 2087). As they are pre-generated, the last transition is used for dates
34*2fd832c6SAndroid Build Coastguard Workerafter 2087. Before `2022a`, in rearguard format that last transition was from
35*2fd832c6SAndroid Build Coastguard Workerstandard to daylight saving time. Having DST throughout the year might break
36*2fd832c6SAndroid Build Coastguard Workerassumptions in software, so as of `2022a` the  last transition is marked as
37*2fd832c6SAndroid Build Coastguard Workerstandard time, even though its offset differs from standard time offset used in
38*2fd832c6SAndroid Build Coastguard Workerprior transitions.
39*2fd832c6SAndroid Build Coastguard Worker
40*2fd832c6SAndroid Build Coastguard WorkerA standard-to-standard time transition breaks DST saving logic in
41*2fd832c6SAndroid Build Coastguard WorkerAndroid's `java.util.TimeZone.getDSTSavings()` - it returns 0 instead of 1 hour.
42*2fd832c6SAndroid Build Coastguard Worker`input_data/iana/tzdb2022a.tar.gz` has [commit](https://github.com/eggert/tz/commit/cec7d9e2e83f8a3faa2367e0d45383a1557889ed)
43*2fd832c6SAndroid Build Coastguard Workerreverted to bring back the old TZif file. There is no fix yet, it will be like
44*2fd832c6SAndroid Build Coastguard Workerthat indefinitely.
45*2fd832c6SAndroid Build Coastguard Worker
46*2fd832c6SAndroid Build Coastguard WorkerThe main reason for the TZDB `2022a` release is a change to the DST transition
47*2fd832c6SAndroid Build Coastguard Workerfor Palestine on 27 Mar 2022. In addition to this year's change, future
48*2fd832c6SAndroid Build Coastguard Workerpredictions have also been [adjusted](https://github.com/eggert/tz/commit/59467e3373a2f90aae3a3c9684ab527855922427)
49*2fd832c6SAndroid Build Coastguard Workerso the DST transitions for future years are also affected.
50*2fd832c6SAndroid Build Coastguard Worker
51*2fd832c6SAndroid Build Coastguard Worker
52*2fd832c6SAndroid Build Coastguard Worker### 2021 rev. 3
53*2fd832c6SAndroid Build Coastguard Worker
54*2fd832c6SAndroid Build Coastguard WorkerLike 2021 rev.2 this release is also different from regular updates. It is
55*2fd832c6SAndroid Build Coastguard Workerclosely correlated with IANA's `2021d` and `2021e`. See below for more details.
56*2fd832c6SAndroid Build Coastguard Worker
57*2fd832c6SAndroid Build Coastguard WorkerTZDB version `2021c` reverted most (but not all) time zone merges from `2021b`.
58*2fd832c6SAndroid Build Coastguard WorkerAs Android has not applied any of them and there were no other rules update,
59*2fd832c6SAndroid Build Coastguard Workerit is a no-op for Android.
60*2fd832c6SAndroid Build Coastguard Worker
61*2fd832c6SAndroid Build Coastguard WorkerThen TZDB version `2021d` was released with Fiji changes. That corresponds to
62*2fd832c6SAndroid Build Coastguard WorkerICU's `2021a2`. But `2021a2` also picked up a
63*2fd832c6SAndroid Build Coastguard Worker`"Link America/Panama America/Coral_Harbour"` change from IANA's TZDB release
64*2fd832c6SAndroid Build Coastguard Workerin the backward file.
65*2fd832c6SAndroid Build Coastguard Worker
66*2fd832c6SAndroid Build Coastguard WorkerICU's `2021a3` is `2021a2` with Palestine changes. No extra change there.
67*2fd832c6SAndroid Build Coastguard Worker
68*2fd832c6SAndroid Build Coastguard Worker`tzdata2021a.tar.gz` in this Android TZDB update is ICU's [`tzdata2021a3.tar.gz`](https://github.com/unicode-org/icu-data/blob/d90a4eed92e3c5221c4dc1977bfdb7c072a8bb3d/tzdata/tzdata_patch/tzdata2021a3.tar.gz)
69*2fd832c6SAndroid Build Coastguard Workerwith `Link` change mention above reverted. Not reverting it will put
70*2fd832c6SAndroid Build Coastguard Worker`America/Coral_Harbour` under Panama in `tzlookup.xml`. Right approach here
71*2fd832c6SAndroid Build Coastguard Workeris to update tooling, but that will take some time.
72*2fd832c6SAndroid Build Coastguard Worker
73*2fd832c6SAndroid Build Coastguard Worker
74*2fd832c6SAndroid Build Coastguard Worker### 2021a rev. 2
75*2fd832c6SAndroid Build Coastguard Worker
76*2fd832c6SAndroid Build Coastguard WorkerIn `2021b` several time zones which were alike since 1970 were merged. It
77*2fd832c6SAndroid Build Coastguard Workerreceived backlash in tz mailing-list. Please check
78*2fd832c6SAndroid Build Coastguard Worker[September archive](https://mm.icann.org/pipermail/tz/2021-September/thread.html)
79*2fd832c6SAndroid Build Coastguard Workerfor discussions around the merges.
80*2fd832c6SAndroid Build Coastguard Worker
81*2fd832c6SAndroid Build Coastguard WorkerThis contains a subset of the updates from IANA's 2021b update, but not all
82*2fd832c6SAndroid Build Coastguard Workerbecause they cause problems for various libraries and OSes, Android included.
83*2fd832c6SAndroid Build Coastguard WorkerNew links cause problems for the tzlookup.xml generation process, which have
84*2fd832c6SAndroid Build Coastguard Workeryet to be resolved. Android API behavior is influenced by ICU, so while ICU
85*2fd832c6SAndroid Build Coastguard Workerare forked and until things become clearer, so is Android.
86*2fd832c6SAndroid Build Coastguard Worker
87*2fd832c6SAndroid Build Coastguard WorkerICU decided to skip zone merge changes and named their release `2021a1`.
88*2fd832c6SAndroid Build Coastguard WorkerUnfortunately there are hardcoded places in Android which expect tzdb version
89*2fd832c6SAndroid Build Coastguard Workerto be exactly 5 characters and we release it as `2021a rev. 2`.
90*2fd832c6SAndroid Build Coastguard Worker
91*2fd832c6SAndroid Build Coastguard Worker`input_data/iana/tzdata2021a.tar.gz` is renamed ICU's `2021a1.tar.gz`. As it
92*2fd832c6SAndroid Build Coastguard Workeris not signed, `tzdata2021a.tar.gz.asc` was deleted for this release only.
93*2fd832c6SAndroid Build Coastguard Worker
94*2fd832c6SAndroid Build Coastguard Worker`2021a1` contains the following changes applied on top of `2021a`:
95*2fd832c6SAndroid Build Coastguard Worker```
96*2fd832c6SAndroid Build Coastguard Worker# Portugal observed DST in 1950
97*2fd832c6SAndroid Build Coastguard Workerhttps://github.com/eggert/tz/commit/ed2f9d6b01d1256a4d463d2ceb953e15e1673d72
98*2fd832c6SAndroid Build Coastguard Worker# Fix Guyana LMT and later historical transitions
99*2fd832c6SAndroid Build Coastguard Workerhttps://github.com/eggert/tz/commit/0252f09cdff3769ecbf6adfdaf6c47055bbfb74b
100*2fd832c6SAndroid Build Coastguard Worker# Add Barbados DST 1942-1944, fix end of LMT
101*2fd832c6SAndroid Build Coastguard Workerhttps://github.com/eggert/tz/commit/42efb563b8224a20c1a6480b38427e5b4634da36
102*2fd832c6SAndroid Build Coastguard Worker# Backzone fixes for Gambia, Malawi, Sierra Leone
103*2fd832c6SAndroid Build Coastguard Workerhttps://github.com/eggert/tz/commit/bdb47c5fd68996c04a69d6b23c4c4a5a81df5c95
104*2fd832c6SAndroid Build Coastguard Worker# Sierra Leone did not use DST 1957-1962
105*2fd832c6SAndroid Build Coastguard Workerhttps://github.com/eggert/tz/commit/6982e34ab92cf13f3f3fb20212aca8aa2e4f0aae
106*2fd832c6SAndroid Build Coastguard Worker# Tonga moved from +12:20 to +13 in 1961, not 1941
107*2fd832c6SAndroid Build Coastguard Workerhttps://github.com/eggert/tz/commit/666022ef2a65bb9872ffa6d98cb73236c5f6daa0
108*2fd832c6SAndroid Build Coastguard Worker# Tonga switched to standard time in 1945, not 1901
109*2fd832c6SAndroid Build Coastguard Workerhttps://github.com/eggert/tz/commit/03cc98977ea7c93c49ecb58eae07cd01e9034bfd
110*2fd832c6SAndroid Build Coastguard Worker# Cook Islands had two Christmases in 1899
111*2fd832c6SAndroid Build Coastguard Workerhttps://github.com/eggert/tz/commit/bf12c3ba8513b640b83c245f804c37feeccb862b
112*2fd832c6SAndroid Build Coastguard Worker# More pre-1978 fixes for Cook and Niue
113*2fd832c6SAndroid Build Coastguard Workerhttps://github.com/eggert/tz/commit/a10451bb3fa7f84181f29ac81b06008fd1d81249
114*2fd832c6SAndroid Build Coastguard Worker# Fix north Vietnam lat+long
115*2fd832c6SAndroid Build Coastguard Workerhttps://github.com/eggert/tz/commit/6860c875400b70be52c71d7b7b9642b8667a8112
116*2fd832c6SAndroid Build Coastguard Worker# Niue left -11:20 in 1964, not 1978
117*2fd832c6SAndroid Build Coastguard Workerhttps://github.com/eggert/tz/commit/b73f9fd0364e1795b40cd325661ce609d6126377
118*2fd832c6SAndroid Build Coastguard Worker# Samoa no longer observes DST
119*2fd832c6SAndroid Build Coastguard Workerhttps://github.com/eggert/tz/commit/29583c461a9705118560e02e69bb64a0bf2fce0c
120*2fd832c6SAndroid Build Coastguard Worker# Jordan now starts DST on February’s last Thursday.
121*2fd832c6SAndroid Build Coastguard Workerhttps://github.com/eggert/tz/commit/39df8c8b22605f59f71213cfb92b3fd321e31d3c
122*2fd832c6SAndroid Build Coastguard Worker```
123*2fd832c6SAndroid Build Coastguard Worker
124*2fd832c6SAndroid Build Coastguard WorkerThese changes are in chronological order -- from old to new, so apply them
125*2fd832c6SAndroid Build Coastguard Workeraccordingly.
126*2fd832c6SAndroid Build Coastguard Worker
127*2fd832c6SAndroid Build Coastguard Worker"Replace Pacific/Enderbury with Pacific/Kanton" change was skipped as it
128*2fd832c6SAndroid Build Coastguard Workerrequires changes in CLDR and `tzdb2021b` was announced late in CLDR's release
129*2fd832c6SAndroid Build Coastguard Workercycle.
130*2fd832c6SAndroid Build Coastguard Worker
131*2fd832c6SAndroid Build Coastguard WorkerCode changes were skipped as Android uses fixed version of tzcode, not ToT.
132*2fd832c6SAndroid Build Coastguard Worker
133