Hello community,

here is the log from the commit of package timezone for openSUSE:Factory 
checked in at 2019-03-28 22:44:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/timezone (Old)
 and      /work/SRC/openSUSE:Factory/.timezone.new.25356 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "timezone"

Thu Mar 28 22:44:25 2019 rev:124 rq:688686 version:2019a

Changes:
--------
--- /work/SRC/openSUSE:Factory/timezone/timezone-java.changes   2019-01-08 
12:15:03.885118037 +0100
+++ /work/SRC/openSUSE:Factory/.timezone.new.25356/timezone-java.changes        
2019-03-28 22:44:29.419093954 +0100
@@ -1,0 +2,10 @@
+Tue Mar 26 11:32:44 UTC 2019 - Marketa Calabkova <mcalabk...@suse.com>
+
+- timezone update 2019a:
+  * Palestine "springs forward" on 2019-03-30 instead of 2019-03-23
+  * Metlakatla "fell back" to rejoin Alaska Time on 2019-01-20 at
+    02:00
+  * Israel observed DST in 1980 (08-02/09-13) and 1984 (05-05/08-25)
+  * zic now has an -r option to limit the time range of output data
+
+-------------------------------------------------------------------
--- /work/SRC/openSUSE:Factory/timezone/timezone.changes        2019-01-08 
12:15:04.189117751 +0100
+++ /work/SRC/openSUSE:Factory/.timezone.new.25356/timezone.changes     
2019-03-28 22:44:29.551093936 +0100
@@ -1,0 +2,10 @@
+Tue Mar 26 11:27:21 UTC 2019 - Marketa Calabkova <mcalabk...@suse.com>
+
+- timezone update 2019a:
+  * Palestine "springs forward" on 2019-03-30 instead of 2019-03-23
+  * Metlakatla "fell back" to rejoin Alaska Time on 2019-01-20 at 
+    02:00
+  * Israel observed DST in 1980 (08-02/09-13) and 1984 (05-05/08-25)
+  * zic now has an -r option to limit the time range of output data
+
+-------------------------------------------------------------------

Old:
----
  tzcode2018i.tar.gz
  tzcode2018i.tar.gz.asc
  tzdata2018i.tar.gz
  tzdata2018i.tar.gz.asc

New:
----
  tzcode2019a.tar.gz
  tzcode2019a.tar.gz.asc
  tzdata2019a.tar.gz
  tzdata2019a.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ timezone-java.spec ++++++
--- /var/tmp/diff_new_pack.LoMekq/_old  2019-03-28 22:44:30.743093777 +0100
+++ /var/tmp/diff_new_pack.LoMekq/_new  2019-03-28 22:44:30.743093777 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package timezone-java
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
@@ -21,11 +21,11 @@
 BuildRequires:  javazic
 BuildRequires:  tzdb
 Summary:        Time Zone Descriptions
-License:        BSD-3-Clause and SUSE-Public-Domain
-Group:          System/Base
 # COMMON-BEGIN
 # COMMON-BEGIN
-Version:        2018i
+License:        BSD-3-Clause AND SUSE-Public-Domain
+Group:          System/Base
+Version:        2019a
 Release:        0
 Source:         
https://www.iana.org/time-zones/repository/releases/tzdata%{version}.tar.gz
 Source1:        
https://www.iana.org/time-zones/repository/releases/tzcode%{version}.tar.gz

++++++ timezone.spec ++++++
--- /var/tmp/diff_new_pack.LoMekq/_old  2019-03-28 22:44:30.755093776 +0100
+++ /var/tmp/diff_new_pack.LoMekq/_new  2019-03-28 22:44:30.755093776 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package timezone
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
@@ -23,7 +23,7 @@
 Url:            http://www.iana.org/time-zones
 PreReq:         filesystem, coreutils
 # COMMON-BEGIN
-Version:        2018i
+Version:        2019a
 Release:        0
 Source:         
https://www.iana.org/time-zones/repository/releases/tzdata%{version}.tar.gz
 Source1:        
https://www.iana.org/time-zones/repository/releases/tzcode%{version}.tar.gz



++++++ tzcode2018i.tar.gz -> tzcode2019a.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Makefile new/Makefile
--- old/Makefile        2018-12-24 02:56:52.000000000 +0100
+++ new/Makefile        2019-03-12 00:00:57.000000000 +0100
@@ -12,7 +12,10 @@
 # Email address for bug reports.
 BUGEMAIL=      t...@iana.org
 
-# Choose source data features.  To get new features right away, use:
+# DATAFORM selects the data format.
+# Available formats represent essentially the same data, albeit
+# possibly with minor discrepancies that users are not likely to notice.
+# To get new features and the best data right away, use:
 #      DATAFORM=       vanguard
 # To wait a while before using new features, to give downstream users
 # time to upgrade zic (the default), use:
@@ -33,11 +36,11 @@
 LOCALTIME=     GMT
 
 # If you want something other than Eastern United States time as a template
-# for handling POSIX-style timezone environment variables,
+# for handling ruleless POSIX-style timezone environment variables,
 # change the line below (after finding the timezone you want in the
 # one of the $(TDATA) source files, or adding it to a source file).
-# When a POSIX-style environment variable is handled, the rules in the
-# template file are used to determine "spring forward" and "fall back" days and
+# A ruleless environment setting like TZ='CST6CDT' uses the rules in the
+# template file to determine "spring forward" and "fall back" days and
 # times; the environment variable itself specifies UT offsets of standard and
 # daylight saving time.
 # Alternatively, if you discover you've got the wrong timezone, you can just
@@ -46,7 +49,6 @@
 # Use the command
 #      make zonenames
 # to get a list of the values you can use for POSIXRULES.
-# If you want POSIX compatibility, use "America/New_York".
 
 POSIXRULES=    America/New_York
 
@@ -113,8 +115,8 @@
 TIME_T_ALTERNATIVES_HEAD = int64_t
 TIME_T_ALTERNATIVES_TAIL = int32_t uint32_t uint64_t
 
-# What kind of TZif data files to generate.
-# (TZif is the binary time zone data format that zic generates.)
+# What kind of TZif data files to generate.  (TZif is the binary time
+# zone data format that zic generates; see Internet RFC 8536.)
 # If you want only POSIX time, with time values interpreted as
 # seconds since the epoch (not counting leap seconds), use
 #      REDO=           posix_only
@@ -360,6 +362,9 @@
 zic=           ./zic
 ZIC=           $(zic) $(ZFLAGS)
 
+# To shrink the size of installed TZif files,
+# append "-r @N" to omit data before N-seconds-after-the-Epoch.
+# See the zic man page for more about -r.
 ZFLAGS=
 
 # How to use zic to install TZif files.
@@ -491,7 +496,8 @@
 COMMON=                calendars CONTRIBUTING LICENSE Makefile \
                        NEWS README theory.html version
 WEB_PAGES=     tz-art.html tz-how-to.html tz-link.html
-CHECK_WEB_PAGES=check_tz-art.html check_tz-how-to.html check_tz-link.html
+CHECK_WEB_PAGES=check_theory.html check_tz-art.html \
+                       check_tz-how-to.html check_tz-link.html
 DOCS=          $(MANS) date.1 $(MANTXTS) $(WEB_PAGES)
 PRIMARY_YDATA= africa antarctica asia australasia \
                europe northamerica southamerica
@@ -804,9 +810,10 @@
                touch $@
 
 check_web:     $(CHECK_WEB_PAGES)
+check_theory.html: theory.html
 check_tz-art.html: tz-art.html
 check_tz-link.html: tz-link.html
-check_tz-art.html check_tz-link.html:
+check_theory.html check_tz-art.html check_tz-link.html:
                $(CURL) -sS --url https://validator.w3.org/nu/ -F out=gnu \
                    -F file=@$$(expr $@ : 'check_\(.*\)') -o $@.out && \
                  test ! -s $@.out || { cat $@.out; exit 1; }
@@ -840,11 +847,13 @@
                touch $@
 
 clean_misc:
+               rm -fr check_*.dir
                rm -f *.o *.out $(TIME_T_ALTERNATIVES) \
                  check_* core typecheck_* \
                  date tzselect version.h zdump zic yearistype libtz.a
 clean:         clean_misc
-               rm -fr *.dir *.zi tzdb-*/ $(TZS_NEW)
+               rm -fr *.dir tzdb-*/
+               rm -f *.zi $(TZS_NEW)
 
 maintainer-clean: clean
                @echo 'This command is intended for maintainers to use; it'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/NEWS new/NEWS
--- old/NEWS    2018-12-30 20:07:32.000000000 +0100
+++ new/NEWS    2019-03-26 06:04:24.000000000 +0100
@@ -1,5 +1,53 @@
 News for the tz database
 
+Release 20198 - 2019-03-25 22:01:33 -0700
+
+  Briefly:
+    Palestine "springs forward" on 2019-03-30 instead of 2019-03-23.
+    Metlakatla "fell back" to rejoin Alaska Time on 2019-01-20 at 02:00.
+
+  Changes to past and future timestamps
+
+    Palestine will not start DST until 2019-03-30, instead of 2019-03-23 as
+    previously predicted.  Adjust our prediction by guessing that spring
+    transitions will be between 24 and 30 March, which matches recent practice
+    since 2016.  (Thanks to Even Scharning and Tim Parenti.)
+
+    Metlakatla ended its observance of Pacific standard time,
+    rejoining Alaska Time, on 2019-01-20 at 02:00.  (Thanks to Ryan
+    Stanley and Tim Parenti.)
+
+  Changes to past timestamps
+
+    Israel observed DST in 1980 (08-02/09-13) and 1984 (05-05/08-25).
+    (Thanks to Alois Treindl and Isaac Starkman.)
+
+  Changes to time zone abbreviations
+
+    Etc/UCT is now a backward-compatibility link to Etc/UTC, instead
+    of being a separate zone that generates the abbreviation "UCT",
+    which nowadays is typically a typo.  (Problem reported by Isiah
+    Meadows.)
+
+  Changes to code
+
+    zic now has an -r option to limit the time range of output data.
+    For example, 'zic -r @1000000000' limits the output data to
+    timestamps starting 1000000000 seconds after the Epoch.
+    This helps shrink output size and can be useful for applications
+    not needing the full timestamp history, such as TZDIST truncation;
+    see Internet RFC 8536 section 5.1.  (Inspired by a feature request
+    from Christopher Wong, helped along by bug reports from Wong and
+    from Tim Parenti.)
+
+  Changes to documentation
+
+    Mention Internet RFC 8536 (February 2019), which documents TZif.
+
+    tz-link.html now cites tzdata-meta
+    <https://tzdata-meta.timtimeonline.com/>.
+
+
 Release 2018i - 2018-12-30 11:05:43 -0800
 
   Briefly:
@@ -400,8 +448,9 @@
       downstream parsers do not support it.
 
     * The build procedure constructs three files vanguard.zi, main.zi,
-      and rearguard.zi, one for each format.  The files represent the
-      same data as closely as the formats allow.  These three files
+      and rearguard.zi, one for each format.  Although the files
+      represent essentially the same data, they may have minor
+      discrepancies that users are not likely to notice.  The files
       are intended for downstream data consumers and are not
       installed.  Zoneinfo parsers that do not support negative SAVE values
       should start using rearguard.zi, so that they will be unaffected
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README new/README
--- old/README  2018-10-05 18:59:25.000000000 +0200
+++ new/README  2019-02-01 00:37:28.000000000 +0100
@@ -1,7 +1,7 @@
 README for the tz distribution
 
-"What time is it?" -- Richard Deacon as The King
-"Any time you want it to be." -- Frank Baxter as The Scientist
+"Where do I set the hands of the clock?" -- Les Tremayne as The King
+"Oh that--you can set them any place you want." -- Frank Baxter as The 
Scientist
                                        (from the Bell System film "About Time")
 
 The Time Zone Database (called tz, tzdb or zoneinfo) contains code and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/theory.html new/theory.html
--- old/theory.html     2018-12-20 20:04:30.000000000 +0100
+++ new/theory.html     2019-02-21 00:17:59.000000000 +0100
@@ -15,7 +15,7 @@
     <ul>
       <li><a href="#scope">Scope of the <code><abbr>tz</abbr></code>
          database</a></li>
-      <li><a href="#naming">Names of timezones</a></li>
+      <li><a href="#naming">Timezone identifiers</a></li>
       <li><a href="#abbreviations">Time zone abbreviations</a></li>
       <li><a href="#accuracy">Accuracy of the <code><abbr>tz</abbr></code>
          database</a></li>
@@ -107,9 +107,9 @@
 </section>
 
 <section>
-  <h2 id="naming">Names of timezones</h2>
+  <h2 id="naming">Timezone identifiers</h2>
 <p>
-Each timezone has a unique name.
+Each timezone has a name that uniquely identifies the timezone.
 Inexperienced users are not expected to select these names unaided.
 Distributors should provide documentation and/or a simple selection
 interface that explains each name via a map or via descriptive text like
@@ -142,10 +142,12 @@
   </li>
   <li>
     Be robust in the presence of political changes.
-    For example, names of countries are ordinarily not used, to avoid
+    For example, names are typically not tied to countries, to avoid
     incompatibilities when countries change their name (e.g.,
-    Zaire&rarr;Congo) or when locations change countries (e.g., Hong
+    Swaziland&rarr;Eswatini) or when locations change countries (e.g., Hong
     Kong from UK colony to China).
+    There is no requirement that every country or national
+    capital must have a timezone name.
   </li>
   <li>
     Be portable to a wide variety of implementations.
@@ -215,19 +217,18 @@
     do not need locations, since local time is not defined there.
   </li>
   <li>
-    There should typically be at least one name for each <a
-    href="https://en.wikipedia.org/wiki/ISO_3166-1";><abbr
-    title="International Organization for Standardization">ISO</abbr>
-    3166-1</a> officially assigned two-letter code for an inhabited
-    country or territory.
-  </li>
-  <li>
     If all the clocks in a timezone have agreed since 1970,
     do not bother to include more than one timezone
     even if some of the clocks disagreed before 1970.
     Otherwise these tables would become annoyingly large.
   </li>
   <li>
+    If boundaries between regions are fluid, such as during a war or
+    insurrection, do not bother to create a new timezone merely
+    because of yet another boundary change. This helps prevent table
+    bloat and simplifies maintenance.
+  </li>
+  <li>
     If a name is ambiguous, use a less ambiguous alternative;
     e.g., many cities are named San José and Georgetown, so
     prefer <code>America/Costa_Rica</code> to
@@ -299,29 +300,23 @@
 </ul>
 
 <p>
-The file '<code>zone1970.tab</code>' lists geographical locations used
-to name timezones.
-It is intended to be an exhaustive list of names for geographic
-regions as described above; this is a subset of the timezones in the data.
-Although a '<code>zone1970.tab</code>' location's
-<a href="https://en.wikipedia.org/wiki/Longitude";>longitude</a>
-corresponds to
-its <a href="https://en.wikipedia.org/wiki/Local_mean_time";>local mean
-time (<abbr>LMT</abbr>)</a> offset with one hour for every 15&deg;
-east longitude, this relationship is not exact.
+Guidelines have evolved with time, and names following old versions of
+this guideline might not follow the current version. When guidelines
+have changed, old names continue to be supported. Guideline changes
+have included the following:
 </p>
 
-<p>
-Older versions of this package used a different naming scheme,
-and these older names are still supported.
+<ul>
+<li>
+Older versions of this package used a different naming scheme.
 See the file '<code>backward</code>' for most of these older names
 (e.g., '<code>US/Eastern</code>' instead of '<code>America/New_York</code>').
 The other old-fashioned names still supported are
 '<code>WET</code>', '<code>CET</code>', '<code>MET</code>', and
 '<code>EET</code>' (see the file '<code>europe</code>').
-</p>
+</li>
 
-<p>
+<li>
 Older versions of this package defined legacy names that are
 incompatible with the first guideline of location names, but which are
 still supported.
@@ -332,6 +327,31 @@
 and the file '<code>northamerica</code>' defines the legacy names
 '<code>EST5EDT</code>', '<code>CST6CDT</code>',
 '<code>MST7MDT</code>', and '<code>PST8PDT</code>'.
+</li>
+
+<li>
+Older versions of this guideline said that
+there should typically be at least one name for each <a
+href="https://en.wikipedia.org/wiki/ISO_3166-1";><abbr
+title="International Organization for Standardization">ISO</abbr>
+3166-1</a> officially assigned two-letter code for an inhabited
+country or territory.
+This old guideline has been dropped, as it was not needed to handle
+timestamps correctly and it increased maintenance burden.
+</li>
+</ul>
+
+<p>
+The file '<code>zone1970.tab</code>' lists geographical locations used
+to name timezones.
+It is intended to be an exhaustive list of names for geographic
+regions as described above; this is a subset of the timezones in the data.
+Although a '<code>zone1970.tab</code>' location's
+<a href="https://en.wikipedia.org/wiki/Longitude";>longitude</a>
+corresponds to
+its <a href="https://en.wikipedia.org/wiki/Local_mean_time";>local mean
+time (<abbr>LMT</abbr>)</a> offset with one hour for every 15&deg;
+east longitude, this relationship is not exact.
 </p>
 
 <p>
@@ -983,7 +1003,9 @@
     constrained to be a string containing abbreviations
     and numeric data as described <a href="#POSIX">above</a>.
     The file's format is <dfn><abbr>TZif</abbr></dfn>,
-    a timezone information format that contains binary data.
+    a timezone information format that contains binary data; see
+    <a href="https://tools.ietf.org/html/8536";>Internet
+    <abbr>RFC</abbr> 8536</a>.
     The daylight saving time rules to be used for a
     particular timezone are encoded in the
     <abbr>TZif</abbr> file; the format of the file allows <abbr>US</abbr>,
@@ -1166,7 +1188,7 @@
 <ul>
   <li>
     A set of timezone names as per
-      "<a href="#naming">Names of timezones</a>" above.
+      "<a href="#naming">Timezone identifiers</a>" above.
   </li>
   <li>
     Library functions described in "<a href="#functions">Time and date
@@ -1213,6 +1235,17 @@
 offsets or abbreviations for timestamps, as data entries are often
 based on guesswork and these guesses may be corrected or improved.
 </p>
+
+<p>
+Timezone boundaries are not part of the stable interface.
+For example, even though the <samp>Asia/Bangkok</samp> timezone
+currently includes Chang Mai, Hanoi, and Phnom Penh, this is not part
+of the stable interface and the timezone can split at any time.
+If a calendar application records a future event in some location other
+than Bangkok by putting "<samp>Asia/Bangkok</samp>" in the event's record,
+the application should be robust in the presence of timezone splits
+between now and the future time.
+</p>
 </section>
 
 <section>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tz-art.html new/tz-art.html
--- old/tz-art.html     2018-12-23 19:14:57.000000000 +0100
+++ new/tz-art.html     2019-02-03 01:25:45.000000000 +0100
@@ -18,11 +18,11 @@
 with Time &amp; Timezones &ndash; Computerphile</a>" (2013; 10:12) delves
 into problems that programmers have with timekeeping.</li>
 <li>
-<a href="https://www.rferl.org/a/28375932.html";>All The Time In The World:
+"<a href="https://www.rferl.org/a/28375932.html";>All The Time In The World:
 Explaining The Mysteries Of Time Zones</a>" (2017; 2:15)
 briefly says why France has more time zones than Russia.
 <li>
-"About Time" (1962; 53 minutes) is part of the
+"About Time" (1962; 59 minutes) is part of the
 Bell Science extravaganza, with Frank Baxter, Richard Deacon, and Les Tremayne.
 Its advisor was Richard Feynman, and it was voiced by Mel Blanc.
 (<a href="http://www.imdb.com/title/tt0154110/";>IMDb entry</a>.)</li>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tz-link.html new/tz-link.html
--- old/tz-link.html    2018-12-30 20:02:44.000000000 +0100
+++ new/tz-link.html    2019-02-14 02:08:00.000000000 +0100
@@ -144,7 +144,9 @@
 <code>README</code> file for what to do next.
 The code lets you compile the <code><abbr>tz</abbr></code> source files into
 machine-readable binary files, one for each location. The binary files
-are in a special timezone information format (<dfn><abbr>TZif</abbr></dfn>).
+are in a special timezone information format (<dfn><abbr>TZif</abbr></dfn>)
+specified by <a href="https://tools.ietf.org/html/8536";>Internet
+<abbr>RFC</abbr> 8536</a>.
 The code also lets
 you read a <abbr>TZif</abbr> file and interpret timestamps for that
 location.</p>
@@ -157,7 +159,11 @@
 href="https://mm.icann.org/mailman/listinfo/tz";>subscribe</a> to it
 and browse the <a
 href="https://mm.icann.org/pipermail/tz/";>archive of old
-messages</a>.</p>
+messages</a>.
+<a href="https://tzdata-meta.timtimeonline.com/";>Metadata for mailing list
+discussions</a> and corresponding data changes can be
+generated <a 
href="https://github.com/timparenti/tzdata-meta";>automatically</a>.
+</p>
 <p>
 If your government plans to change its time zone boundaries or
 daylight saving rules, inform <code>t...@iana.org</code> well in
@@ -278,15 +284,12 @@
 (Internet <abbr>RFC</abbr> 7809), a calendar access protocol for
 transferring time zone data by reference.
 The <a href="https://www.ietf.org/mailman/listinfo/tzdist-bis";>tzdist-bis
-mailing list</a> discusses two Internet drafts: <a
+mailing list</a> discusses the Internet draft <a
 id="TZDIST-Geolocate"
 href="https://tools.ietf.org/html/draft-murchison-tzdist-geolocate";>TZDIST
-Geolocate Extension</a> lets a client determine its timezone
+Geolocate Extension</a>, which lets a client determine its timezone
 from its geographic location using a <a
-href="https://tools.ietf.org/html/rfc5870";>'geo' URI</a>, and
-<a href="https://tools.ietf.org/html/draft-murchison-tzdist-tzif";>The
-Time Zone Information Format (<abbr>TZif</abbr>)</a> specifies the format of
-<abbr>TZif</abbr> data.</li>
+href="https://tools.ietf.org/html/rfc5870";>'geo' URI</a>.</li>
 <li>The <a href="https://tools.ietf.org/html/rfc5545";>
 Internet Calendaring and Scheduling Core Object Specification
 (iCalendar)</a> (Internet <abbr>RFC</abbr> 5445)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tzfile.5 new/tzfile.5
--- old/tzfile.5        2018-10-25 09:50:13.000000000 +0200
+++ new/tzfile.5        2019-02-14 02:08:00.000000000 +0100
@@ -15,7 +15,8 @@
 .BR tzset (3)
 are typically found under a directory with a name like
 .IR /usr/share/zoneinfo .
-These files begin with a 44-byte header containing the following fields:
+These files use the format described in Internet RFC 8536.
+The format begins with a 44-byte header containing the following fields:
 .IP * 2
 The magic four-byte ASCII sequence
 .q "TZif"
@@ -384,6 +385,15 @@
 .BR tzset (3),
 .BR tzselect (8),
 .BR zdump (8),
-.BR zic (8)
+.BR zic (8).
+.PP
+Olson A, Eggert P, Murchison K. The Time Zone Information Format (TZif).
+2019 Feb.
+.UR https://\:www.rfc-editor.org/\:info/\:rfc8536
+Internet RFC 8536
+.UE
+.UR https://\:doi.org/\:10.17487/\:RFC8536
+doi:10.17487/RFC8536
+.UE .
 .\" This file is in the public domain, so clarified as of
 .\" 1996-06-05 by Arthur David Olson.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tzfile.5.txt new/tzfile.5.txt
--- old/tzfile.5.txt    2018-10-25 09:50:13.000000000 +0200
+++ new/tzfile.5.txt    2019-02-14 02:08:00.000000000 +0100
@@ -6,7 +6,8 @@
 DESCRIPTION
        The timezone information files used by tzset(3) are typically found
        under a directory with a name like /usr/share/zoneinfo.  These files
-       begin with a 44-byte header containing the following fields:
+       use the format described in Internet RFC 8536.  The format begins with
+       a 44-byte header containing the following fields:
 
        * The magic four-byte ASCII sequence "TZif" identifies the file as a
          timezone information file.
@@ -273,6 +274,10 @@
          hour, or of 15 minutes, or of 1 minute.
 
 SEE ALSO
-       time(2), localtime(3), tzset(3), tzselect(8), zdump(8), zic(8)
+       time(2), localtime(3), tzset(3), tzselect(8), zdump(8), zic(8).
+
+       Olson A, Eggert P, Murchison K. The Time Zone Information Format
+       (TZif).  2019 Feb.  Internet RFC 8536 <https://www.rfc-editor.org/info/
+       rfc8536> doi:10.17487/RFC8536 <https://doi.org/10.17487/RFC8536>.
 
                                                                      TZFILE(5)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tzfile.h new/tzfile.h
--- old/tzfile.h        2018-07-16 19:16:52.000000000 +0200
+++ new/tzfile.h        2019-02-14 02:08:00.000000000 +0100
@@ -33,6 +33,9 @@
 #define TZDEFRULES     "posixrules"
 #endif /* !defined TZDEFRULES */
 
+
+/* See Internet RFC 8536 for more details about the following format.  */
+
 /*
 ** Each file begins with. . .
 */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/version new/version
--- old/version 2018-12-30 20:07:32.000000000 +0100
+++ new/version 2019-03-26 06:04:24.000000000 +0100
@@ -1 +1 @@
-2018i
+2019a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zic.8 new/zic.8
--- old/zic.8   2018-10-22 20:15:11.000000000 +0200
+++ new/zic.8   2019-03-15 17:39:32.000000000 +0100
@@ -63,7 +63,7 @@
 Use
 .IR timezone 's
 rules when handling POSIX-format
-timezone environment variables.
+TZ strings like "CST6CDT" that lack transition rules.
 .B zic
 will act as if the input contained a link line of the form
 .sp
@@ -79,6 +79,30 @@
 If this option is not used,
 no leap second information appears in output files.
 .TP
+.BR "\*-r " "[\fB@\fP\fIlo\fP][\fB/@\fP\fIhi\fP]"
+Reduce the size of output files by limiting their applicability
+to timestamps in the range from
+.I lo
+(inclusive) to
+.I hi
+(exclusive), where
+.I lo
+and
+.I hi
+are possibly-signed decimal counts of seconds since the Epoch
+(1970-01-01 00:00:00 UTC).
+Omitted counts default to extreme values.
+For example,
+.q "zic \*-r @0"
+omits data intended for negative timestamps (i.e., before the Epoch), and
+.q "zic \*-r @0/@2147483648"
+outputs data intended only for nonnegative timestamps that fit into
+31-bit signed integers.
+On platforms with GNU
+.BR date ,
+.q "zic \-r @$(date +%s)"
+omits data intended for past timestamps.
+.TP
 .B \*-v
 Be more verbose, and complain about the following situations:
 .RS
@@ -102,7 +126,7 @@
 .PP
 The output file does not contain all the information about the
 long-term future of a timezone, because the future cannot be summarized as
-an extended POSIX TZ string.  For example, as of 2013 this problem
+an extended POSIX TZ string.  For example, as of 2019 this problem
 occurs for Iran's daylight-saving rules for the predicted future, as
 these rules are based on the Iranian calendar, which cannot be
 represented.
@@ -125,11 +149,10 @@
 or that starts with
 .q "\*-" .
 .RE
-.TP
-.B \*-s
-Limit time values stored in output files to values that are the same
-whether they're taken to be signed or unsigned.
-You can use this option to generate SVVS-compatible files.
+.SH FILES
+Input files use the format described in this section; output files use
+.IR tzfile (5)
+format.
 .PP
 Input files should be text files, that is, they should be a series of
 zero or more lines, each ending in a newline byte and containing at
@@ -457,6 +480,16 @@
 .PP
 If a zone changes at the same instant that a rule would otherwise take
 effect in the earlier zone or continuation line, the rule is ignored.
+A zone or continuation line
+.I L
+with a named rule set starts with standard time by default:
+that is, any of
+.IR L 's
+timestamps preceding
+.IR L 's
+earliest rule use the rule in effect after
+.IR L 's
+first transition into standard time.
 In a single zone it is an error if two rules take effect at the same
 instant, or if two zone changes take effect at the same instant.
 .PP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zic.8.txt new/zic.8.txt
--- old/zic.8.txt       2018-10-22 20:15:11.000000000 +0200
+++ new/zic.8.txt       2019-03-15 17:39:32.000000000 +0100
@@ -28,9 +28,9 @@
                    Link timezone       localtime
 
        -p timezone
-              Use timezone's rules when handling POSIX-format timezone
-              environment variables.  zic will act as if the input contained a
-              link line of the form
+              Use timezone's rules when handling POSIX-format TZ strings like
+              "CST6CDT" that lack transition rules.  zic will act as if the
+              input contained a link line of the form
 
                    Link timezone       posixrules
 
@@ -43,6 +43,18 @@
               If this option is not used, no leap second information appears
               in output files.
 
+       -r [@lo][/@hi]
+              Reduce the size of output files by limiting their applicability
+              to timestamps in the range from lo (inclusive) to hi
+              (exclusive), where lo and hi are possibly-signed decimal counts
+              of seconds since the Epoch (1970-01-01 00:00:00 UTC).  Omitted
+              counts default to extreme values.  For example, "zic -r @0"
+              omits data intended for negative timestamps (i.e., before the
+              Epoch), and "zic -r @0/@2147483648" outputs data intended only
+              for nonnegative timestamps that fit into 31-bit signed integers.
+              On platforms with GNU date, "zic -r @$(date +%s)" omits data
+              intended for past timestamps.
+
        -v     Be more verbose, and complain about the following situations:
 
               The input specifies a link to a link.
@@ -60,7 +72,7 @@
               The output file does not contain all the information about the
               long-term future of a timezone, because the future cannot be
               summarized as an extended POSIX TZ string.  For example, as of
-              2013 this problem occurs for Iran's daylight-saving rules for
+              2019 this problem occurs for Iran's daylight-saving rules for
               the predicted future, as these rules are based on the Iranian
               calendar, which cannot be represented.
 
@@ -76,9 +88,9 @@
               "-", "/", or "_"; or it contains a file name component that
               contains more than 14 bytes or that starts with "-".
 
-       -s     Limit time values stored in output files to values that are the
-              same whether they're taken to be signed or unsigned.  You can
-              use this option to generate SVVS-compatible files.
+FILES
+       Input files use the format described in this section; output files use
+       tzfile(5) format.
 
        Input files should be text files, that is, they should be a series of
        zero or more lines, each ending in a newline byte and containing at
@@ -268,8 +280,12 @@
 
        If a zone changes at the same instant that a rule would otherwise take
        effect in the earlier zone or continuation line, the rule is ignored.
-       In a single zone it is an error if two rules take effect at the same
-       instant, or if two zone changes take effect at the same instant.
+       A zone or continuation line L with a named rule set starts with
+       standard time by default: that is, any of L's timestamps preceding L's
+       earliest rule use the rule in effect after L's first transition into
+       standard time.  In a single zone it is an error if two rules take
+       effect at the same instant, or if two zone changes take effect at the
+       same instant.
 
        A link line has the form
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/zic.c new/zic.c
--- old/zic.c   2018-11-01 18:57:20.000000000 +0100
+++ new/zic.c   2019-03-15 18:21:30.000000000 +0100
@@ -575,7 +575,8 @@
   fprintf(stream,
          _("%s: usage is %s [ --version ] [ --help ] [ -v ] \\\n"
            "\t[ -l localtime ] [ -p posixrules ] [ -d directory ] \\\n"
-           "\t[ -t localtime-link ] [ -L leapseconds ] [ filename ... ]\n\n"
+           "\t[ -t localtime-link ] [ -L leapseconds ] [ -r '[@lo][/@hi]' ] 
\\\n"
+           "\t[ filename ... ]\n\n"
            "Report bugs to %s.\n"),
          progname, progname, REPORT_BUGS_TO);
   if (status == EXIT_SUCCESS)
@@ -603,6 +604,45 @@
   }
 }
 
+#define TIME_T_BITS_IN_FILE 64
+
+/* The minimum and maximum values representable in a TZif file.  */
+static zic_t const min_time = MINVAL(zic_t, TIME_T_BITS_IN_FILE);
+static zic_t const max_time = MAXVAL(zic_t, TIME_T_BITS_IN_FILE);
+
+/* The minimum, and one less than the maximum, values specified by
+   the -r option.  These default to MIN_TIME and MAX_TIME.  */
+static zic_t lo_time = MINVAL(zic_t, TIME_T_BITS_IN_FILE);
+static zic_t hi_time = MAXVAL(zic_t, TIME_T_BITS_IN_FILE);
+
+/* Set the time range of the output to TIMERANGE.
+   Return true if successful.  */
+static bool
+timerange_option(char *timerange)
+{
+  intmax_t lo = min_time, hi = max_time;
+  char *lo_end = timerange, *hi_end;
+  if (*timerange == '@') {
+    errno = 0;
+    lo = strtoimax (timerange + 1, &lo_end, 10);
+    if (lo_end == timerange + 1 || (lo == INTMAX_MAX && errno == ERANGE))
+      return false;
+  }
+  hi_end = lo_end;
+  if (lo_end[0] == '/' && lo_end[1] == '@') {
+    errno = 0;
+    hi = strtoimax (lo_end + 2, &hi_end, 10);
+    if (hi_end == lo_end + 2 || hi == INTMAX_MIN)
+      return false;
+    hi -= ! (hi == INTMAX_MAX && errno == ERANGE);
+  }
+  if (*hi_end || hi < lo || max_time < lo || hi < min_time)
+    return false;
+  lo_time = lo < min_time ? min_time : lo;
+  hi_time = max_time < hi ? max_time : hi;
+  return true;
+}
+
 static const char *    psxrules;
 static const char *    lcltime;
 static const char *    directory;
@@ -615,6 +655,7 @@
 {
        register int c, k;
        register ptrdiff_t i, j;
+       bool timerange_given = false;
 
 #ifdef S_IWGRP
        umask(umask(S_IWGRP | S_IWOTH) | (S_IWGRP | S_IWOTH));
@@ -640,7 +681,7 @@
                } else if (strcmp(argv[k], "--help") == 0) {
                        usage(stdout, EXIT_SUCCESS);
                }
-       while ((c = getopt(argc, argv, "d:l:L:p:st:vy:")) != EOF && c != -1)
+       while ((c = getopt(argc, argv, "d:l:L:p:r:st:vy:")) != EOF && c != -1)
                switch (c) {
                        default:
                                usage(stderr, EXIT_FAILURE);
@@ -708,6 +749,21 @@
                        case 'v':
                                noise = true;
                                break;
+                       case 'r':
+                               if (timerange_given) {
+                                 fprintf(stderr,
+_("%s: More than one -r option specified\n"),
+                                         progname);
+                                 return EXIT_FAILURE;
+                               }
+                               if (! timerange_option(optarg)) {
+                                 fprintf(stderr,
+_("%s: invalid time range: %s\n"),
+                                         progname, optarg);
+                                 return EXIT_FAILURE;
+                               }
+                               timerange_given = true;
+                               break;
                        case 's':
                                warning(_("-s ignored"));
                                break;
@@ -961,11 +1017,6 @@
        }
 }
 
-#define TIME_T_BITS_IN_FILE    64
-
-static zic_t const min_time = MINVAL(zic_t, TIME_T_BITS_IN_FILE);
-static zic_t const max_time = MAXVAL(zic_t, TIME_T_BITS_IN_FILE);
-
 /* Return true if NAME is a directory.  */
 static bool
 itsdir(char const *name)
@@ -1714,12 +1765,16 @@
 }
 
 static void
-puttzcode64(const zic_t val, FILE *const fp)
+puttzcodepass(zic_t val, FILE *fp, int pass)
 {
+  if (pass == 1)
+    puttzcode(val, fp);
+  else {
        char    buf[8];
 
        convert64(val, buf);
        fwrite(buf, sizeof buf, 1, fp);
+  }
 }
 
 static int
@@ -1742,14 +1797,42 @@
   { bool t = ttisgmts[i]; ttisgmts[i] = ttisgmts[j]; ttisgmts[j] = t; }
 }
 
+struct timerange {
+  int defaulttype;
+  ptrdiff_t base, count;
+  int leapbase, leapcount;
+};
+
+static struct timerange
+limitrange(struct timerange r, zic_t lo, zic_t hi,
+          zic_t const *ats, unsigned char const *types)
+{
+  while (0 < r.count && ats[r.base] < lo) {
+    r.defaulttype = types[r.base];
+    r.count--;
+    r.base++;
+  }
+  while (0 < r.leapcount && trans[r.leapbase] < lo) {
+    r.leapcount--;
+    r.leapbase++;
+  }
+
+  if (hi < ZIC_MAX) {
+    while (0 < r.count && hi + 1 < ats[r.base + r.count - 1])
+      r.count--;
+    while (0 < r.leapcount && hi + 1 < trans[r.leapbase + r.leapcount - 1])
+      r.leapcount--;
+  }
+
+  return r;
+}
+
 static void
 writezone(const char *const name, const char *const string, char version,
          int defaulttype)
 {
        register FILE *                 fp;
        register ptrdiff_t              i, j;
-       register int                    leapcnt32, leapi32;
-       register ptrdiff_t              timecnt32, timei32;
        register int                    pass;
        static const struct tzhead      tzh0;
        static struct tzhead            tzh;
@@ -1764,6 +1847,7 @@
                                      _Alignof(zic_t)));
        void *typesptr = ats + nats;
        unsigned char *types = typesptr;
+       struct timerange rangeall, range32, range64;
 
        /*
        ** Sort.
@@ -1839,32 +1923,13 @@
          timecnt++;
        }
 
-       /*
-       ** Figure out 32-bit-limited starts and counts.
-       */
-       timecnt32 = timecnt;
-       timei32 = 0;
-       leapcnt32 = leapcnt;
-       leapi32 = 0;
-       while (0 < timecnt32 && INT32_MAX < ats[timecnt32 - 1])
-               --timecnt32;
-       while (1 < timecnt32 && ats[timei32] < INT32_MIN
-              && ats[timei32 + 1] <= INT32_MIN) {
-               /* Discard too-low transitions, except keep any last too-low
-                  transition if no transition is exactly at INT32_MIN.
-                  The kept transition will be output as an INT32_MIN
-                  "transition" appropriate for buggy 32-bit clients that do
-                  not use time type 0 for timestamps before the first
-                  transition; see below.  */
-               --timecnt32;
-               ++timei32;
-       }
-       while (0 < leapcnt32 && INT32_MAX < trans[leapcnt32 - 1])
-               --leapcnt32;
-       while (0 < leapcnt32 && trans[leapi32] < INT32_MIN) {
-               --leapcnt32;
-               ++leapi32;
-       }
+       rangeall.defaulttype = defaulttype;
+       rangeall.base = rangeall.leapbase = 0;
+       rangeall.count = timecnt;
+       rangeall.leapcount = leapcnt;
+       range64 = limitrange(rangeall, lo_time, hi_time, ats, types);
+       range32 = limitrange(range64, INT32_MIN, INT32_MAX, ats, types);
+
        /*
        ** Remove old file, if any, to snap links.
        */
@@ -1894,6 +1959,9 @@
        for (pass = 1; pass <= 2; ++pass) {
                register ptrdiff_t thistimei, thistimecnt, thistimelim;
                register int    thisleapi, thisleapcnt, thisleaplim;
+               int currenttype, thisdefaulttype;
+               bool locut, hicut;
+               zic_t lo;
                int old0;
                char            omittype[TZ_MAX_TYPES];
                int             typemap[TZ_MAX_TYPES];
@@ -1904,33 +1972,72 @@
                int             indmap[TZ_MAX_CHARS];
 
                if (pass == 1) {
-                       thistimei = timei32;
-                       thistimecnt = timecnt32;
+                       /* Arguably the default time type in the 32-bit data
+                          should be range32.defaulttype, which is suited for
+                          timestamps just before INT32_MIN.  However, zic
+                          traditionally used the time type of the indefinite
+                          past instead.  Internet RFC 8532 says readers should
+                          ignore 32-bit data, so this discrepancy matters only
+                          to obsolete readers where the traditional type might
+                          be more appropriate even if it's "wrong".  So, use
+                          the historical zic value, unless -r specifies a low
+                          cutoff that excludes some 32-bit timestamps.  */
+                       thisdefaulttype = (lo_time <= INT32_MIN
+                                          ? range64.defaulttype
+                                          : range32.defaulttype);
+
+                       thistimei = range32.base;
+                       thistimecnt = range32.count;
                        toomanytimes = thistimecnt >> 31 >> 1 != 0;
-                       thisleapi = leapi32;
-                       thisleapcnt = leapcnt32;
+                       thisleapi = range32.leapbase;
+                       thisleapcnt = range32.leapcount;
+                       locut = INT32_MIN < lo_time;
+                       hicut = hi_time < INT32_MAX;
                } else {
-                       thistimei = 0;
-                       thistimecnt = timecnt;
+                       thisdefaulttype = range64.defaulttype;
+                       thistimei = range64.base;
+                       thistimecnt = range64.count;
                        toomanytimes = thistimecnt >> 31 >> 31 >> 2 != 0;
-                       thisleapi = 0;
-                       thisleapcnt = leapcnt;
+                       thisleapi = range64.leapbase;
+                       thisleapcnt = range64.leapcount;
+                       locut = min_time < lo_time;
+                       hicut = hi_time < max_time;
                }
                if (toomanytimes)
                  error(_("too many transition times"));
+
+               /* Keep the last too-low transition if no transition is
+                  exactly at LO.  The kept transition will be output as
+                  a LO "transition"; see "Output a LO_TIME transition"
+                  below.  This is needed when the output is truncated at
+                  the start, and is also useful when catering to buggy
+                  32-bit clients that do not use time type 0 for
+                  timestamps before the first transition.  */
+               if (0 < thistimei && ats[thistimei] != lo_time) {
+                 thistimei--;
+                 thistimecnt++;
+                 locut = false;
+               }
+
                thistimelim = thistimei + thistimecnt;
                thisleaplim = thisleapi + thisleapcnt;
+               if (thistimecnt != 0) {
+                 if (ats[thistimei] == lo_time)
+                   locut = false;
+                 if (hi_time < ZIC_MAX && ats[thistimelim - 1] == hi_time + 1)
+                   hicut = false;
+               }
                memset(omittype, true, typecnt);
-               omittype[defaulttype] = false;
+               omittype[thisdefaulttype] = false;
                for (i = thistimei; i < thistimelim; i++)
                  omittype[types[i]] = false;
 
-               /* Reorder types to make DEFAULTTYPE type 0.
-                  Use TYPEMAP to swap OLD0 and DEFAULTTYPE so that
-                  DEFAULTTYPE appears as type 0 in the output instead
+               /* Reorder types to make THISDEFAULTTYPE type 0.
+                  Use TYPEMAP to swap OLD0 and THISDEFAULTTYPE so that
+                  THISDEFAULTTYPE appears as type 0 in the output instead
                   of OLD0.  TYPEMAP also omits unused types.  */
                old0 = strlen(omittype);
-               swaptypes(old0, defaulttype);
+               swaptypes(old0, thisdefaulttype);
 
 #ifndef LEAVE_SOME_PRE_2011_SYSTEMS_IN_THE_LURCH
                /*
@@ -1982,8 +2089,8 @@
                thistypecnt = 0;
                for (i = old0; i < typecnt; i++)
                  if (!omittype[i])
-                   typemap[i == old0 ? defaulttype
-                           : i == defaulttype ? old0 : i]
+                   typemap[i == old0 ? thisdefaulttype
+                           : i == thisdefaulttype ? old0 : i]
                      = thistypecnt++;
 
                for (i = 0; i < sizeof indmap / sizeof indmap[0]; ++i)
@@ -2013,7 +2120,7 @@
                convert(thistypecnt, tzh.tzh_ttisgmtcnt);
                convert(thistypecnt, tzh.tzh_ttisstdcnt);
                convert(thisleapcnt, tzh.tzh_leapcnt);
-               convert(thistimecnt, tzh.tzh_timecnt);
+               convert(locut + thistimecnt + hicut, tzh.tzh_timecnt);
                convert(thistypecnt, tzh.tzh_typecnt);
                convert(thischarcnt, tzh.tzh_charcnt);
                DO(tzh_magic);
@@ -2026,21 +2133,29 @@
                DO(tzh_typecnt);
                DO(tzh_charcnt);
 #undef DO
-               for (i = thistimei; i < thistimelim; ++i)
-                       if (pass == 1)
-                               /*
-                               ** Output an INT32_MIN "transition"
-                               ** if appropriate; see above.
-                               */
-                               puttzcode(((ats[i] < INT32_MIN) ?
-                                       INT32_MIN : ats[i]), fp);
-                       else    puttzcode64(ats[i], fp);
-               for (i = thistimei; i < thistimelim; ++i) {
-                       unsigned char   uc;
+               /* Output a LO_TIME transition if needed; see limitrange.
+                  But do not go below the minimum representable value
+                  for this pass.  */
+               lo = pass == 1 && lo_time < INT32_MIN ? INT32_MIN : lo_time;
 
-                       uc = typemap[types[i]];
-                       fwrite(&uc, sizeof uc, 1, fp);
+               if (locut)
+                 puttzcodepass(lo, fp, pass);
+               for (i = thistimei; i < thistimelim; ++i) {
+                 zic_t at = ats[i] < lo ? lo : ats[i];
+                 puttzcodepass(at, fp, pass);
+               }
+               if (hicut)
+                 puttzcodepass(hi_time + 1, fp, pass);
+               currenttype = 0;
+               if (locut)
+                 putc(currenttype, fp);
+               for (i = thistimei; i < thistimelim; ++i) {
+                 currenttype = typemap[types[i]];
+                 putc(currenttype, fp);
                }
+               if (hicut)
+                 putc(currenttype, fp);
+
                for (i = old0; i < typecnt; i++)
                        if (!omittype[i]) {
                                puttzcode(gmtoffs[i], fp);
@@ -2070,9 +2185,7 @@
                                }
                                todo = tadd(trans[i], -gmtoffs[j]);
                        } else  todo = trans[i];
-                       if (pass == 1)
-                               puttzcode(todo, fp);
-                       else    puttzcode64(todo, fp);
+                       puttzcodepass(todo, fp, pass);
                        puttzcode(corr[i], fp);
                }
                for (i = old0; i < typecnt; i++)
@@ -2081,7 +2194,7 @@
                for (i = old0; i < typecnt; i++)
                        if (!omittype[i])
                                putc(ttisgmts[i], fp);
-               swaptypes(old0, defaulttype);
+               swaptypes(old0, thisdefaulttype);
        }
        fprintf(fp, "\n%s\n", string);
        close_file(fp, directory, name);
@@ -2301,6 +2414,12 @@
        struct rule                     stdr, dstr;
 
        result[0] = '\0';
+
+       /* Internet RFC 8536 section 5.1 says to use an empty TZ string if
+          future timestamps are truncated.  */
+       if (hi_time < max_time)
+         return -1;
+
        zp = zpfirst + zonecount - 1;
        stdrp = dstrp = NULL;
        for (i = 0; i < zp->z_nrules; ++i) {
@@ -2737,11 +2856,12 @@
                xr.r_dycode = DC_DOM;
                xr.r_dayofmonth = 1;
                xr.r_tod = 0;
-               for (lastat = &attypes[0], i = 1; i < timecnt; i++)
+               for (lastat = attypes, i = 1; i < timecnt; i++)
                        if (attypes[i].at > lastat->at)
                                lastat = &attypes[i];
-               if (lastat->at < rpytime(&xr, max_year - 1)) {
-                       addtt(rpytime(&xr, max_year + 1), lastat->type);
+               if (!lastat || lastat->at < rpytime(&xr, max_year - 1)) {
+                       addtt(rpytime(&xr, max_year + 1),
+                             lastat ? lastat->type : defaulttype);
                        attypes[timecnt - 1].dontmerge = true;
                }
        }

++++++ tzdata2018i.tar.gz -> tzdata2019a.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Makefile new/Makefile
--- old/Makefile        2018-12-24 02:56:52.000000000 +0100
+++ new/Makefile        2019-03-12 00:00:57.000000000 +0100
@@ -12,7 +12,10 @@
 # Email address for bug reports.
 BUGEMAIL=      t...@iana.org
 
-# Choose source data features.  To get new features right away, use:
+# DATAFORM selects the data format.
+# Available formats represent essentially the same data, albeit
+# possibly with minor discrepancies that users are not likely to notice.
+# To get new features and the best data right away, use:
 #      DATAFORM=       vanguard
 # To wait a while before using new features, to give downstream users
 # time to upgrade zic (the default), use:
@@ -33,11 +36,11 @@
 LOCALTIME=     GMT
 
 # If you want something other than Eastern United States time as a template
-# for handling POSIX-style timezone environment variables,
+# for handling ruleless POSIX-style timezone environment variables,
 # change the line below (after finding the timezone you want in the
 # one of the $(TDATA) source files, or adding it to a source file).
-# When a POSIX-style environment variable is handled, the rules in the
-# template file are used to determine "spring forward" and "fall back" days and
+# A ruleless environment setting like TZ='CST6CDT' uses the rules in the
+# template file to determine "spring forward" and "fall back" days and
 # times; the environment variable itself specifies UT offsets of standard and
 # daylight saving time.
 # Alternatively, if you discover you've got the wrong timezone, you can just
@@ -46,7 +49,6 @@
 # Use the command
 #      make zonenames
 # to get a list of the values you can use for POSIXRULES.
-# If you want POSIX compatibility, use "America/New_York".
 
 POSIXRULES=    America/New_York
 
@@ -113,8 +115,8 @@
 TIME_T_ALTERNATIVES_HEAD = int64_t
 TIME_T_ALTERNATIVES_TAIL = int32_t uint32_t uint64_t
 
-# What kind of TZif data files to generate.
-# (TZif is the binary time zone data format that zic generates.)
+# What kind of TZif data files to generate.  (TZif is the binary time
+# zone data format that zic generates; see Internet RFC 8536.)
 # If you want only POSIX time, with time values interpreted as
 # seconds since the epoch (not counting leap seconds), use
 #      REDO=           posix_only
@@ -360,6 +362,9 @@
 zic=           ./zic
 ZIC=           $(zic) $(ZFLAGS)
 
+# To shrink the size of installed TZif files,
+# append "-r @N" to omit data before N-seconds-after-the-Epoch.
+# See the zic man page for more about -r.
 ZFLAGS=
 
 # How to use zic to install TZif files.
@@ -491,7 +496,8 @@
 COMMON=                calendars CONTRIBUTING LICENSE Makefile \
                        NEWS README theory.html version
 WEB_PAGES=     tz-art.html tz-how-to.html tz-link.html
-CHECK_WEB_PAGES=check_tz-art.html check_tz-how-to.html check_tz-link.html
+CHECK_WEB_PAGES=check_theory.html check_tz-art.html \
+                       check_tz-how-to.html check_tz-link.html
 DOCS=          $(MANS) date.1 $(MANTXTS) $(WEB_PAGES)
 PRIMARY_YDATA= africa antarctica asia australasia \
                europe northamerica southamerica
@@ -804,9 +810,10 @@
                touch $@
 
 check_web:     $(CHECK_WEB_PAGES)
+check_theory.html: theory.html
 check_tz-art.html: tz-art.html
 check_tz-link.html: tz-link.html
-check_tz-art.html check_tz-link.html:
+check_theory.html check_tz-art.html check_tz-link.html:
                $(CURL) -sS --url https://validator.w3.org/nu/ -F out=gnu \
                    -F file=@$$(expr $@ : 'check_\(.*\)') -o $@.out && \
                  test ! -s $@.out || { cat $@.out; exit 1; }
@@ -840,11 +847,13 @@
                touch $@
 
 clean_misc:
+               rm -fr check_*.dir
                rm -f *.o *.out $(TIME_T_ALTERNATIVES) \
                  check_* core typecheck_* \
                  date tzselect version.h zdump zic yearistype libtz.a
 clean:         clean_misc
-               rm -fr *.dir *.zi tzdb-*/ $(TZS_NEW)
+               rm -fr *.dir tzdb-*/
+               rm -f *.zi $(TZS_NEW)
 
 maintainer-clean: clean
                @echo 'This command is intended for maintainers to use; it'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/NEWS new/NEWS
--- old/NEWS    2018-12-30 20:07:32.000000000 +0100
+++ new/NEWS    2019-03-26 06:04:24.000000000 +0100
@@ -1,5 +1,53 @@
 News for the tz database
 
+Release 20198 - 2019-03-25 22:01:33 -0700
+
+  Briefly:
+    Palestine "springs forward" on 2019-03-30 instead of 2019-03-23.
+    Metlakatla "fell back" to rejoin Alaska Time on 2019-01-20 at 02:00.
+
+  Changes to past and future timestamps
+
+    Palestine will not start DST until 2019-03-30, instead of 2019-03-23 as
+    previously predicted.  Adjust our prediction by guessing that spring
+    transitions will be between 24 and 30 March, which matches recent practice
+    since 2016.  (Thanks to Even Scharning and Tim Parenti.)
+
+    Metlakatla ended its observance of Pacific standard time,
+    rejoining Alaska Time, on 2019-01-20 at 02:00.  (Thanks to Ryan
+    Stanley and Tim Parenti.)
+
+  Changes to past timestamps
+
+    Israel observed DST in 1980 (08-02/09-13) and 1984 (05-05/08-25).
+    (Thanks to Alois Treindl and Isaac Starkman.)
+
+  Changes to time zone abbreviations
+
+    Etc/UCT is now a backward-compatibility link to Etc/UTC, instead
+    of being a separate zone that generates the abbreviation "UCT",
+    which nowadays is typically a typo.  (Problem reported by Isiah
+    Meadows.)
+
+  Changes to code
+
+    zic now has an -r option to limit the time range of output data.
+    For example, 'zic -r @1000000000' limits the output data to
+    timestamps starting 1000000000 seconds after the Epoch.
+    This helps shrink output size and can be useful for applications
+    not needing the full timestamp history, such as TZDIST truncation;
+    see Internet RFC 8536 section 5.1.  (Inspired by a feature request
+    from Christopher Wong, helped along by bug reports from Wong and
+    from Tim Parenti.)
+
+  Changes to documentation
+
+    Mention Internet RFC 8536 (February 2019), which documents TZif.
+
+    tz-link.html now cites tzdata-meta
+    <https://tzdata-meta.timtimeonline.com/>.
+
+
 Release 2018i - 2018-12-30 11:05:43 -0800
 
   Briefly:
@@ -400,8 +448,9 @@
       downstream parsers do not support it.
 
     * The build procedure constructs three files vanguard.zi, main.zi,
-      and rearguard.zi, one for each format.  The files represent the
-      same data as closely as the formats allow.  These three files
+      and rearguard.zi, one for each format.  Although the files
+      represent essentially the same data, they may have minor
+      discrepancies that users are not likely to notice.  The files
       are intended for downstream data consumers and are not
       installed.  Zoneinfo parsers that do not support negative SAVE values
       should start using rearguard.zi, so that they will be unaffected
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README new/README
--- old/README  2018-10-05 18:59:25.000000000 +0200
+++ new/README  2019-02-01 00:37:28.000000000 +0100
@@ -1,7 +1,7 @@
 README for the tz distribution
 
-"What time is it?" -- Richard Deacon as The King
-"Any time you want it to be." -- Frank Baxter as The Scientist
+"Where do I set the hands of the clock?" -- Les Tremayne as The King
+"Oh that--you can set them any place you want." -- Frank Baxter as The 
Scientist
                                        (from the Bell System film "About Time")
 
 The Time Zone Database (called tz, tzdb or zoneinfo) contains code and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/africa new/africa
--- old/africa  2018-12-30 07:37:49.000000000 +0100
+++ new/africa  2019-02-20 23:26:46.000000000 +0100
@@ -364,6 +364,11 @@
 # See Africa/Lagos.
 
 # Eritrea
+# See Africa/Nairobi.
+
+# Eswatini (formerly Swaziland)
+# See Africa/Johannesburg.
+
 # Ethiopia
 # See Africa/Nairobi.
 #
@@ -1188,7 +1193,7 @@
                        1:30    -       SAST    1903 Mar
                        2:00    SA      SAST
 Link Africa/Johannesburg Africa/Maseru    # Lesotho
-Link Africa/Johannesburg Africa/Mbabane    # Swaziland
+Link Africa/Johannesburg Africa/Mbabane    # Eswatini
 #
 # Marion and Prince Edward Is
 # scientific station since 1947
@@ -1230,9 +1235,6 @@
                        2:00    Sudan   CA%sT   2000 Jan 15 12:00
                        3:00    -       EAT
 
-# Swaziland
-# See Africa/Johannesburg.
-
 # Tanzania
 # See Africa/Nairobi.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asia new/asia
--- old/asia    2018-12-20 21:00:07.000000000 +0100
+++ new/asia    2019-03-24 04:25:24.000000000 +0100
@@ -1620,6 +1620,24 @@
 Rule   Zion    1974    only    -       Oct     13      0:00    0       S
 Rule   Zion    1975    only    -       Apr     20      0:00    1:00    D
 Rule   Zion    1975    only    -       Aug     31      0:00    0       S
+
+# From Alois Treindl (2019-03-06):
+# http://www.moin.gov.il/Documents/שעון קיץ/clock-50-years-7-2014.pdf
+# From Isaac Starkman (2019-03-06):
+# Summer time was in that period in 1980 and 1984, see
+# https://www.ynet.co.il/articles/0,7340,L-3951073,00.html
+# You can of course read it in translation.
+# I checked the local newspapers for that years.
+# It started on midnight and end at 01.00 am.
+# From Paul Eggert (2019-03-06):
+# Also see this thread about the moin.gov.il URL:
+# https://mm.icann.org/pipermail/tz/2018-November/027194.html
+Rule   Zion    1980    only    -       Aug      2      0:00    1:00    D
+Rule   Zion    1980    only    -       Sep     13      1:00    0       S
+Rule   Zion    1984    only    -       May      5      0:00    1:00    D
+Rule   Zion    1984    only    -       Aug     25      1:00    0       S
+
+# From Shanks & Pottenger:
 Rule   Zion    1985    only    -       Apr     14      0:00    1:00    D
 Rule   Zion    1985    only    -       Sep     15      0:00    0       S
 Rule   Zion    1986    only    -       May     18      0:00    1:00    D
@@ -3071,9 +3089,15 @@
 # the official website, though the decree did not specify the exact
 # time of the time shift.
 # 
http://www.palestinecabinet.gov.ps/Website/AR/NDecrees/ViewFile.ashx?ID=e7a42ab7-ee23-435a-b9c8-a4f7e81f3817
-#
-# From Paul Eggert (2018-03-16):
-# For 2016 on, predict spring transitions on March's fourth Saturday at 01:00.
+
+# From Even Scharning (2019-03-23):
+# DST in Palestine will start on 30 March this year, not 23 March as the time
+# zone database predicted.
+# https://ramallah.news/post/123610
+#
+# From Tim Parenti (2019-03-23):
+# Combining this with the rules observed since 2016, adjust our spring
+# transition guess to Mar Sat>=24.
 
 # Rule NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
 Rule EgyptAsia 1957    only    -       May     10      0:00    1:00    S
@@ -3104,7 +3128,7 @@
 Rule Palestine 2013    only    -       Sep     Fri>=21 0:00    0       -
 Rule Palestine 2014    2015    -       Oct     Fri>=21 0:00    0       -
 Rule Palestine 2015    only    -       Mar     lastFri 24:00   1:00    S
-Rule Palestine 2016    max     -       Mar     Sat>=22 1:00    1:00    S
+Rule Palestine 2016    max     -       Mar     Sat>=24 1:00    1:00    S
 Rule Palestine 2016    max     -       Oct     lastSat 1:00    0       -
 
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
@@ -3596,5 +3620,17 @@
                        8:00    -       +08     1975 Jun 13
                        7:00    -       +07
 
+# From Paul Eggert (2019-02-19):
+#
+# The Ho Chi Minh entry suffices for most purposes as it agrees with all of
+# Vietnam since 1975-06-13.  Presumably clocks often changed in south Vietnam
+# in the early 1970s as locations changed hands during the war; however the
+# details are unknown and would likely be too voluminous for this database.
+#
+# For timestamps in north Vietnam back to 1970 (the tzdb cutoff),
+# use Asia/Bangkok; see the VN entries in the file zone1970.tab.
+# For timestamps before 1970, see Asia/Hanoi in the file 'backzone'.
+
+
 # Yemen
 # See Asia/Riyadh.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/backward new/backward
--- old/backward        2018-07-16 19:16:52.000000000 +0200
+++ new/backward        2019-03-08 20:28:30.000000000 +0100
@@ -77,6 +77,7 @@
 Link   America/Havana          Cuba
 Link   Africa/Cairo            Egypt
 Link   Europe/Dublin           Eire
+Link   Etc/UTC                 Etc/UCT
 Link   Europe/London           Europe/Belfast
 Link   Europe/Chisinau         Europe/Tiraspol
 Link   Europe/London           GB
@@ -111,7 +112,7 @@
 Link   Asia/Seoul              ROK
 Link   Asia/Singapore          Singapore
 Link   Europe/Istanbul         Turkey
-Link   Etc/UCT                 UCT
+Link   Etc/UTC                 UCT
 Link   America/Anchorage       US/Alaska
 Link   America/Adak            US/Aleutian
 Link   America/Phoenix         US/Arizona
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/backzone new/backzone
--- old/backzone        2018-05-27 20:09:07.000000000 +0200
+++ new/backzone        2019-02-20 00:30:45.000000000 +0100
@@ -204,7 +204,7 @@
                        2:00    1:00    SAST    1944 Mar 19  2:00
                        2:00    -       SAST
 
-# Swaziland
+# Eswatini (formerly Swaziland)
 Zone   Africa/Mbabane  2:04:24 -       LMT     1903 Mar
                        2:00    -       SAST
 
@@ -625,7 +625,7 @@
                        1:00    -       CET     1982 Nov 27
                        1:00    EU      CE%sT
 
-# Macedonia
+# North Macedonia
 Zone   Europe/Skopje   1:25:44 -       LMT     1884
                        1:00    -       CET     1941 Apr 18 23:00
                        1:00    C-Eur   CE%sT   1945 May  8  2:00s
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/etcetera new/etcetera
--- old/etcetera        2018-07-16 19:16:52.000000000 +0200
+++ new/etcetera        2019-03-08 20:28:30.000000000 +0100
@@ -19,7 +19,6 @@
 
 Zone   Etc/GMT         0       -       GMT
 Zone   Etc/UTC         0       -       UTC
-Zone   Etc/UCT         0       -       UCT
 
 # The following link uses older naming conventions,
 # but it belongs here, not in the file 'backward',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/europe new/europe
--- old/europe  2018-10-26 19:16:47.000000000 +0200
+++ new/europe  2019-01-25 17:44:21.000000000 +0100
@@ -1855,7 +1855,7 @@
                        1:00    Belgium CE%sT   1977
                        1:00    EU      CE%sT
 
-# Macedonia
+# North Macedonia
 # See Europe/Belgrade.
 
 # Malta
@@ -3359,7 +3359,7 @@
 Link Europe/Belgrade Europe/Ljubljana  # Slovenia
 Link Europe/Belgrade Europe/Podgorica  # Montenegro
 Link Europe/Belgrade Europe/Sarajevo   # Bosnia and Herzegovina
-Link Europe/Belgrade Europe/Skopje     # Macedonia
+Link Europe/Belgrade Europe/Skopje     # North Macedonia
 Link Europe/Belgrade Europe/Zagreb     # Croatia
 
 # Slovakia
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/iso3166.tab new/iso3166.tab
--- old/iso3166.tab     2017-02-28 17:08:12.000000000 +0100
+++ new/iso3166.tab     2019-02-20 00:30:45.000000000 +0100
@@ -9,8 +9,8 @@
 # All text uses UTF-8 encoding.  The columns of the table are as follows:
 #
 # 1.  ISO 3166-1 alpha-2 country code, current as of
-#     ISO 3166-1 N905 (2016-11-15).  See: Updates on ISO 3166-1
-#     http://isotc.iso.org/livelink/livelink/Open/16944257
+#     ISO 3166-1 N976 (2018-11-06).  See: Updates on ISO 3166-1
+#     https://isotc.iso.org/livelink/livelink/Open/16944257
 # 2.  The usual English name for the coded region,
 #     chosen so that alphabetic sorting of subsets produces helpful lists.
 #     This is not the same as the English name in the ISO 3166 tables.
@@ -166,7 +166,7 @@
 MF     St Martin (French)
 MG     Madagascar
 MH     Marshall Islands
-MK     Macedonia
+MK     North Macedonia
 ML     Mali
 MM     Myanmar (Burma)
 MN     Mongolia
@@ -235,7 +235,7 @@
 SV     El Salvador
 SX     St Maarten (Dutch)
 SY     Syria
-SZ     Swaziland
+SZ     Eswatini (Swaziland)
 TC     Turks & Caicos Is
 TD     Chad
 TF     French Southern & Antarctic Lands
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/leap-seconds.list new/leap-seconds.list
--- old/leap-seconds.list       2018-09-29 11:47:21.000000000 +0200
+++ new/leap-seconds.list       2019-01-31 19:33:25.000000000 +0100
@@ -204,10 +204,10 @@
 #      current -- the update time stamp, the data and the name of the file
 #      will not change.
 #
-#      Updated through IERS Bulletin C56
-#      File expires on:  28 June 2019
+#      Updated through IERS Bulletin C57
+#      File expires on:  28 December 2019
 #
-#@     3770668800
+#@     3786480000
 #
 2272060800     10      # 1 Jan 1972
 2287785600     11      # 1 Jul 1972
@@ -252,4 +252,4 @@
 #      the hash line is also ignored in the
 #      computation.
 #
-#h     62ca19f6 96a4ae0a 3708451c 9f8693f4 016604eb
+#h     83c68138 d3650221 07dbbbcd 11fcc859 ced1106a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/leapseconds new/leapseconds
--- old/leapseconds     2018-11-10 06:27:40.000000000 +0100
+++ new/leapseconds     2019-01-31 19:33:25.000000000 +0100
@@ -63,7 +63,7 @@
 
 # POSIX timestamps for the data in this file:
 #updated 1467936000
-#expires 1561680000
+#expires 1577491200
 
-#      Updated through IERS Bulletin C56
-#      File expires on:  28 June 2019
+#      Updated through IERS Bulletin C57
+#      File expires on:  28 December 2019
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/northamerica new/northamerica
--- old/northamerica    2018-12-17 02:28:50.000000000 +0100
+++ new/northamerica    2019-01-11 23:01:55.000000000 +0100
@@ -609,6 +609,15 @@
 # In a 2018-12-11 special election, Metlakatla voted to go back to
 # Alaska time (including daylight saving time) starting next year.
 # 
https://www.krbd.org/2018/12/12/metlakatla-to-follow-alaska-standard-time-allow-liquor-sales/
+#
+# From Ryan Stanley (2019-01-11):
+# The community will be changing back on the 20th of this month...
+# From Tim Parenti (2019-01-11):
+# Per an announcement on the Metlakatla community's official Facebook page, the
+# "fall back" will be on Sunday 2019-01-20 at 02:00:
+# https://www.facebook.com/141055983004923/photos/607150969728753/
+# So they won't be waiting for Alaska to join them on 2019-03-10, but will
+# rather change their clocks twice in seven weeks.
 
 # Zone NAME            GMTOFF  RULES   FORMAT  [UNTIL]
 Zone America/Juneau     15:02:19 -     LMT     1867 Oct 19 15:33:32
@@ -637,7 +646,7 @@
                         -8:00  US      P%sT    1983 Oct 30  2:00
                         -8:00  -       PST     2015 Nov  1  2:00
                         -9:00  US      AK%sT   2018 Nov  4  2:00
-                        -8:00  -       PST     2019 Mar Sun>=8 3:00
+                        -8:00  -       PST     2019 Jan 20  2:00
                         -9:00  US      AK%sT
 Zone America/Yakutat    14:41:05 -     LMT     1867 Oct 19 15:12:18
                         -9:18:55 -     LMT     1900 Aug 20 12:00
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/theory.html new/theory.html
--- old/theory.html     2018-12-20 20:04:30.000000000 +0100
+++ new/theory.html     2019-02-21 00:17:59.000000000 +0100
@@ -15,7 +15,7 @@
     <ul>
       <li><a href="#scope">Scope of the <code><abbr>tz</abbr></code>
          database</a></li>
-      <li><a href="#naming">Names of timezones</a></li>
+      <li><a href="#naming">Timezone identifiers</a></li>
       <li><a href="#abbreviations">Time zone abbreviations</a></li>
       <li><a href="#accuracy">Accuracy of the <code><abbr>tz</abbr></code>
          database</a></li>
@@ -107,9 +107,9 @@
 </section>
 
 <section>
-  <h2 id="naming">Names of timezones</h2>
+  <h2 id="naming">Timezone identifiers</h2>
 <p>
-Each timezone has a unique name.
+Each timezone has a name that uniquely identifies the timezone.
 Inexperienced users are not expected to select these names unaided.
 Distributors should provide documentation and/or a simple selection
 interface that explains each name via a map or via descriptive text like
@@ -142,10 +142,12 @@
   </li>
   <li>
     Be robust in the presence of political changes.
-    For example, names of countries are ordinarily not used, to avoid
+    For example, names are typically not tied to countries, to avoid
     incompatibilities when countries change their name (e.g.,
-    Zaire&rarr;Congo) or when locations change countries (e.g., Hong
+    Swaziland&rarr;Eswatini) or when locations change countries (e.g., Hong
     Kong from UK colony to China).
+    There is no requirement that every country or national
+    capital must have a timezone name.
   </li>
   <li>
     Be portable to a wide variety of implementations.
@@ -215,19 +217,18 @@
     do not need locations, since local time is not defined there.
   </li>
   <li>
-    There should typically be at least one name for each <a
-    href="https://en.wikipedia.org/wiki/ISO_3166-1";><abbr
-    title="International Organization for Standardization">ISO</abbr>
-    3166-1</a> officially assigned two-letter code for an inhabited
-    country or territory.
-  </li>
-  <li>
     If all the clocks in a timezone have agreed since 1970,
     do not bother to include more than one timezone
     even if some of the clocks disagreed before 1970.
     Otherwise these tables would become annoyingly large.
   </li>
   <li>
+    If boundaries between regions are fluid, such as during a war or
+    insurrection, do not bother to create a new timezone merely
+    because of yet another boundary change. This helps prevent table
+    bloat and simplifies maintenance.
+  </li>
+  <li>
     If a name is ambiguous, use a less ambiguous alternative;
     e.g., many cities are named San José and Georgetown, so
     prefer <code>America/Costa_Rica</code> to
@@ -299,29 +300,23 @@
 </ul>
 
 <p>
-The file '<code>zone1970.tab</code>' lists geographical locations used
-to name timezones.
-It is intended to be an exhaustive list of names for geographic
-regions as described above; this is a subset of the timezones in the data.
-Although a '<code>zone1970.tab</code>' location's
-<a href="https://en.wikipedia.org/wiki/Longitude";>longitude</a>
-corresponds to
-its <a href="https://en.wikipedia.org/wiki/Local_mean_time";>local mean
-time (<abbr>LMT</abbr>)</a> offset with one hour for every 15&deg;
-east longitude, this relationship is not exact.
+Guidelines have evolved with time, and names following old versions of
+this guideline might not follow the current version. When guidelines
+have changed, old names continue to be supported. Guideline changes
+have included the following:
 </p>
 
-<p>
-Older versions of this package used a different naming scheme,
-and these older names are still supported.
+<ul>
+<li>
+Older versions of this package used a different naming scheme.
 See the file '<code>backward</code>' for most of these older names
 (e.g., '<code>US/Eastern</code>' instead of '<code>America/New_York</code>').
 The other old-fashioned names still supported are
 '<code>WET</code>', '<code>CET</code>', '<code>MET</code>', and
 '<code>EET</code>' (see the file '<code>europe</code>').
-</p>
+</li>
 
-<p>
+<li>
 Older versions of this package defined legacy names that are
 incompatible with the first guideline of location names, but which are
 still supported.
@@ -332,6 +327,31 @@
 and the file '<code>northamerica</code>' defines the legacy names
 '<code>EST5EDT</code>', '<code>CST6CDT</code>',
 '<code>MST7MDT</code>', and '<code>PST8PDT</code>'.
+</li>
+
+<li>
+Older versions of this guideline said that
+there should typically be at least one name for each <a
+href="https://en.wikipedia.org/wiki/ISO_3166-1";><abbr
+title="International Organization for Standardization">ISO</abbr>
+3166-1</a> officially assigned two-letter code for an inhabited
+country or territory.
+This old guideline has been dropped, as it was not needed to handle
+timestamps correctly and it increased maintenance burden.
+</li>
+</ul>
+
+<p>
+The file '<code>zone1970.tab</code>' lists geographical locations used
+to name timezones.
+It is intended to be an exhaustive list of names for geographic
+regions as described above; this is a subset of the timezones in the data.
+Although a '<code>zone1970.tab</code>' location's
+<a href="https://en.wikipedia.org/wiki/Longitude";>longitude</a>
+corresponds to
+its <a href="https://en.wikipedia.org/wiki/Local_mean_time";>local mean
+time (<abbr>LMT</abbr>)</a> offset with one hour for every 15&deg;
+east longitude, this relationship is not exact.
 </p>
 
 <p>
@@ -983,7 +1003,9 @@
     constrained to be a string containing abbreviations
     and numeric data as described <a href="#POSIX">above</a>.
     The file's format is <dfn><abbr>TZif</abbr></dfn>,
-    a timezone information format that contains binary data.
+    a timezone information format that contains binary data; see
+    <a href="https://tools.ietf.org/html/8536";>Internet
+    <abbr>RFC</abbr> 8536</a>.
     The daylight saving time rules to be used for a
     particular timezone are encoded in the
     <abbr>TZif</abbr> file; the format of the file allows <abbr>US</abbr>,
@@ -1166,7 +1188,7 @@
 <ul>
   <li>
     A set of timezone names as per
-      "<a href="#naming">Names of timezones</a>" above.
+      "<a href="#naming">Timezone identifiers</a>" above.
   </li>
   <li>
     Library functions described in "<a href="#functions">Time and date
@@ -1213,6 +1235,17 @@
 offsets or abbreviations for timestamps, as data entries are often
 based on guesswork and these guesses may be corrected or improved.
 </p>
+
+<p>
+Timezone boundaries are not part of the stable interface.
+For example, even though the <samp>Asia/Bangkok</samp> timezone
+currently includes Chang Mai, Hanoi, and Phnom Penh, this is not part
+of the stable interface and the timezone can split at any time.
+If a calendar application records a future event in some location other
+than Bangkok by putting "<samp>Asia/Bangkok</samp>" in the event's record,
+the application should be robust in the presence of timezone splits
+between now and the future time.
+</p>
 </section>
 
 <section>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/version new/version
--- old/version 2018-12-30 20:07:32.000000000 +0100
+++ new/version 2019-03-26 06:04:24.000000000 +0100
@@ -1 +1 @@
-2018i
+2019a


Reply via email to