[tz] [tz-announce] 2021b release of tz code and data available

Paul Ganssle paul at ganssle.io
Tue Sep 28 17:01:42 UTC 2021

For those on the list who re-package this, what did / do you plan to 
release? A version using `PACKRATDATA=backzone`, or no?

Normally I cut releases immediately after the announcement for Python's 
tzdata, but the uncertainty caused by Paul's inclusion of some of the 
controversial changes has led me to delay (sorry Samoans, please send 
letters to your representatives).

I suspect that people who need backzone / packrat data for instrumental 
purposes will need to be very clear on what version they are getting 
(e.g. build from source), but I suspect that there a decent number of 
test suites out there using the pre-1970 data to exercise their 
TZ-handling code (from other comments on the thread I'm pretty sure this 
is exactly why the data are included despite their unreliability), and 
inconsistencies in the data can cause significant problems for this 
application — particularly when there is no reliable way to determine 
what version of the database your TZif files are coming from.

I'd like to try and be as consistent as possible with what the majority 
of repackagers are doing, so I'm assuming I should go ahead with a 
standard build, but if a good fraction of people chose to semi-fork by 
using the provided make file option, that would be fine with me as well 
(and presumably would be better for people who have hard-coded 
transitions into their applications anyway). Anyone tracking who did 
what who could weigh in on this?



On 9/24/21 20:58, Paul Eggert via tz-announce via tz wrote:
> The 2021b release of the tz code and data is available.
> Partly because it's been so long since 2021a, this release has many 
> changes, noted below. In one area, noted "Merge more location-based 
> Zones" below, the mailing list has had significant trouble coming to a 
> long-term consensus. Because we should publish something before the 
> Samoa change takes effect, this release contains just one step towards 
> making tzdb fairer and more equitable in future releases.
> This release reflects the following changes, which were either 
> circulated on the tz mailing list or are relatively minor technical or 
> administrative changes:
>   Briefly:
>     Jordan now starts DST on February's last Thursday.
>     Samoa no longer observes DST.
>     Merge more location-based Zones whose timestamps agree since 1970.
>     Move some backward-compatibility links to 'backward'.
>     Rename Pacific/Enderbury to Pacific/Kanton.
>     Correct many pre-1993 transitions in Malawi, Portugal, etc.
>     zic now creates each output file or link atomically.
>     zic -L no longer omits the POSIX TZ string in its output.
>     zic fixes for truncation and leap second table expiration.
>     zic now follows POSIX for TZ strings using all-year DST.
>     Fix some localtime crashes and bugs in obscure cases.
>     zdump -v now outputs more-useful boundary cases.
>     tzfile.5 better matches a draft successor to RFC 8536.
>     A new file SECURITY.
>   This release is prompted by recent announcements by Jordan and Samoa.
>   It incorporates many other changes that had accumulated since 2021a.
>   However, it omits most proposed changes that merged all Zones
>   agreeing since 1970, as concerns were raised about doing too many of
>   these changes at once.  It does keeps some of these changes in the
>   interest of making tzdb more equitable one step at a time; see
>   "Merge more location-based Zones" below.
>   Changes to future timestamps
>     Jordan now starts DST on February's last Thursday.
>     (Thanks to Steffen Thorsen.)
>     Samoa no longer observes DST.  (Thanks to Geoffrey D. Bennett.)
>   Changes to zone name
>     Rename Pacific/Enderbury to Pacific/Kanton.  When we added
>     Enderbury in 1993, we did not know that it is uninhabited and that
>     Kanton (population two dozen) is the only inhabited location in
>     that timezone.  The old name is now a backward-compatility link.
>   Changes to past timestamps
>     Correct many pre-1993 transitions, fixing entries originally
>     derived from Shanks, Whitman, and Mundell.  The fixes include:
>       - Barbados: standard time was introduced in 1911, not 1932; and
>     DST was observed in 1942-1944
>       - Cook Islands: In 1899 they switched from east to west of GMT,
>     celebrating Christmas for two days.  They (and Niue) switched
>     to standard time in 1952, not 1901.
>       - Guyana: corrected LMT for Georgetown; the introduction of
>     standard time in 1911, not 1915; and corrections to 1975 and
>     1992 transitions
>       - Kanton: uninhabited before 1937-08-31
>       - Niue: only observed -11:20 from 1952 through 1964, then went to
>         -11 instead of -11:30
>       - Portugal: DST was observed in 1950
>       - Tonga: corrected LMT; the introduction of standard time in 1945,
>         not 1901; and corrections to the transition from +12:20 to +13
>         in 1961, not 1941
>     Additional fixes to entries in the 'backzone' file include:
>       - Enderbury: inhabited only 1860/1885 and 1938-03-06/1942-02-09
>       - The Gambia: 1933 and 1942 transitions
>       - Malawi: several 1911 through 1925 transitions
>       - Sierra Leone: several 1913 through 1941 transitions, and DST
>     was NOT observed in 1957 through 1962
>     (Thanks to P Chan, Michael Deckers, Alexander Krivenyshev and
>     Alois Treindl.)
>     Merge more location-based Zones whose timestamps agree since 1970,
>     as pre-1970 timestamps are out of scope.  This is part of a
>     process that has been ongoing since 2013.  This does not affect
>     post-1970 timestamps, and timezone historians who build with 'make
>     PACKRATDATA=backzone' should see no changes to pre-1970 timestamps.
>     When merging, keep the most-populous location's data, and move
>     data for other locations to 'backzone' with a backward
>     link in 'backward'.  For example, move America/Creston data to
>     'backzone' with a link in 'backward' from America/Phoenix because
>     the two timezones' timestamps agree since 1970; this change
>     affects some pre-1968 timestamps in America/Creston because
>     Creston and Phoenix disagreed before 1968.  The affected Zones
>     are Africa/Accra, America/Atikokan, America/Blanc-Sablon,
>     America/Creston, America/Curacao, America/Nassau,
>     America/Port_of_Spain, Antarctica/DumontDUrville, and
>     Antarctica/Syowa.
>   Changes to maintenance procedure
>     The new file SECURITY covers how to report security-related bugs.
>     Several backward-compatibility links have been moved to the
>     'backward' file.  These links, which range from Africa/Addis_Ababa
>     to Pacific/Saipan, are only for compatibility with now-obsolete
>     guidelines suggesting an entry for every ISO 3166 code.
>     The intercontinental convenience links Asia/Istanbul and
>     Europe/Nicosia have also been moved to 'backward'.
>   Changes to code
>     zic now creates each output file or link atomically,
>     possibly by creating a temporary file and then renaming it.
>     This avoids races where a TZ setting would temporarily stop
>     working while zic was installing a replacement file or link.
>     zic -L no longer omits the POSIX TZ string in its output.
>     Starting with 2020a, zic -L truncated its output according to the
>     "Expires" directive or "#expires" comment in the leapseconds file.
>     The resulting TZif files omitted daylight saving transitions after
>     the leap second table expired, which led to far less-accurate
>     predictions of times after the expiry.  Although future timestamps
>     cannot be converted accurately in the presence of leap seconds, it
>     is more accurate to convert near-future timestamps with a few
>     seconds error than with an hour error, so zic -L no longer
>     truncates output in this way.
>     Instead, when zic -L is given the "Expires" directive, it now
>     outputs the expiration by appending a no-change entry to the leap
>     second table.  Although this should work well with most TZif
>     readers, it does not conform to Internet RFC 8536 and some pickier
>     clients (including tzdb 2017c through 2021a) reject it, so
>     "Expires" directives are currently disabled by default.  To enable
>     them, set the EXPIRES_LINE Makefile variable.  If a TZif file uses
>     this new feature it is marked with a new TZif version number 4,
>     a format intended to be documented in a successor to RFC 8536.
>     zic -L LEAPFILE -r @LO no longer generates an invalid TZif file
>     that omits leap second information for the range LO..B when LO
>     falls between two leap seconds A and B.  Instead, it generates a
>     TZif version 4 file that represents the previously-missing
>     information.
>     The TZif reader now allows the leap second table to begin with a
>     correction other than -1 or +1, and to contain adjacent
>     transitions with equal corrections.  This supports TZif version 4.
>     The TZif reader now lets leap seconds occur less than 28 days
>     apart.  This supports possible future TZif extensions.
>     Fix bug that caused 'localtime' etc. to crash when TZ was
>     set to a all-year DST string like "EST5EDT4,0/0,J365/25" that does
>     not conform to POSIX but does conform to Internet RFC 8536.
>     Fix another bug that caused 'localtime' etc. to crash when TZ was
>     set to a POSIX-conforming but unusual TZ string like
>     "EST5EDT4,0/0,J365/0", where almost all the year is DST.
>     Fix yet another bug that caused 'localtime' etc. to mishandle slim
>     TZif files containing leap seconds after the last explicit
>     transition in the table, or when handling far-future timestamps
>     in slim TZif files lacking leap seconds.
>     Fix localtime misbehavior involving positive leap seconds.
>     This change affects only behavior for "right" system time,
>     which contains leap seconds, and only if the UT offset is
>     not a multiple of 60 seconds when a positive leap second occurs.
>     (No such timezone exists in tzdb, luckily.)  Without the fix,
>     the timestamp was ambiguous during a positive leap second.
>     With the fix, any seconds occurring after a positive leap second
>     and within the same localtime minute are counted through 60, not
>     through 59; their UT offset (tm_gmtoff) is the same as before.
>     Here is how the fix affects timestamps in a timezone with UT
>     offset +01:23:45 (5025 seconds) and with a positive leap second at
>     1972-06-30 23:59:60 UTC (78796800):
>     time_t    without the fix      with the fix
>     78796800  1972-07-01 01:23:45  1972-07-01 01:23:45 (leap second)
>     78796801  1972-07-01 01:23:45  1972-07-01 01:23:46
>     ...
>     78796815  1972-07-01 01:23:59  1972-07-01 01:23:60
>     78796816  1972-07-01 01:24:00  1972-07-01 01:24:00
>     Fix an unlikely bug that caused 'localtime' etc. to misbehave if
>     civil time changes a few seconds before time_t wraps around, when
>     leap seconds are enabled.
>     Fix bug in zic -r; in some cases, the dummy time type after the
>     last time transition disagreed with the TZ string, contrary to
>     Internet RFC 8563 section 3.3.
>     Fix a bug with 'zic -r @X' when X is a negative leap second that
>     has a nonnegative correction.  Without the fix, the output file
>     was truncated so that X appeared to be a positive leap second.
>     Fix a similar, even-less-likely bug when truncating at a positive
>     leap second that has a nonpositive correction.
>     zic -r now reports an error if given rolling leap seconds, as this
>     usage has never generally worked and is evidently unused.
>     zic now generates a POSIX-conforming TZ string for TZif files
>     where all-year DST is predicted for the indefinite future.
>     For example, for all-year Eastern Daylight Time, zic now generates
>     "XXX3EDT4,0/0,J365/23" where it previously generated
>     "EST5EDT,0/0,J365/25" or "".  (Thanks to Michael Deckers for
>     noting the possibility of POSIX conformance.)
>     zic.c no longer requires sys/wait.h (thanks to spazmodius for
>     noting it wasn't needed).
>     When reading slim TZif files, zdump no longer mishandles leap
>     seconds on the rare platforms where time_t counts leap seconds,
>     fixing a bug introduced in 2014g.
>     zdump -v now outputs timestamps at boundaries of what localtime
>     and gmtime can represent, instead of the less-useful timestamps
>     one day after the minimum and one day before the maximum.
>     (Thanks to Arthur David Olson for prototype code, and to Manuela
>     Friedrich for debugging help.)
>     zdump's -c and -t options are now consistently inclusive for the
>     lower time bound and exclusive for the upper.  Formerly they were
>     inconsistent.  (Confusion noted by Martin Burnicki.)
>   Changes to build procedure
>     You can now compile with -DHAVE_MALLOC_ERRNO=0 to port to
>     non-POSIX hosts where malloc doesn't set errno.
>     (Problem reported by Jan Engelhardt.)
>   Changes to documentation
>     tzfile.5 better matches a draft successor to RFC 8536
> <https://datatracker.ietf.org/doc/draft-murchison-rfc8536bis/01/>.
> Here are links to the release files:
> https://www.iana.org/time-zones/repository/releases/tzcode2021b.tar.gz
> https://www.iana.org/time-zones/repository/releases/tzdata2021b.tar.gz
> https://www.iana.org/time-zones/repository/releases/tzdb-2021b.tar.lz
> The following convenience links are also available, although they may
> point to the previous release until the relevant caches are refreshed:
>   https://www.iana.org/time-zones/repository/tzcode-latest.tar.gz
>   https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz
>   https://www.iana.org/time-zones/repository/tzdb-latest.tar.lz
> Links are also available via plain HTTP, and via FTP from
> ftp://ftp.iana.org/tz/releases with the same basenames as above.
> Each release file has a GPG signature, which can be retrieved by 
> appending ".asc" to the above URLs. Copies of these signatures are 
> appended to this message.
> This release corresponds to commit 
> 9ffa3f6e5019dfa7cfb5c0e4e8a84fa95adec704 dated 2021-09-24 16:23:00 
> -0700 and tagged '2021b' in the development GitHub repository at 
> <https://github.com/eggert/tz>.
> Here are the SHA-512 checksums for the release files:
> 00fca7508cfbc42123065fe8087397c9dd2acbdda96f3bb0936187825348cf13538f1893f2d02bd8bfa3465427ca7a9a65451baffe39889bc58ba0a77a047806 
>  tzcode2021b.tar.gz
> ca61d64af5ae791f337533c09d2b4f7caa645ecab7b9d13e9bcafc47c7c68535abe7c103c56bbd41d6bd913a8607f9c5187c8ce8a91b4891a750a643f89c8b51 
>  tzdata2021b.tar.gz
> 326fb99666c8d5bb798a9c24d2869307620dce918d47fbedd7f765c91eb35ea44bf776f43cb00cde1944884150232ac6dcdc0194a0364e2d28f6470691cf9177 
>  tzdb-2021b.tar.lz
> Here are the GPG digital signatures for the release files:
> iQIzBAABCgAdFiEEfjeSqdis99YzvBWI7ZfpDmKqfjQFAmFOX/wACgkQ7ZfpDmKq
> fjRKwA//RVH1mmf13Uz99KBQZMc/meVaYT1YSpMqilocZo1w+i+Omai7Aw/r9u1e
> lnwLQukqjpCH4TJWdq8VuloL5ojN1ImoZuIRYECWRHOShxMaS9DLkPRr4qA9Fxic
> hladneiIglVrnzQbG4pH0Vnu9Qakb6I+1um8lCNiJHng84y5KAOIcZu1m9O+A1F1
> bdik8Ddxc4qBluUvcq9n9aqWSgDBvIyCYik6bOo3lOd5zP1rcjSr8VJ+15cAkH4X
> hU/igj9qloyqAmoOyJOzIIwv63T3Xg63rH/V2hJWyux54ayP4Kt8nZqLYA9V8gFI
> V/HL5qNafSYEqguO2H3hTwURc3Utini8Oa2Ou89Ih0hkO+nySacc0ZnhaunmX7Ip
> D5Oj6A8kssG0Uj5fZqpqUp1FeRbziAinSdwTOpRxdkdeHI6tfS0XVnRvRiFATfTu
> oh9107e3okwKAb2UPJtr8Oev0uU8rz8+EorN9/PqJv0n2c3I69NUv6TudFVHM8uB
> lwG3hUNtWWYpK/rzwX8AQkwTrOHMN3VJ94T8xaTm13/jtk6R/+GgSjXKC2C9XZG6
> 5uvi6et06WnRVRO+V5TwnQdfY85pe5nqRDLeo0clxdkAvx6fslLpz9YNacLV/Gn8
> 0UIGt9CBKjE+PU1F5w+O/5btA/1aTojuSpKscdzgQIzXTfDlTZo=
> =+McC
> iQIzBAABCgAdFiEEfjeSqdis99YzvBWI7ZfpDmKqfjQFAmFOX/0ACgkQ7ZfpDmKq
> fjRYmg/9H3rMpV7uQdd+G2K0wybdzTH6vJiNQClWE1+wqCPh/L3e8kCbPIjSo7MF
> SFV/Pu4EDb9kjeA2ruEMYlLnpg5nTP7dYfFRsRDcQJ5Yw70luNImm1ipUkKr9o5Q
> oQqYFKzxvB0G1rE+/gMaxmCHtGaJnv0DEChhmAS5U4j48z71Fn3+UJIU9XPEaODD
> U1Fw62xDsxIlFKjZ9UvilhlVRMnnP5nK9hjrsFKn7OGbxYvkdaRoK5f3M+G5nGXh
> L9nZcE0cd/7zhD3+wlttcH+xw3b+5P+7sxMhucoWQXEl3KyIklh97fi7jzHBHz+s
> DRYLZv/yPoEp94QyCfaYdvWL/i4OX4/9YnXK3ruXDcEV2y8Zl7Wc70Ihxk3I2XAb
> S4YeMcb30uls93QUdSmuhpEEUWrS5e45OnPy9RnT/VnpCalxsukudSNRzuvivKZn
> TsPpf90VUtI9ncLZ4l7OoNVXSj5pJ6DS+V1nCesEQyfyFnFvgK/rogCZ0yt+Cosp
> zaXwBtGyOWwWsGgXHGdJoiQqt/FF8o387EL95vpFr9BRSdSQoKd6K9RrRIH9fuy/
> nnpaksD86fx+WbdLMtbHzsZgCqL1RTGO+kc35Qlr3vqH02UAZiwC9l3DHS9SA01c
> MGDy9zaiLsL/8/lUV3AP31dEP1+DY+BXvdFhIJkmIceBUf7zl0E=
> =PO3W
> iQIzBAABCgAdFiEEfjeSqdis99YzvBWI7ZfpDmKqfjQFAmFOX/4ACgkQ7ZfpDmKq
> fjSaPg//ZlKREhlxjnstpEl6W3x4sStpUrF/Kebp62txYoCjbK22EDnw4BbE0wFh
> BcIBGbfxioC2+1gAjG57LK0RzTqFPPuDA69qYIZFk+xLrREISDqrGHViLGkFEgm5
> jEDamuGW59UoBdnu4Klp1JAd7hvYQYEbbVaIVsrUlAL99OTyujeA6QoZdIjM43eh
> jx4g1P/XuHBqJEH7d9kOM5tBCRvgFhhcu/s4vOvrfFibRHRimYBuPlep5nJ88bb/
> UyCQ1oYIQucWtl+DOszICl/GTmuM33FMTeAX6OrlGxwON6KPI2qNzAaQVpK1apB/
> qF9dTnOVP8pygW6HkiFwNOKx4mplB2V8f1eqLT9mfdOQsEWPRuDyUvejBIr/Hmww
> jHF1w9TX8FxND2KQmcfZNTlKqYcw1O8Vz4m+0UnDzNuLiZAsnTBTrfnKMnVrTOFt
> 1K6KKK+v5y4WYu+pE36cIBM2YxITEpD+YrRr7G1ilzVgRH5FRGCJsxJu0O+BO35z
> rv9qVnJz0xISMJs+qSdJT8v4W4Uc6+crnHjAc7T7eAin3i3y/GY/MA44isCACmhx
> +Rq165laaHXnqTOgQfHhGjigJoH3JCnDYUwg6q+fMMBU2eALkOs+IbgdfVB3hoyo
> UOlYH/A25nuI0PrRgUKsN6N2lrfPjq3bM4twDw33BOyGJ/LN88w=
> =aNBd
> PS. If your tzdata parser does not yet support negative DST offsets or 
> times past 24:00, or if it insists on a 'pacificnew' file that is no 
> longer present, this release's data entries can be turned into a 
> rearguard-format tarball that should work even with these older 
> parsers. This is intended to be a temporary transition aid for these 
> parsers. To generate a rearguard-format tarball, obtain the full 
> distribution as described above, and run the command 'make 
> rearguard_tarballs' on a development host. Or you can run 'make 
> rearguard.zi' to generate a single file that can be fed directly to a 
> parser that works like 'zic'.

More information about the tz mailing list