Skip to content

Commit 06557ee

Browse files
committed
Merge branch 'tzdb_2023a' into main
2 parents c64b2d8 + eb4297a commit 06557ee

33 files changed

+808
-383
lines changed

settings.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
VZIC_RELEASE_NAME=2022g
2+
VZIC_RELEASE_NAME=2023a
33

44
# The source tzdata is downloaded from this URL.
55
VZIC_TZDATA_ARCHIVE_URL="https://data.iana.org/time-zones/releases/tzdata$VZIC_RELEASE_NAME.tar.gz"

tzdata/CONTRIBUTING

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ To email small changes, please run a POSIX shell command like
1818
'diff -u old/europe new/europe >myfix.patch', and attach
1919
'myfix.patch' to the email.
2020

21-
For more-elaborate or possibly-controversial changes,
21+
For more-elaborate or possibly controversial changes,
2222
such as renaming, adding or removing zones, please read
2323
"Theory and pragmatics of the tz code and data"
2424
<https://www.iana.org/time-zones/repository/theory.html>.

tzdata/Makefile

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,14 @@ DATAFORM= main
3535

3636
LOCALTIME= Factory
3737

38-
# The POSIXRULES macro controls interpretation of nonstandard and obsolete
39-
# POSIX-like TZ settings like TZ='EET-2EEST' that lack DST transition rules.
40-
# Such a setting uses the rules in a template file to determine
41-
# "spring forward" and "fall back" days and times; the environment
42-
# variable itself specifies UT offsets of standard and daylight saving time.
43-
#
38+
# The POSIXRULES macro controls interpretation of POSIX-like TZ
39+
# settings like TZ='EET-2EEST' that lack DST transition rules.
4440
# If POSIXRULES is '-', no template is installed; this is the default.
45-
#
4641
# Any other value for POSIXRULES is obsolete and should not be relied on, as:
4742
# * It does not work correctly in popular implementations such as GNU/Linux.
4843
# * It does not work even in tzcode, except for historical timestamps
4944
# that precede the last explicit transition in the POSIXRULES file.
5045
# Hence it typically does not work for current and future timestamps.
51-
# In short, software should avoid ruleless settings like TZ='EET-2EEST'
52-
# and so should not depend on the value of POSIXRULES.
53-
#
5446
# If, despite the above, you want a template for handling these settings,
5547
# you can change the line below (after finding the timezone you want in the
5648
# one of the $(TDATA) source files, or adding it to a source file).
@@ -63,7 +55,7 @@ LOCALTIME= Factory
6355
POSIXRULES= -
6456

6557
# Also see TZDEFRULESTRING below, which takes effect only
66-
# if the time zone files cannot be accessed.
58+
# if POSIXRULES is '-' or if the template file cannot be accessed.
6759

6860

6961
# Installation locations.
@@ -211,7 +203,7 @@ LDLIBS=
211203
# -DHAVE_DECL_ENVIRON if <unistd.h> declares 'environ'
212204
# -DHAVE_DECL_TIMEGM=0 if <time.h> does not declare timegm
213205
# -DHAVE_DIRECT_H if mkdir needs <direct.h> (MS-Windows)
214-
# -DHAVE_GENERIC=0 if _Generic does not work*
206+
# -DHAVE__GENERIC=0 if _Generic does not work*
215207
# -DHAVE_GETRANDOM if getrandom works (e.g., GNU/Linux),
216208
# -DHAVE_GETRANDOM=0 to avoid using getrandom
217209
# -DHAVE_GETTEXT if gettext works (e.g., GNU/Linux, FreeBSD, Solaris),
@@ -220,7 +212,7 @@ LDLIBS=
220212
# -DHAVE_INCOMPATIBLE_CTIME_R if your system's time.h declares
221213
# ctime_r and asctime_r incompatibly with the POSIX standard
222214
# (Solaris when _POSIX_PTHREAD_SEMANTICS is not defined).
223-
# -DHAVE_INTTYPES_H=0 if <inttypes.h> does not work*
215+
# -DHAVE_INTTYPES_H=0 if <inttypes.h> does not work*+
224216
# -DHAVE_LINK=0 if your system lacks a link function
225217
# -DHAVE_LOCALTIME_R=0 if your system lacks a localtime_r function
226218
# -DHAVE_LOCALTIME_RZ=0 if you do not want zdump to use localtime_rz
@@ -229,22 +221,24 @@ LDLIBS=
229221
# -DHAVE_POSIX_DECLS=0 if your system's include files do not declare
230222
# functions like 'link' or variables like 'tzname' required by POSIX
231223
# -DHAVE_SETENV=0 if your system lacks the setenv function
232-
# -DHAVE_SNPRINTF=0 if your system lacks the snprintf function
224+
# -DHAVE_SNPRINTF=0 if your system lacks the snprintf function+
233225
# -DHAVE_STDCKDINT_H=0 if neither <stdckdint.h> nor substitutes like
234226
# __builtin_add_overflow work*
235-
# -DHAVE_STDINT_H=0 if <stdint.h> does not work*
227+
# -DHAVE_STDINT_H=0 if <stdint.h> does not work*+
236228
# -DHAVE_STRFTIME_L if <time.h> declares locale_t and strftime_l
237229
# -DHAVE_STRDUP=0 if your system lacks the strdup function
238-
# -DHAVE_STRTOLL=0 if your system lacks the strtoll function
230+
# -DHAVE_STRTOLL=0 if your system lacks the strtoll function+
239231
# -DHAVE_SYMLINK=0 if your system lacks the symlink function
240232
# -DHAVE_SYS_STAT_H=0 if <sys/stat.h> does not work*
241233
# -DHAVE_TZSET=0 if your system lacks a tzset function
242234
# -DHAVE_UNISTD_H=0 if <unistd.h> does not work*
243235
# -DHAVE_UTMPX_H=0 if <utmpx.h> does not work*
244236
# -Dlocale_t=XXX if your system uses XXX instead of locale_t
237+
# -DPORT_TO_C89 if tzcode should also run on C89 platforms+
245238
# -DRESERVE_STD_EXT_IDS if your platform reserves standard identifiers
246239
# with external linkage, e.g., applications cannot define 'localtime'.
247240
# -Dssize_t=long on hosts like MS-Windows that lack ssize_t
241+
# -DSUPPORT_C89 if the tzcode library should support C89 callers+
248242
# -DSUPPRESS_TZDIR to not prepend TZDIR to file names; this has
249243
# security implications and is not recommended for general use
250244
# -DTHREAD_SAFE to make localtime.c thread-safe, as POSIX requires;
@@ -256,7 +250,13 @@ LDLIBS=
256250
# -DTZ_DOMAINDIR=\"/path\" to use "/path" for gettext directory;
257251
# the default is system-supplied, typically "/usr/lib/locale"
258252
# -DTZDEFRULESTRING=\",date/time,date/time\" to default to the specified
259-
# DST transitions if the time zone files cannot be accessed
253+
# DST transitions for POSIX-style TZ strings lacking them,
254+
# in the usual case where POSIXRULES is '-'. If not specified,
255+
# TZDEFRULESTRING defaults to US rules for future DST transitions.
256+
# This mishandles some past timestamps, as US DST rules have changed.
257+
# It also mishandles settings like TZ='EET-2EEST' for eastern Europe,
258+
# as Europe and US DST rules differ.
259+
# -DTZNAME_MAXIMUM=N to limit time zone abbreviations to N bytes (default 255)
260260
# -DUNINIT_TRAP if reading uninitialized storage can cause problems
261261
# other than simply getting garbage data
262262
# -DUSE_LTZ=0 to build zdump with the system time zone library
@@ -273,6 +273,8 @@ LDLIBS=
273273
# $(GCC_DEBUG_FLAGS) if you are using recent GCC and want lots of checking
274274
#
275275
# * Options marked "*" can be omitted if your compiler is C23 compatible.
276+
# * Options marked "+" are obsolescent and are planned to be removed
277+
# once the code assumes C99 or later.
276278
#
277279
# Select instrumentation via "make GCC_INSTRUMENT='whatever'".
278280
GCC_INSTRUMENT = \
@@ -363,7 +365,7 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
363365
# -DNETBSD_INSPIRED=0
364366
# to the end of the "CFLAGS=" line. Otherwise, the functions
365367
# "localtime_rz", "mktime_z", "tzalloc", and "tzfree" are added to the
366-
# time library, and if STD_INSPIRED is also defined the functions
368+
# time library, and if STD_INSPIRED is also defined to nonzero the functions
367369
# "posix2time_z" and "time2posix_z" are added as well.
368370
# The functions ending in "_z" (or "_rz") are like their unsuffixed
369371
# (or suffixed-by-"_r") counterparts, except with an extra first
@@ -455,16 +457,13 @@ SAFE_CHARSET3= 'abcdefghijklmnopqrstuvwxyz{|}~'
455457
SAFE_CHARSET= $(SAFE_CHARSET1)$(SAFE_CHARSET2)$(SAFE_CHARSET3)
456458
SAFE_CHAR= '[]'$(SAFE_CHARSET)'-]'
457459
458-
# These characters are Latin-1, and so are likely to be displayable
459-
# even in editors with limited character sets.
460-
UNUSUAL_OK_LATIN_1 = «°±»½¾×
461-
# This IPA symbol is represented in Unicode as the composition of
462-
# U+0075 and U+032F, and U+032F is not considered alphabetic by some
463-
# grep implementations that do not grok composition.
464-
UNUSUAL_OK_IPA = u̯
460+
# These non-alphabetic, non-ASCII printable characters are Latin-1,
461+
# and so are likely displayable even in editors like XEmacs 21
462+
# that have limited display capabilities.
463+
UNUSUAL_OK_LATIN_1 = ¡¢£¤¥¦§¨©«¬®¯°±²³´¶·¸¹»¼½¾¿×÷
465464
# Non-ASCII non-letters that OK_CHAR allows, as these characters are
466465
# useful in commentary.
467-
UNUSUAL_OK_CHARSET= $(UNUSUAL_OK_LATIN_1)$(UNUSUAL_OK_IPA)
466+
UNUSUAL_OK_CHARSET= $(UNUSUAL_OK_LATIN_1)
468467
469468
# Put this in a bracket expression to match spaces.
470469
s = [:space:]
@@ -833,7 +832,7 @@ check_slashed_abbrs: $(TDATA_TO_CHECK)
833832
834833
CHECK_CC_LIST = { n = split($$1,a,/,/); for (i=2; i<=n; i++) print a[1], a[i]; }
835834
836-
check_sorted: backward backzone iso3166.tab zone.tab zone1970.tab
835+
check_sorted: backward backzone
837836
$(AWK) '/^Link/ {printf "%.5d %s\n", g, $$3} !/./ {g++}' \
838837
backward | LC_ALL=C sort -cu
839838
$(AWK) '/^Zone/ {print $$2}' backzone | LC_ALL=C sort -cu

tzdata/NEWS

Lines changed: 111 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,100 @@
11
News for the tz database
22

3+
Release 2023a - 2023-03-22 12:39:33 -0700
4+
5+
Briefly:
6+
Egypt now uses DST again, from April through October.
7+
This year Morocco springs forward April 23, not April 30.
8+
Palestine delays the start of DST this year.
9+
Much of Greenland still uses DST from 2024 on.
10+
America/Yellowknife now links to America/Edmonton.
11+
tzselect can now use current time to help infer timezone.
12+
The code now defaults to C99 or later.
13+
Fix use of C23 attributes.
14+
15+
Changes to future timestamps
16+
17+
Starting in 2023, Egypt will observe DST from April's last Friday
18+
through October's last Thursday. (Thanks to Ahmad ElDardiry.)
19+
Assume the transition times are 00:00 and 24:00, respectively.
20+
21+
In 2023 Morocco's spring-forward transition after Ramadan
22+
will occur April 23, not April 30. (Thanks to Milamber.)
23+
Adjust predictions for future years accordingly. This affects
24+
predictions for 2023, 2031, 2038, and later years.
25+
26+
This year Palestine will delay its spring forward from
27+
March 25 to April 29 due to Ramadan. (Thanks to Heba Hamad.)
28+
Make guesses for future Ramadans too.
29+
30+
Much of Greenland, represented by America/Nuuk, will continue to
31+
observe DST using European Union rules. When combined with
32+
Greenland's decision not to change the clocks in fall 2023,
33+
America/Nuuk therefore changes from -03/-02 to -02/-01 effective
34+
2023-10-29 at 01:00 UTC. (Thanks to Thomas M. Steenholdt.)
35+
This change from 2022g doesn't affect timestamps until 2024-03-30,
36+
and doesn't affect tm_isdst until 2023-03-25.
37+
38+
Changes to past timestamps
39+
40+
America/Yellowknife has changed from a Zone to a backward
41+
compatibility Link, as it no longer differs from America/Edmonton
42+
since 1970. (Thanks to Almaz Mingaleev.) This affects some
43+
pre-1948 timestamps. The old data are now in 'backzone'.
44+
45+
Changes to past time zone abbreviations
46+
47+
When observing Moscow time, Europe/Kirov and Europe/Volgograd now
48+
use the abbreviations MSK/MSD instead of numeric abbreviations,
49+
for consistency with other timezones observing Moscow time.
50+
51+
Changes to code
52+
53+
You can now tell tzselect local time, to simplify later choices.
54+
Select the 'time' option in its first prompt.
55+
56+
You can now compile with -DTZNAME_MAXIMUM=N to limit time zone
57+
abbreviations to N bytes (default 255). The reference runtime
58+
library now rejects POSIX-style TZ strings that contain longer
59+
abbreviations, treating them as UTC. Previously the limit was
60+
platform dependent and abbreviations were silently truncated to
61+
16 bytes even when the limit was greater than 16.
62+
63+
The code by default is now designed for C99 or later. To build in
64+
a C89 environment, compile with -DPORT_TO_C89. To support C89
65+
callers of the tzcode library, compile with -DSUPPORT_C89. The
66+
two new macros are transitional aids planned to be removed in a
67+
future version, when C99 or later will be required.
68+
69+
The code now builds again on pre-C99 platforms, if you compile
70+
with -DPORT_TO_C89. This fixes a bug introduced in 2022f.
71+
72+
On C23-compatible platforms tzcode no longer uses syntax like
73+
'static [[noreturn]] void usage(void);'. Instead, it uses
74+
'[[noreturn]] static void usage(void);' as strict C23 requires.
75+
(Problem reported by Houge Langley.)
76+
77+
The code's functions now constrain their arguments with the C
78+
'restrict' keyword consistently with their documentation.
79+
This may allow future optimizations.
80+
81+
zdump again builds standalone with ckdadd and without setenv,
82+
fixing a bug introduced in 2022g. (Problem reported by panic.)
83+
84+
leapseconds.awk can now process a leap seconds file that never
85+
expires; this might be useful if leap seconds are discontinued.
86+
87+
Changes to commentary
88+
89+
tz-link.html has a new section "Coordinating with governments and
90+
distributors". (Thanks to Neil Fuller for some of the text.)
91+
92+
To improve tzselect diagnostics, zone1970.tab's comments column is
93+
now limited to countries that have multiple timezones.
94+
95+
Note that leap seconds are planned to be discontinued by 2035.
96+
97+
398
Release 2022g - 2022-11-29 08:58:31 -0800
499

5100
Briefly:
@@ -596,7 +691,7 @@ Release 2021b - 2021-09-24 16:23:00 -0700
596691
Starting with 2020a, zic -L truncated its output according to the
597692
"Expires" directive or "#expires" comment in the leapseconds file.
598693
The resulting TZif files omitted daylight saving transitions after
599-
the leap second table expired, which led to far less-accurate
694+
the leap second table expired, which led to far less accurate
600695
predictions of times after the expiry. Although future timestamps
601696
cannot be converted accurately in the presence of leap seconds, it
602697
is more accurate to convert near-future timestamps with a few
@@ -616,7 +711,7 @@ Release 2021b - 2021-09-24 16:23:00 -0700
616711
zic -L LEAPFILE -r @LO no longer generates an invalid TZif file
617712
that omits leap second information for the range LO..B when LO
618713
falls between two leap seconds A and B. Instead, it generates a
619-
TZif version 4 file that represents the previously-missing
714+
TZif version 4 file that represents the previously missing
620715
information.
621716

622717
The TZif reader now allows the leap second table to begin with a
@@ -670,7 +765,7 @@ Release 2021b - 2021-09-24 16:23:00 -0700
670765
Fix a bug with 'zic -r @X' when X is a negative leap second that
671766
has a nonnegative correction. Without the fix, the output file
672767
was truncated so that X appeared to be a positive leap second.
673-
Fix a similar, even-less-likely bug when truncating at a positive
768+
Fix a similar, even less likely bug when truncating at a positive
674769
leap second that has a nonpositive correction.
675770

676771
zic -r now reports an error if given rolling leap seconds, as this
@@ -691,7 +786,7 @@ Release 2021b - 2021-09-24 16:23:00 -0700
691786
fixing a bug introduced in 2014g.
692787

693788
zdump -v now outputs timestamps at boundaries of what localtime
694-
and gmtime can represent, instead of the less-useful timestamps
789+
and gmtime can represent, instead of the less useful timestamps
695790
one day after the minimum and one day before the maximum.
696791
(Thanks to Arthur David Olson for prototype code, and to Manuela
697792
Friedrich for debugging help.)
@@ -2311,7 +2406,7 @@ Release 2016g - 2016-09-13 08:56:38 -0700
23112406
names internally.
23122407

23132408
zdump has a new -i option to generate transitions in a
2314-
more-compact but still human-readable format. This option is
2409+
smaller but still human-readable format. This option is
23152410
experimental, and the output format may change in future versions.
23162411
(Thanks to Jon Skeet for suggesting that an option was needed,
23172412
and thanks to Tim Parenti and Chris Rovick for further comments.)
@@ -2333,7 +2428,7 @@ Release 2016g - 2016-09-13 08:56:38 -0700
23332428
release 2016g, the version number is now something like
23342429
'2016g-23-g50556e3-dirty' instead of the misleading '2016g'.
23352430
Tagged releases use the same version number format as before,
2336-
e.g., '2016g'. To support the more-accurate version number, its
2431+
e.g., '2016g'. To support the more accurate version number, its
23372432
specification has moved from a line in the Makefile to a new
23382433
source file 'version'.
23392434

@@ -2964,7 +3059,7 @@ Release 2014i - 2014-10-21 22:04:57 -0700
29643059

29653060
Since Belarus is not changing its clocks even though Moscow is,
29663061
the time zone abbreviation in Europe/Minsk is changing from FET
2967-
to its more-traditional value MSK on 2014-10-26 at 01:00.
3062+
to its more traditional value MSK on 2014-10-26 at 01:00.
29683063
(Thanks to Alexander Bokovoy for the heads-up about Belarus.)
29693064

29703065
The new abbreviation IDT stands for the pre-1976 use of UT +08 in
@@ -3056,7 +3151,7 @@ Release 2014h - 2014-09-25 18:59:03 -0700
30563151

30573152
Changes affecting build procedure
30583153

3059-
'make check' now checks better for properly-sorted data.
3154+
'make check' now checks better for properly sorted data.
30603155

30613156
Changes affecting documentation and commentary
30623157

@@ -3557,7 +3652,7 @@ Release 2014a - 2014-03-07 23:30:29 -0800
35573652

35583653
Changes affecting past timestamps
35593654

3560-
Fiji ended DST on 2014-01-19 at 02:00, not the previously-scheduled 03:00.
3655+
Fiji ended DST on 2014-01-19 at 02:00, not the previously scheduled 03:00.
35613656
(Thanks to Steffen Thorsen.)
35623657

35633658
Ukraine switched from Moscow to Eastern European time on 1990-07-01
@@ -3811,15 +3906,15 @@ Release 2013e - 2013-09-19 23:50:04 -0700
38113906
Allow POSIX-like TZ strings where the transition time's hour can
38123907
range from -167 through 167, instead of the POSIX-required 0
38133908
through 24. E.g., TZ='FJT-12FJST,M10.3.1/146,M1.3.4/75' for the
3814-
new Fiji rules. This is a more-compact way to represent
3909+
new Fiji rules. This is a more compact way to represent
38153910
far-future timestamps for America/Godthab, America/Santiago,
38163911
Antarctica/Palmer, Asia/Gaza, Asia/Hebron, Asia/Jerusalem,
38173912
Pacific/Easter, and Pacific/Fiji. Other zones are unaffected by
38183913
this change. (Derived from a suggestion by Arthur David Olson.)
38193914

38203915
Allow POSIX-like TZ strings where daylight saving time is in
38213916
effect all year. E.g., TZ='WART4WARST,J1/0,J365/25' for Western
3822-
Argentina Summer Time all year. This supports a more-compact way
3917+
Argentina Summer Time all year. This supports a more compact way
38233918
to represent the 2013d data for America/Argentina/San_Luis.
38243919
Because of the change for San Luis noted above this change does not
38253920
affect the current data. (Thanks to Andrew Main (Zefram) for
@@ -3908,13 +4003,13 @@ Release 2013e - 2013-09-19 23:50:04 -0700
39084003

39094004
zdump now outputs "UT" when referring to Universal Time, not "UTC".
39104005
"UTC" does not make sense for timestamps that predate the introduction
3911-
of UTC, whereas "UT", a more-generic term, does. (Thanks to Steve Allen
4006+
of UTC, whereas "UT", a more generic term, does. (Thanks to Steve Allen
39124007
for clarifying UT vs UTC.)
39134008

39144009
Data changes affecting behavior of tzselect and similar programs
39154010

3916-
Country code BQ is now called the more-common name "Caribbean Netherlands"
3917-
rather than the more-official "Bonaire, St Eustatius & Saba".
4011+
Country code BQ is now called the more common name "Caribbean Netherlands"
4012+
rather than the more official "Bonaire, St Eustatius & Saba".
39184013

39194014
Remove from zone.tab the names America/Montreal, America/Shiprock,
39204015
and Antarctica/South_Pole, as they are equivalent to existing
@@ -4098,7 +4193,7 @@ Release 2013c - 2013-04-19 16:17:40 -0700
40984193
Macquarie Island is politically part of Australia, not Antarctica.
40994194
(Thanks to Tobias Conradi.)
41004195

4101-
Sort Macquarie more-consistently with other parts of Australia.
4196+
Sort Macquarie more consistently with other parts of Australia.
41024197
(Thanks to Tim Parenti.)
41034198

41044199

@@ -5322,7 +5417,7 @@ Release data1998g - 1998-08-11 03:28:35 -0000
53225417
Release data1998f - 1998-07-20 13:50:00 -0000
53235418
[tzdata1998f.tar.gz is missing!]
53245419

5325-
Update the "leapseconds" file to include the newly-announced
5420+
Update the "leapseconds" file to include the newly announced
53265421
insertion at the end of 1998.
53275422

53285423

0 commit comments

Comments
 (0)