EST5EDT etc. no longer have UT offsets or abbreviations
disagreeing with POSIX.
* Makefile (now.ck): Don’t check System V zones in ‘backward’.
* NEWS: Mention the change.
* backward (CST6CDT, EST5EDT, MST7MDT, PST8PDT): Now Zones not Links.
(USback): New Rule.
* backzone (PST8PDT, MST7MDT, CST6CDT, EST5EDT): Remove, as they
no longer differ from ‘backward’ except in ways that do not
conform to POSIX.
* theory.html: Adjust description of ‘backward’ accordingly.
---
 Makefile    | 11 ++++++++---
 NEWS        |  8 ++++++++
 backward    | 54 ++++++++++++++++++++++++++++++++++++++++++++++++-----
 backzone    |  4 ----
 theory.html |  9 ++++-----
 5 files changed, 69 insertions(+), 17 deletions(-)

diff --git a/Makefile b/Makefile
index 39a6798a..5d463b74 100644
--- a/Makefile
+++ b/Makefile
@@ -172,9 +172,9 @@ EXPIRES_LINE=       0
 
 TZDATA_TEXT=   leapseconds tzdata.zi
 
-# For backward-compatibility links for old zone names, use
+# For backward-compatibility links and zones for old names, use
 #      BACKWARD=       backward
-# To omit these links, use
+# To omit these links and zones, use
 #      BACKWARD=
 
 BACKWARD=      backward
@@ -1018,7 +1018,12 @@ now.ck: checknow.awk date tzdata.zi zdump zic 
zone1970.tab zonenow.tab
                  -v zdump_table=$@d/zdump-now.tab \
                  -f checknow.awk zonenow.tab
                $(AWK) \
-                 'BEGIN {print "-\t-\tUTC"} /^Zone/ {print "-\t-\t" $$2}' \
+                 'BEGIN { \
+                    SysVzone["EST5EDT"] = 1; SysVzone["CST6CDT"] = 1; \
+                    SysVzone["MST7MDT"] = 1; SysVzone["PST8PDT"] = 1; \
+                    print "-\t-\tUTC" \
+                  } \
+                  $$1 == "Zone" && !SysVzone[$$2] {print "-\t-\t" $$2}' \
                  $(PRIMARY_YDATA) backward factory | \
                 $(AWK) \
                   -v zdump_table=$@d/zdump-1970.tab \
diff --git a/NEWS b/NEWS
index f61c76be..3c2fbb76 100644
--- a/NEWS
+++ b/NEWS
@@ -22,6 +22,14 @@ Unreleased, experimental changes
 
     Colombia’s 1992-05-02 spring forward was at 00:00, not 24:00.
 
+    The backward-compatibility names EST5EDT, CST6CDT, MST7MDT, and
+    PST8PDT now conform better to POSIX.  For example, EST5EDT now
+    always uses the abbreviation "EST" for standard time (now always 5
+    hours behind UT) and "EDT" for daylight saving time, whereas it
+    formerly had different UT offsets before standard time was
+    introduced and sometimes used abbreviations like "LMT", "EWT" and
+    "EPT", all contrary to POSIX.
+
   Changes to code
 
     zic now rejects Link targets that would have invalid names.
diff --git a/backward b/backward
index 0236751d..2971d038 100644
--- a/backward
+++ b/backward
@@ -15,7 +15,8 @@
 # typically use this file for backward compatibility.
 
 # This file is divided into sections, one for each major reason for a
-# backward compatibility link.  Each section is sorted by link name.
+# backward compatibility link or zone.  Each section of links is
+# sorted by name.
 
 # A "#= TARGET1" comment labels each link inserted only because some
 # .zi parsers (including tzcode through 2022e) mishandle links to links.
@@ -46,7 +47,6 @@ Link  America/Noronha         Brazil/DeNoronha
 Link   America/Sao_Paulo       Brazil/East
 Link   America/Manaus          Brazil/West
 Link   Europe/Brussels         CET
-Link   America/Chicago         CST6CDT
 Link   America/Halifax         Canada/Atlantic
 Link   America/Winnipeg        Canada/Central
 # This line is commented out, as the name exceeded the 14-character limit
@@ -63,7 +63,6 @@ Link  Pacific/Easter          Chile/EasterIsland
 Link   America/Havana          Cuba
 Link   Europe/Athens           EET
 Link   America/Panama          EST
-Link   America/New_York        EST5EDT
 Link   Africa/Cairo            Egypt
 Link   Europe/Dublin           Eire
 # Vanguard section, for most .zi parsers.
@@ -104,7 +103,6 @@ Link        Pacific/Kwajalein       Kwajalein
 Link   Africa/Tripoli          Libya
 Link   Europe/Brussels         MET
 Link   America/Phoenix         MST
-Link   America/Denver          MST7MDT
 Link   America/Tijuana         Mexico/BajaNorte
 Link   America/Mazatlan        Mexico/BajaSur
 Link   America/Mexico_City     Mexico/General
@@ -326,6 +324,52 @@ Link       Europe/Kyiv             Europe/Kiev
 # However, for various reasons many users expect to find it under Europe.
 Link   Asia/Nicosia            Europe/Nicosia
 Link   Pacific/Honolulu        HST
-Link   America/Los_Angeles     PST8PDT
 Link   Pacific/Guadalcanal     Pacific/Ponape  #= Pacific/Pohnpei
 Link   Pacific/Port_Moresby    Pacific/Truk    #= Pacific/Chuuk
+
+
+# The backward-compatibility zones PST8PDT, MST7MDT, CST6CDT, and EST5EDT
+
+# Near-copy of US rules in the northamerica file,
+# so that this file can be compiled separately.
+# To conform to POSIX, this copy uses D instead of W for War and P for Peace.
+# Rule NAME    FROM    TO      -       IN      ON      AT      SAVE    LETTER/S
+Rule   USback  1918    1919    -       Mar     lastSun 2:00    1:00    D
+Rule   USback  1918    1919    -       Oct     lastSun 2:00    0       S
+Rule   USback  1942    only    -       Feb     9       2:00    1:00    D # War
+Rule   USback  1945    only    -       Aug     14      23:00u  1:00    D # 
Peace
+Rule   USback  1945    only    -       Sep     30      2:00    0       S
+Rule   USback  1967    2006    -       Oct     lastSun 2:00    0       S
+Rule   USback  1967    1973    -       Apr     lastSun 2:00    1:00    D
+Rule   USback  1974    only    -       Jan     6       2:00    1:00    D
+Rule   USback  1975    only    -       Feb     lastSun 2:00    1:00    D
+Rule   USback  1976    1986    -       Apr     lastSun 2:00    1:00    D
+Rule   USback  1987    2006    -       Apr     Sun>=1  2:00    1:00    D
+Rule   USback  2007    max     -       Mar     Sun>=8  2:00    1:00    D
+Rule   USback  2007    max     -       Nov     Sun>=1  2:00    0       S
+
+# From Arthur David Olson (2005-12-19):
+# We generate the files specified below to guard against old files with
+# obsolete information being left in the time zone binary directory.
+# We limit the list to names that have appeared in previous versions of
+# this time zone package.
+# We do these as separate Zones rather than as Links to avoid problems if
+# a particular place changes whether it observes DST.
+#
+# From Paul Eggert (2026-07-24):
+# These zones are for backward compatibility with Unix System V (1983).
+# They are ahistorical, in that they pretend standard time extends
+# backward indefinitely into the past.
+# They use USback (not US) rules so that they conform to POSIX instead
+# of using abbreviations like EWT for Eastern War Time during World War II.
+# The zones are here, not in the northamerica file, to lessen
+# confusion downstream by making it clear that the zones are present
+# only for backward compatibility.
+# New software should use settings like TZ='America/New_York' instead
+# of these backwards-compatibility zones.
+#
+# Zone NAME            STDOFF  RULES   FORMAT  [UNTIL]
+Zone   PST8PDT          -8:00  USback  P%sT
+Zone   MST7MDT          -7:00  USback  M%sT
+Zone   CST6CDT          -6:00  USback  C%sT
+Zone   EST5EDT          -5:00  USback  E%sT
diff --git a/backzone b/backzone
index b7fd57bf..e3ec2032 100644
--- a/backzone
+++ b/backzone
@@ -1836,12 +1836,8 @@ Zone     Pacific/Wallis  12:15:20 -      LMT     1901
 
 # Zone NAME            STDOFF  RULES   FORMAT  [UNTIL]
 Zone   HST             -10:00  -       HST
-Zone   PST8PDT          -8:00  US      P%sT
 Zone   MST              -7:00  -       MST
-Zone   MST7MDT          -7:00  US      M%sT
-Zone   CST6CDT          -6:00  US      C%sT
 Zone   EST              -5:00  -       EST
-Zone   EST5EDT          -5:00  US      E%sT
 Zone   WET               0:00  EU      WE%sT
 Zone   CET               1:00  C-Eur   CE%sT
 Zone   MET               1:00  C-Eur   ME%sT
diff --git a/theory.html b/theory.html
index 8f76aaf0..bbc9d693 100644
--- a/theory.html
+++ b/theory.html
@@ -345,8 +345,7 @@ These legacy names are mostly defined in the file
 "<code>etcetera</code>".
 Also, the file "<code>backward</code>" defines the legacy names
 <code>Etc/GMT0</code>, <code>Etc/GMT-0</code>, <code>Etc/GMT+0</code>,
-<code>GMT0</code>, <code>GMT-0</code> and <code>GMT+0</code>,
-and the file "<code>northamerica</code>" defines the legacy names
+<code>GMT0</code>, <code>GMT-0</code>, <code>GMT+0</code>,
 <code>EST5EDT</code>, <code>CST6CDT</code>,
 <code>MST7MDT</code>, and <code>PST8PDT</code>.
 </li>
@@ -387,11 +386,11 @@ and <code>zone.tab</code>.
 
 <p>
 The database defines each timezone name to be a zone, or a link to a zone.
-The source file <code>backward</code> defines links for backward
-compatibility; it does not define zones.
+The source file <code>backward</code> defines links
+and a few zones for backward compatibility.
 Although <code>backward</code> was originally designed to be optional,
 nowadays distributions typically use it
-and no great weight should be attached to whether a link
+and no great weight should be attached to whether a link or zone
 is defined in <code>backward</code> or in some other file.
 The source file <code>etcetera</code> defines names that may be useful
 on platforms that do not support proleptic <code>TZ</code> strings
-- 
2.53.0

Reply via email to