Petr Machata wrote:
I don't think you can assume stability either.
That's correct; the tz database evolves, we hope for the better. I've compiled some "attic" data (appended to this email) which makes it clear that we have regularly replaced zones by links during tz maintenance. This practice hasn't caused hardships for users. I plan to propose this attic data, or something like it, more formally as a diff, and this should address the concerns expressed on this list about removing old data. I'm still thinking about good ways to use the attic data. Using it all wouldn't simply revert to version 2013d; instead, it would resurrect old data from a few or even many years ago in the tz database. Although this would be an enhancement to the backward-compatibility facility that we already have in the "backward" file, it'd be unwise to dump all this data into zic willy-nilly, as its reliability is dubious (one of the entries has "????" in the data!) and we've gotten along without the older zone data for many years without problems. So we need a mechanism for conditionally including this data. I like Zefram's suggestion for allowing a multitier structure for the tz database. One way to do that would be to add a cutoff year to the Makefile. It'd default to 1970. People who are interested in older timestamps could decrease the cutoff to (say) 1900; this would cause links to be turned into zones they differ from the existing zones after 1900. Conversely, people who are not interested in (say) pre-2000 timestamps could increase the cutoff to 2000, which would result in smaller database that turns a zone into a link if it's equivalent to another zone after 2000. Another way to filter the data might be by tz version when the zone was turned into a link in the tz database. The attic data below has a Version line to help with this sort of filtering. Both filters could be implemented, and they could be applied in series. # Attic data # This file contains zones that were formerly in the tz database, # but were later removed or replaced by links to other locations. # Entries are sorted by Zone name. Each entry is preceded by the name # of the country that the entry is in, to help identify the location, # along with any other commentary associated with the entry. # Data are also preceded by a Version line, which lists the last version # of the tz database in which the corresponding entry appeared as a zone. # This is intended for use in automated processing that selectively # retrieves data from the attic for backward-compatibility reasons. # Zone NAME GMTOFF RULES FORMAT [UNTIL] # Mali # no longer different from Bamako, but too famous to omit Version 2005k Zone Africa/Timbuktu -0:12:04 - LMT 1912 0:00 - GMT # Anguilla Version 2013d Zone America/Anguilla -4:12:16 - LMT 1912 Mar 2 -4:00 - AST # Antigua and Barbuda Version 2013d Zone America/Antigua -4:07:12 - LMT 1912 Mar 2 -5:00 - EST 1951 -4:00 - AST # Argentina # Chubut (CH) # The name "Comodoro Rivadavia" exceeds the 14-byte POSIX limit. Version 2005k Zone America/Argentina/ComodRivadavia -4:30:00 - LMT 1894 Oct 31 -4:16:48 - CMT 1920 May -4:00 - ART 1930 Dec -4:00 Arg AR%sT 1969 Oct 5 -3:00 Arg AR%sT 1991 Mar 3 -4:00 - WART 1991 Oct 20 -3:00 Arg AR%sT 1999 Oct 3 -4:00 Arg AR%sT 2000 Mar 3 -3:00 - ART 2004 Jun 1 -4:00 - WART 2004 Jun 20 -3:00 - ART # Aruba Version 2013d Zone America/Aruba -4:40:24 - LMT 1912 Feb 12 # Oranjestad -4:30 - ANT 1965 # Netherlands Antilles Time -4:00 - AST # Canada Version 2013d Zone America/Atikokan -6:06:28 - LMT 1895 -6:00 Canada C%sT 1940 Sep 29 -6:00 1:00 CDT 1942 Feb 9 2:00s -6:00 Canada C%sT 1945 Sep 30 2:00 -5:00 - EST Version 2013d Zone America/Blanc-Sablon -3:48:28 - LMT 1884 -4:00 Canada A%sT 1970 -4:00 - AST # Cayman Is Version 2013d Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown -5:07:12 - KMT 1912 Feb # Kingston Mean Time -5:00 - EST # Canada Version 2006g Zone America/Coral_Harbour -5:32:40 - LMT 1884 -5:00 NT_YK E%sT 1946 -5:00 - EST # Curacao Version 2013d Zone America/Curacao -4:35:47 - LMT 1912 Feb 12 # Willemstad -4:30 - ANT 1965 # Netherlands Antilles Time -4:00 - AST # Dominica Version 2013d Zone America/Dominica -4:05:36 - LMT 1911 Jul 1 0:01 # Roseau -4:00 - AST # Mexico Version 1999h Zone America/Ensenada -7:46:28 - LMT 1922 Jan 1 0:13:32 -8:00 - PST 1927 Jun 10 23:00 -7:00 - MST 1930 Nov 16 -8:00 - PST 1942 Apr -7:00 - MST 1949 Jan 14 -8:00 - PST 1996 -8:00 Mexico P%sT # US Version 1999l Zone America/Fort_Wayne -5:00 US E%sT 1946 -5:00 - EST # Always EST as of 1986 # Grenada Version 2013d Zone America/Grenada -4:07:00 - LMT 1911 Jul # St George's -4:00 - AST # Guadeloupe Version 2013d Zone America/Guadeloupe -4:06:08 - LMT 1911 Jun 8 # Pointe a Pitre -4:00 - AST # Canada Version 2013d # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Mont 1917 only - Mar 25 2:00 1:00 D Rule Mont 1917 only - Apr 24 0:00 0 S Rule Mont 1919 only - Mar 31 2:30 1:00 D Rule Mont 1919 only - Oct 25 2:30 0 S Rule Mont 1920 only - May 2 2:30 1:00 D Rule Mont 1920 1922 - Oct Sun>=1 2:30 0 S Rule Mont 1921 only - May 1 2:00 1:00 D Rule Mont 1922 only - Apr 30 2:00 1:00 D Rule Mont 1924 only - May 17 2:00 1:00 D Rule Mont 1924 1926 - Sep lastSun 2:30 0 S Rule Mont 1925 1926 - May Sun>=1 2:00 1:00 D # The 1927-to-1937 rules can be expressed more simply as # Rule Mont 1927 1937 - Apr lastSat 24:00 1:00 D # Rule Mont 1927 1937 - Sep lastSat 24:00 0 S # The rules below avoid use of 24:00 # (which pre-1998 versions of zic cannot handle). Rule Mont 1927 only - May 1 0:00 1:00 D Rule Mont 1927 1932 - Sep lastSun 0:00 0 S Rule Mont 1928 1931 - Apr lastSun 0:00 1:00 D Rule Mont 1932 only - May 1 0:00 1:00 D Rule Mont 1933 1940 - Apr lastSun 0:00 1:00 D Rule Mont 1933 only - Oct 1 0:00 0 S Rule Mont 1934 1939 - Sep lastSun 0:00 0 S Rule Mont 1946 1973 - Apr lastSun 2:00 1:00 D Rule Mont 1945 1948 - Sep lastSun 2:00 0 S Rule Mont 1949 1950 - Oct lastSun 2:00 0 S Rule Mont 1951 1956 - Sep lastSun 2:00 0 S Rule Mont 1957 1973 - Oct lastSun 2:00 0 S # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Montreal -4:54:16 - LMT 1884 -5:00 Mont E%sT 1918 -5:00 Canada E%sT 1919 -5:00 Mont E%sT 1942 Feb 9 2:00s -5:00 Canada E%sT 1946 -5:00 Mont E%sT 1974 -5:00 Canada E%sT # Montserrat Version 2013d Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Cork Hill -4:00 - AST # Bahamas Version 2013d # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Bahamas 1964 1975 - Oct lastSun 2:00 0 S Rule Bahamas 1964 1975 - Apr lastSun 2:00 1:00 D # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone America/Nassau -5:09:30 - LMT 1912 Mar 2 -5:00 Bahamas E%sT 1976 -5:00 US E%sT # Trinidad and Tobago Version 2013d Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2 -4:00 - AST # Brazil # Rio_Branco is too ambiguous, since there's a Rio Branco in Uruguay too. Version 2000h Zone America/Porto_Acre -4:31:12 - LMT 1914 -5:00 Brazil AC%sT 1988 Sep 12 -5:00 - ACT # Argentina # Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN), Chaco (CC), # Formosa (FM), La Pampa (LP), Chubut (CH) Version 2002b Zone America/Rosario -4:02:40 - LMT 1894 Nov -4:16:44 - CMT 1920 May -4:00 - ART 1930 Dec -4:00 Arg AR%sT 1969 Oct 5 -3:00 Arg AR%sT 1991 Jul -3:00 - ART 1999 Oct 3 0:00 -4:00 Arg AR%sT 2000 Mar 3 0:00 -3:00 - ART # St Kitts-Nevis Version 2013d Zone America/St_Kitts -4:10:52 - LMT 1912 Mar 2 # Basseterre -4:00 - AST # St Lucia Version 2013d Zone America/St_Lucia -4:04:00 - LMT 1890 # Castries -4:04:00 - CMT 1912 # Castries Mean Time -4:00 - AST # Virgin Is Version 2013d Zone America/St_Thomas -4:19:44 - LMT 1911 Jul # Charlotte Amalie -4:00 - AST # St Vincent and the Grenadines Version 2013d Zone America/St_Vincent -4:04:56 - LMT 1890 # Kingstown -4:04:56 - KMT 1912 # Kingstown Mean Time -4:00 - AST # British Virgin Is Version 2013d Zone America/Tortola -4:18:28 - LMT 1911 Jul # Road Town -4:00 - AST # McMurdo, Ross Island, since 1955-12 Version 2013d Zone Antarctica/McMurdo 0 - zzz 1956 12:00 NZAQ NZ%sT # Japan Version 1999a Zone Asia/Ishigaki 8:16:36 - LMT 1896 8:00 - CST # Israel Version 1996a Zone Asia/Tel_Aviv 2:19:04 - LMT 1880 2:21 - JMT 1918 2:00 Zion I%sT # Russia Version 1996g Zone Asia/Tomsk 5:39:52 - LMT 1924 May 2 6:00 - TSK 1957 Mar 7:00 Russia TS%s 1991 Mar 31 2:00s 6:00 1:00 TSD 1991 Sep 29 2:00s 6:00 - TSK 1992 Jan 19 2:00s 7:00 Russia TS%s # Svalbard & Jan Mayen Version 2001b Zone Atlantic/Jan_Mayen -1:00 - EGT # Australia Version 1995l Zone Australia/Canberra 9:56:32 - LMT 1895 Feb 10:00 - EST 1917 Jan 1 0:01 10:00 Aus EST 1971 Oct 31 2:00 10:00 AN EST 1981 Oct 25 2:00 10:00 1:00 EST 1982 Apr 4 3:00 10:00 AN EST # UK Version 2005k Zone Europe/Belfast -0:23:40 - LMT 1880 Aug 2 -0:25:21 - DMT 1916 May 21 2:00 # Dublin/Dunsink MT -0:25:21 1:00 IST 1916 Oct 1 2:00s # Irish Summer Time 0:00 GB-Eire %s 1968 Oct 27 1:00 - BST 1971 Oct 31 2:00u 0:00 GB-Eire %s 1996 0:00 EU GMT/BST # Slovenia Version 1997j Zone Europe/Ljubljana 0:58:04 - LMT 1884 1:00 - CET 1941 Apr 18 23:00 1:00 C-Eur CE%sT 1945 May 8 2:00s 1:00 1:00 CEST 1945 Sep 16 2:00s 1:00 - CET 1982 Nov 27 1:00 EU CE%sT # Bosnia and Herzegovina Version 1997j Zone Europe/Sarajevo 1:13:40 - LMT 1884 1:00 - CET 1941 Apr 18 23:00 1:00 C-Eur CE%sT 1945 May 8 2:00s 1:00 1:00 CEST 1945 Sep 16 2:00s 1:00 - CET 1982 Nov 27 1:00 EU CE%sT # Macedonia Version 1997j 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 1:00 1:00 CEST 1945 Sep 16 2:00s 1:00 - CET 1982 Nov 27 1:00 EU CE%sT # Moldova Version 2000h Zone Europe/Tiraspol 1:58:32 - LMT 1880 1:55 - CMT 1918 Feb 15 # Chisinau MT 1:44:24 - BMT 1931 Jul 24 # Bucharest MT 2:00 Romania EE%sT 1940 Aug 15 2:00 1:00 EEST 1941 Jul 17 1:00 C-Eur CE%sT 1944 Aug 24 3:00 Russia MSK/MSD 1991 Mar 31 2:00 2:00 Russia EE%sT 1992 Jan 19 2:00 3:00 Russia MSK/MSD # Croatia # Zone NAME GMTOFF RULES FORMAT [UNTIL] Version 1997j Zone Europe/Zagreb 1:03:52 - LMT 1884 1:00 - CET 1941 Apr 18 23:00 1:00 C-Eur CE%sT 1945 May 8 2:00s 1:00 1:00 CEST 1945 Sep 16 2:00s 1:00 - CET 1982 Nov 27 1:00 EU CE%sT # Micronesia Version 2005k Zone Pacific/Yap 9:12:32 - LMT 1901 # Colonia 9:00 - YAPT 1969 Oct # Yap Time 10:00 - YAPT # System V Version 2000h Zone SystemV/AST4ADT -4:00 SystemV A%sT Zone SystemV/EST5EDT -5:00 SystemV E%sT Zone SystemV/CST6CDT -6:00 SystemV C%sT Zone SystemV/MST7MDT -7:00 SystemV M%sT Zone SystemV/PST8PDT -8:00 SystemV P%sT Zone SystemV/YST9YDT -9:00 SystemV Y%sT Zone SystemV/AST4 -4:00 - AST Zone SystemV/EST5 -5:00 - EST Zone SystemV/CST6 -6:00 - CST Zone SystemV/MST7 -7:00 - MST Zone SystemV/PST8 -8:00 - PST Zone SystemV/YST9 -9:00 - YST Zone SystemV/HST10 -10:00 - HST # Soviet Union Version 1995b Zone W-SU 3:00 M-Eur ????