[tz-announce] 2014g release of tz code and data available

Paul Eggert eggert at cs.ucla.edu
Sat Aug 30 18:08:36 UTC 2014

The 2014g release of the tz code and data is available.  It reflects the 
following changes, which were either circulated on the tz mailing list 
or are relatively minor technical or administrative changes:

   Changes affecting future time stamps

     Turks & Caicos is switching from US eastern time to UTC-4 year-round,
     modeled as a switch from EST/EDT to AST on 2014-11-02 at 02:00.

   Changes affecting past time stamps

     Time in Russia or the USSR before 1926 or so has been corrected by
     a few seconds in the following zones: Asia/Irkutsk,
     Asia/Krasnoyarsk, Asia/Omsk, Asia/Samarkand, Asia/Tbilisi,
     Asia/Vladivostok, Asia/Yakutsk, Europe/Riga, Europe/Samara.  For
     Asia/Yekaterinburg the correction is a few minutes.  (Thanks to
     Vladimir Karpinsky.)

     The Portuguese decree of 1911-05-26 took effect on 1912-01-01.
     This affects 1911 time stamps in Africa/Bissau, Africa/Luanda,
     Atlantic/Azores, and Atlantic/Madeira.  Also, Lisbon's pre-1912
     GMT offset was -0:36:45 (rounded from -0:36:44.68), not -0:36:32.
     (Thanks to Stephen Colebourne for pointing to the decree.)

     Asia/Dhaka ended DST on 2009-12-31 at 24:00, not 23:59.

     A new file 'backzone' contains data which may appeal to
     connoisseurs of old time stamps, although it is out of scope for
     the tz database, is often poorly sourced, and contains some data
     that is known to be incorrect.  The new file is not recommended
     for ordinary use and its entries are not installed by default.
     (Thanks to Lester Caine for the high-quality Jersey, Guernsey, and
     Isle of Man entries.)

     Some more zones have been turned into links, when they differed
     from existing zones only for older time stamps.  As usual,
     these changes affect UTC offsets in pre-1970 time stamps only.
     Their old contents have been moved to the 'backzone' file.
     The affected zones are: Africa/Bangui, Africa/Brazzaville,
     Africa/Douala, Africa/Kinshasa, Africa/Libreville, Africa/Luanda,
     Africa/Malabo, Africa/Niamey, and Africa/Porto-Novo.

   Changes affecting code

     Unless NETBSD_INSPIRED is defined to 0, the tz library now
     supplies functions for creating and using objects that represent
     time zones. The new functions are tzalloc, tzfree, localtime_rz,
     mktime_z, and (if STD_INSPIRED is also defined) posix2time_z and
     time2posix_z.  They are intended for performance: for example,
     localtime_rz (unlike localtime_r) is trivially thread-safe without
     locking.  (Thanks to Christos Zoulas for proposing NetBSD-inspired
     functions, and to Alan Barrett and Jonathan Lennox for helping to
     debug the change.)

     zdump now builds with the tz library unless USE_LTZ is defined to 0,
     This lets zdump use tz features even if the system library lacks them.
     To build zdump with the system library, use 'make CFLAGS=-DUSE_LTZ=0

     zdump now uses localtime_rz if available, as it's significantly faster,
     and it can help zdump better diagnose invalid time zone names.
     Define HAVE_LOCALTIME_RZ to 0 to suppress this.  HAVE_LOCALTIME_RZ
     defaults to 1 if NETBSD_INSPIRED && USE_LTZ.  When localtime_rz is
     not available, zdump now uses localtime_r and tzset if available,
     as this is a bit cleaner and faster than plain localtime.  Compile
     with -DHAVE_LOCALTIME_R=0 and/or -DHAVE_TZSET=0 if your system
     lacks these two functions.

     If THREAD_SAFE is defined to 1, the tz library is now thread-safe.
     Although not needed for tz's own applications, which are 
     this supports POSIX better if the tz library is used in 
multithreaded apps.

     Some crashes have been fixed when zdump or the tz library is given
     invalid or outlandish input.

     The tz library no longer mishandles leap seconds on platforms with
     unsigned time_t in time zones that lack ordinary transitions after 

     The tz code now attempts to infer TM_GMTOFF and TM_ZONE if not
     already defined, to make it easier to configure on common platforms.
     Define NO_TM_GMTOFF and NO_TM_ZONE to suppress this.

     Unless the new macro UNINIT_TRAP is defined to 1, the tz code now
     assumes that reading uninitialized memory yields garbage values
     but does not cause other problems such as traps.

     If TM_GMTOFF is defined and UNINIT_TRAP is 0, mktime is now
     more likely to guess right for ambiguous time stamps near
     transitions where tm_isdst does not change.

     If HAVE_STRFTIME_L is defined to 1, the tz library now defines
     strftime_l for compatibility with recent versions of POSIX.
     Only the C locale is supported, though.  HAVE_STRFTIME_L defaults
     to 1 on recent POSIX versions, and to 0 otherwise.

     tzselect -c now uses a hybrid distance measure that works better
     in Africa.  (Thanks to Alan Barrett for noting the problem.)

     The C source code now ports to NetBSD when GCC_DEBUG_FLAGS is used,
     or when time_tz is defined.

     When HAVE_UTMPX_H is set the 'date' command now builds on systems
     whose <utmpx.h> file does not define WTMPX_FILE, and when setting
     the date it updates the wtmpx file if _PATH_WTMPX is defined.
     This affects GNU/Linux and similar systems.

     For easier maintenance later, some C code has been simplified,
     some lint has been removed, and the code has been tweaked so that
     plain 'make' is more likely to work.

     The C type 'bool' is now used for boolean values, instead of 'int'.

     The long-obsolete LOCALE_HOME code has been removed.

     The long-obsolete 'gtime' function has been removed.

   Changes affecting build procedure

     'zdump' no longer links in ialloc.o, as it's not needed.

     'make check_time_t_alternatives' no longer assumes GNU diff.

   Changes affecting distribution tarballs

     The files checktab.awk and zoneinfo2tdf.pl are now distributed in
     the tzdata tarball instead of the tzcode tarball, since they help
     maintain the data.  The NEWS and Theory files are now also
     distributed in the tzdata tarball, as they're relevant for data.
     (Thanks to Alan Barrett for pointing this out.)  Also, the
     leapseconds.awk file is no longer distributed in the tzcode
     tarball, since it belongs in the tzdata tarball (where 2014f
     inadvertently also distributed it).

   Changes affecting documentation and commentary

     A new file CONTRIBUTING is distributed.  (Thanks to Tim Parenti for
     suggesting a CONTRIBUTING file, and to Tony Finch and Walter Harms
     for debugging it.)

     The man pages have been updated to use function prototypes,
     to document thread-safe variants like localtime_r, and to document
     the NetBSD-inspired functions tzalloc, tzfree, localtime_rz, and

     The fields in Link lines have been renamed to be more descriptive
     and more like the parameters of 'ln'.  LINK-FROM has become TARGET,
     and LINK-TO has become LINK-NAME.

     tz-link.htm mentions the IETF's tzdist working group; Windows
     Runtime etc. (thanks to Matt Johnson); and HP-UX's tztab.

     Some broken URLs have been fixed in the commentary.  (Thanks to
     Lester Caine.)

     Commentary about Philippines DST has been updated, and commentary
     on pre-1970 time in India has been added.

Here are links to the release files:


The files are also available via HTTP as follows:


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.

As usual, links to the latest release files are here:



This release corresponds to commit 
9cd0541edf0bbca453e1b97749c5e68a1d6ab7db dated Thu Aug 28 12:31:23 2014 
-0700 and tagged '2014g' in the unofficial github repository at 

Here are the GPG checksums for the release files:

Version: GnuPG v1

Version: GnuPG v1


More information about the tz-announce mailing list