-
Notifications
You must be signed in to change notification settings - Fork 224
/
NEWS
6388 lines (4208 loc) · 232 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
News for the tz database
Unreleased, experimental changes
Briefly:
Paraguay adopts permanent -03 starting spring 2024.
Improve pre-1991 data for the Philippines.
Etc/Unknown is now reserved.
Changes to future timestamps
Paraguay will stop changing its clocks after the spring-forward
transition on 2024-10-06, so it is now permanently at -03.
(Thanks to Heitor David Pinto and Even Scharning.)
This affects timestamps starting 2025-03-22, as well as the
obsolescent tm_isdst flags starting 2024-10-15.
Changes to past timestamps
Correct timestamps for the Philippines before 1900, and from 1937
through 1990. (Thanks to P Chan for the heads-up and citations.)
This includes adjusting local mean time before 1899; fixing
transitions in September 1899, January 1937, and June 1954; adding
transitions in December 1941, November 1945, March and September
1977, and May and July 1990; and removing incorrect transitions in
March and September 1978.
Changes to data
Add zone1970.tab lines for the Concordia and Eyre Bird Observatory
research stations. (Thanks to Derick Rethans and Jule Dabars.)
Changes to code
strftime %s now generates the correct numeric string even when the
represented number does not fit into time_t. This is better than
generating the numeric equivalent of (time_t) -1, as strftime did
in TZDB releases 96a (when %s was introduced) through 2020a and in
releases 2022b through 2024b. It is also better than failing and
returning 0, as strftime did in releases 2020b through 2022a.
strftime now outputs an invalid conversion specifier as-is,
instead of eliding the leading '%', which confused debugging.
An invalid TZ now generates the time zone abbreviation "-00", not
"UTC", to help the user see that an error has occurred. (Thanks
to Arthur David Olson for suggesting a "wrong result".)
mktime and timeoff no longer incorrectly fail merely because a
struct tm component near INT_MIN or INT_MAX overflows when a
lower-order component carries into it.
TZNAME_MAXIMUM, the maximum number of bytes in a proleptic TZ
string's time zone abbreviation, now defaults to 254 not 255.
This helps reduce the size of internal state from 25480 to 21384
on common platforms. This change should not be a problem, as
nobody uses such long "abbreviations" and the longstanding tzcode
maximum was 16 until release 2023a. For those who prefer no
arbitrary limits, you can now specify TZNAME_MAXIMUM values up to
PTRDIFF_MAX, a limit forced by C anyway; formerly tzcode silently
misbehaved unless TZNAME_MAXIMUM was less than INT_MAX.
tzset and related functions no longer leak a file descriptor if
another thread forks or execs at about the same time and if the
platform has O_CLOFORK and O_CLOEXEC respectively. Also, the
functions no longer let a TZif file become a controlling terminal.
'zdump -' now reads TZif data from /dev/stdin.
(From a question by Arthur David Olson.)
Changes to documentation
The name Etc/Unknown is now reserved: it will not be used by TZDB.
This is for compatibility with CLDR, which uses the string
"Etc/Unknown" for an unknown or invalid timezone. (Thanks to
Justin Grant, Mark Davis, and Guy Harris.)
Cite Internet RFC 9636, which obsoletes RFC 8536 for TZif format.
Release 2024b - 2024-09-04 12:27:47 -0700
Briefly:
Improve historical data for Mexico, Mongolia, and Portugal.
System V names are now obsolescent.
The main data form now uses %z.
The code now conforms to RFC 8536 for early timestamps.
Support POSIX.1-2024, which removes asctime_r and ctime_r.
Assume POSIX.2-1992 or later for shell scripts.
SUPPORT_C89 now defaults to 1.
Changes to past timestamps
Asia/Choibalsan is now an alias for Asia/Ulaanbaatar rather than
being a separate Zone with differing behavior before April 2008.
This seems better given our wildly conflicting information about
Mongolia's time zone history. (Thanks to Heitor David Pinto.)
Historical transitions for Mexico have been updated based on
official Mexican decrees. The affected timestamps occur during
the years 1921-1927, 1931, 1945, 1949-1970, and 1981-1997.
The affected zones are America/Bahia_Banderas, America/Cancun,
America/Chihuahua, America/Ciudad_Juarez, America/Hermosillo,
America/Mazatlan, America/Merida, America/Mexico_City,
America/Monterrey, America/Ojinaga, and America/Tijuana.
(Thanks to Heitor David Pinto.)
Historical transitions for Portugal, represented by Europe/Lisbon,
Atlantic/Azores, and Atlantic/Madeira, have been updated based on a
close reading of old Portuguese legislation, replacing previous data
mainly originating from Whitman and Shanks & Pottenger. These
changes affect a few transitions in 1917-1921, 1924, and 1940
throughout these regions by a few hours or days, and various
timestamps between 1977 and 1993 depending on the region. In
particular, the Azores and Madeira did not observe DST from 1977 to
1981. Additionally, the adoption of standard zonal time in former
Portuguese colonies have been adjusted: Africa/Maputo in 1909, and
Asia/Dili by 22 minutes at the start of 1912.
(Thanks to Tim Parenti.)
Changes to past tm_isdst flags
The period from 1966-04-03 through 1966-10-02 in Portugal is now
modeled as DST, to more closely reflect how contemporaneous changes
in law entered into force.
Changes to data
Names present only for compatibility with UNIX System V
(last released in the 1990s) have been moved to 'backward'.
These names, which for post-1970 timestamps mostly just duplicate
data of geographical names, were confusing downstream uses.
Names moved to 'backward' are now links to geographical names.
This affects behavior for TZ='EET' for some pre-1981 timestamps,
for TZ='CET' for some pre-1947 timestamps, and for TZ='WET' for
some pre-1996 timestamps. Also, TZ='MET' now behaves like
TZ='CET' and so uses the abbreviation "CET" rather than "MET".
Those needing the previous TZDB behavior, which does not match any
real-world clocks, can find the old entries in 'backzone'.
(Problem reported by Justin Grant.)
The main source files' time zone abbreviations now use %z,
supported by zic since release 2015f and used in vanguard form
since release 2022b. For example, America/Sao_Paulo now contains
the zone continuation line "-3:00 Brazil %z", which is less error
prone than the old "-3:00 Brazil -03/-02". This does not change
the represented data: the generated TZif files are unchanged.
Rearguard form still avoids %z, to support obsolescent parsers.
Asia/Almaty has been removed from zonenow.tab as it now agrees
with Asia/Tashkent for future timestamps, due to Kazakhstan's
2024-02-29 time zone change. Similarly, America/Scoresbysund
has been removed, as it now agrees with America/Nuuk due to
its 2024-03-31 time zone change.
Changes to code
localtime.c now always uses a TZif file's time type 0 to handle
timestamps before the file's first transition. Formerly,
localtime.c sometimes inferred a different time type, in order to
handle problematic data generated by zic 2018e or earlier. As it
is now safe to assume more recent versions of zic, there is no
longer a pressing need to fail to conform RFC 8536 section 3.2,
which requires using time type 0 in this situation. This change
does not affect behavior when reading TZif files generated by zic
2018f and later.
POSIX.1-2024 removes asctime_r and ctime_r and does not let
libraries define them, so remove them except when needed to
conform to earlier POSIX. These functions are dangerous as they
can overrun user buffers. If you still need them, add
-DSUPPORT_POSIX2008 to CFLAGS.
The SUPPORT_C89 option now defaults to 1 instead of 0, fixing a
POSIX-conformance bug introduced in 2023a.
tzselect now supports POSIX.1-2024 proleptic TZ strings. Also, it
assumes POSIX.2-1992 or later, as practical porting targets now
all support that, and it uses some features from POSIX.1-2024 if
available.
Changes to build procedure
'make check' no longer requires curl and Internet access.
The build procedure now assumes POSIX.2-1992 or later, to simplify
maintenance. To build on Solaris 10, the only extant system still
defaulting to pre-POSIX, prepend /usr/xpg4/bin to PATH.
Changes to documentation
The documentation now reflects POSIX.1-2024.
Changes to commentary
Commentary about historical transitions in Portugal and her former
colonies has been expanded with links to relevant legislation.
(Thanks to Tim Parenti.)
Release 2024a - 2024-02-01 09:28:56 -0800
Briefly:
Kazakhstan unifies on UTC+5 beginning 2024-03-01.
Palestine springs forward a week later after Ramadan.
zic no longer pretends to support indefinite-past DST.
localtime no longer mishandles Ciudad Juárez in 2422.
Changes to future timestamps
Kazakhstan unifies on UTC+5. This affects Asia/Almaty and
Asia/Qostanay which together represent the eastern portion of the
country that will transition from UTC+6 on 2024-03-01 at 00:00 to
join the western portion. (Thanks to Zhanbolat Raimbekov.)
Palestine springs forward a week later than previously predicted
in 2024 and 2025. (Thanks to Heba Hamad.) Change spring-forward
predictions to the second Saturday after Ramadan, not the first;
this also affects other predictions starting in 2039.
Changes to past timestamps
Asia/Ho_Chi_Minh's 1955-07-01 transition occurred at 01:00
not 00:00. (Thanks to Đoàn Trần Công Danh.)
From 1947 through 1949, Toronto's transitions occurred at 02:00
not 00:00. (Thanks to Chris Walton.)
In 1911 Miquelon adopted standard time on June 15, not May 15.
Changes to code
The FROM and TO columns of Rule lines can no longer be "minimum"
or an abbreviation of "minimum", because TZif files do not support
DST rules that extend into the indefinite past - although these
rules were supported when TZif files had only 32-bit data, this
stopped working when 64-bit TZif files were introduced in 1995.
This should not be a problem for realistic data, since DST was
first used in the 20th century. As a transition aid, FROM columns
like "minimum" are now diagnosed and then treated as if they were
the year 1900; this should suffice for TZif files on old systems
with only 32-bit time_t, and it is more compatible with bugs in
2023c-and-earlier localtime.c. (Problem reported by Yoshito
Umaoka.)
localtime and related functions no longer mishandle some
timestamps that occur about 400 years after a switch to a time
zone with a DST schedule. In 2023d data this problem was visible
for some timestamps in November 2422, November 2822, etc. in
America/Ciudad_Juarez. (Problem reported by Gilmore Davidson.)
strftime %s now uses tm_gmtoff if available. (Problem and draft
patch reported by Dag-Erling Smørgrav.)
Changes to build procedure
The leap-seconds.list file is now copied from the IERS instead of
from its downstream counterpart at NIST, as the IERS version is
now in the public domain too and tends to be more up-to-date.
(Thanks to Martin Burnicki for liaisoning with the IERS.)
Changes to documentation
The strftime man page documents which struct tm members affect
which conversion specs, and that tzset is called. (Problems
reported by Robert Elz and Steve Summit.)
Release 2023d - 2023-12-21 20:02:24 -0800
Briefly:
Ittoqqortoormiit, Greenland changes time zones on 2024-03-31.
Vostok, Antarctica changed time zones on 2023-12-18.
Casey, Antarctica changed time zones five times since 2020.
Code and data fixes for Palestine timestamps starting in 2072.
A new data file zonenow.tab for timestamps starting now.
Changes to future timestamps
Ittoqqortoormiit, Greenland (America/Scoresbysund) joins most of
the rest of Greenland's timekeeping practice on 2024-03-31, by
changing its time zone from -01/+00 to -02/-01 at the same moment
as the spring-forward transition. Its clocks will therefore not
spring forward as previously scheduled. The time zone change
reverts to its common practice before 1981. (Thanks to Jule Dabars.)
Fix predictions for DST transitions in Palestine in 2072-2075,
correcting a typo introduced in 2023a. (Thanks to Jule Dabars.)
Changes to past and future timestamps
Vostok, Antarctica changed to +05 on 2023-12-18. It had been at
+07 (not +06) for years. (Thanks to Zakhary V. Akulov.)
Change data for Casey, Antarctica to agree with timeanddate.com,
by adding five time zone changes since 2020. Casey is now at +08
instead of +11.
Changes to past tm_isdst flags
Much of Greenland, represented by America/Nuuk, changed its
standard time from -03 to -02 on 2023-03-25, not on 2023-10-28.
This does not affect UTC offsets, only the tm_isdst flag.
(Thanks to Thomas M. Steenholdt.)
New data file
A new data file zonenow.tab helps configure applications that use
timestamps dated from now on. This simplifies configuration,
since users choose from a smaller Zone set. The file's format is
experimental and subject to change.
Changes to code
localtime.c no longer mishandles TZif files that contain a single
transition into a DST regime. Previously, it incorrectly assumed
DST was in effect before the transition too. (Thanks to Alois
Treindl for debugging help.)
localtime.c's timeoff no longer collides with OpenBSD 7.4.
The C code now uses _Generic only if __STDC_VERSION__ says the
compiler is C11 or later.
tzselect now optionally reads zonenow.tab, to simplify when
configuring only for timestamps dated from now on.
tzselect no longer creates temporary files.
tzselect no longer mishandles the following:
Spaces and most other special characters in BUGEMAIL, PACKAGE,
TZDIR, and VERSION.
TZ strings when using mawk 1.4.3, which mishandles regular
expressions of the form /X{2,}/.
ISO 6709 coordinates when using an awk that lacks the GNU
extension of newlines in -v option-arguments.
Non UTF-8 locales when using an iconv command that lacks the GNU
//TRANSLIT extension.
zic no longer mishandles data for Palestine after the year 2075.
Previously, it incorrectly omitted post-2075 transitions that are
predicted for just before and just after Ramadan. (Thanks to Ken
Murchison for debugging help.)
zic now works again on Linux 2.6.16 and 2.6.17 (2006).
(Problem reported by Rune Torgersen.)
Changes to build procedure
The Makefile is now more compatible with POSIX:
* It no longer defines AR, CC, CFLAGS, LDFLAGS, and SHELL.
* It no longer uses its own 'cc' in place of CC.
* It now uses ARFLAGS, with default specified by POSIX.
* It does not use LFLAGS incompatibly with POSIX.
* It uses the special .POSIX target.
* It quotes special characters more carefully.
* It no longer mishandles builds in an ISO 8859 locale.
Due to the CC changes, TZDIR is now #defined in a file tzdir.h
built by 'make', not in a $(CC) -D option. Also, TZDEFAULT is
now treated like TZDIR as they have similar roles.
Changes to commentary
Limitations and hazards of the optional support for obsolescent
C89 platforms are documented better, along with a tentative
schedule for removing this support.
Release 2023c - 2023-03-28 12:42:14 -0700
Changes to past and future timestamps
Model Lebanon's DST chaos by reverting data to tzdb 2023a.
(Thanks to Rany Hany for the heads-up.)
Release 2023b - 2023-03-23 19:50:38 -0700
Changes to future timestamps
This year Lebanon springs forward April 20/21 not March 25/26.
(Thanks to Saadallah Itani.) [This was reverted in 2023c.]
Release 2023a - 2023-03-22 12:39:33 -0700
Briefly:
Egypt now uses DST again, from April through October.
This year Morocco springs forward April 23, not April 30.
Palestine delays the start of DST this year.
Much of Greenland still uses DST from 2024 on.
America/Yellowknife now links to America/Edmonton.
tzselect can now use current time to help infer timezone.
The code now defaults to C99 or later.
Fix use of C23 attributes.
Changes to future timestamps
Starting in 2023, Egypt will observe DST from April's last Friday
through October's last Thursday. (Thanks to Ahmad ElDardiry.)
Assume the transition times are 00:00 and 24:00, respectively.
In 2023 Morocco's spring-forward transition after Ramadan
will occur April 23, not April 30. (Thanks to Milamber.)
Adjust predictions for future years accordingly. This affects
predictions for 2023, 2031, 2038, and later years.
This year Palestine will delay its spring forward from
March 25 to April 29 due to Ramadan. (Thanks to Heba Hamad.)
Make guesses for future Ramadans too.
Much of Greenland, represented by America/Nuuk, will continue to
observe DST using European Union rules. When combined with
Greenland's decision not to change the clocks in fall 2023,
America/Nuuk therefore changes from -03/-02 to -02/-01 effective
2023-10-29 at 01:00 UTC. (Thanks to Thomas M. Steenholdt.)
This change from 2022g doesn't affect timestamps until 2024-03-30,
and doesn't affect tm_isdst until 2023-03-25.
Changes to past timestamps
America/Yellowknife has changed from a Zone to a backward
compatibility Link, as it no longer differs from America/Edmonton
since 1970. (Thanks to Almaz Mingaleev.) This affects some
pre-1948 timestamps. The old data are now in 'backzone'.
Changes to past time zone abbreviations
When observing Moscow time, Europe/Kirov and Europe/Volgograd now
use the abbreviations MSK/MSD instead of numeric abbreviations,
for consistency with other timezones observing Moscow time.
Changes to code
You can now tell tzselect local time, to simplify later choices.
Select the 'time' option in its first prompt.
You can now compile with -DTZNAME_MAXIMUM=N to limit time zone
abbreviations to N bytes (default 255). The reference runtime
library now rejects POSIX-style TZ strings that contain longer
abbreviations, treating them as UTC. Previously the limit was
platform dependent and abbreviations were silently truncated to
16 bytes even when the limit was greater than 16.
The code by default is now designed for C99 or later. To build on
a mostly-C89 platform, compile with -DPORT_TO_C89; this should
work on C89 platforms that also support C99 'long long' and
perhaps a few other extensions to C89. To support C89 callers of
tzcode's library, compile with -DSUPPORT_C89; however, this could
trigger latent bugs in C99-or-later callers. The two new macros
are transitional aids planned to be removed in a future version
(say, in 2029), when C99 or later will be required.
The code now builds again on pre-C99 platforms, if you compile
with -DPORT_TO_C89. This fixes a bug introduced in 2022f.
On C23-compatible platforms tzcode no longer uses syntax like
'static [[noreturn]] void usage(void);'. Instead, it uses
'[[noreturn]] static void usage(void);' as strict C23 requires.
(Problem reported by Houge Langley.)
The code's functions now constrain their arguments with the C
'restrict' keyword consistently with their documentation.
This may allow future optimizations.
zdump again builds standalone with ckdadd and without setenv,
fixing a bug introduced in 2022g. (Problem reported by panic.)
leapseconds.awk can now process a leap seconds file that never
expires; this might be useful if leap seconds are discontinued.
Changes to commentary
tz-link.html has a new section "Coordinating with governments and
distributors". (Thanks to Neil Fuller for some of the text.)
To improve tzselect diagnostics, zone1970.tab's comments column is
now limited to countries that have multiple timezones.
Note that there are plans to discontinue leap seconds by 2035.
Release 2022g - 2022-11-29 08:58:31 -0800
Briefly:
The northern edge of Chihuahua changes to US timekeeping.
Much of Greenland stops changing clocks after March 2023.
Fix some pre-1996 timestamps in northern Canada.
C89 is now deprecated; please use C99 or later.
Portability fixes for AIX, libintl, MS-Windows, musl, z/OS
In C code, use more C23 features if available.
C23 timegm now supported by default
Fixes for unlikely integer overflows
Changes to future timestamps
In the Mexican state of Chihuahua, the border strip near the US
will change to agree with nearby US locations on 2022-11-30.
The strip's western part, represented by Ciudad Juárez, switches
from -06 all year to -07/-06 with US DST rules, like El Paso, TX.
The eastern part, represented by Ojinaga, will observe US DST next
year, like Presidio, TX. (Thanks to Heitor David Pinto.)
A new Zone America/Ciudad_Juarez splits from America/Ojinaga.
Much of Greenland, represented by America/Nuuk, stops observing
winter time after March 2023, so its daylight saving time becomes
standard time. (Thanks to Jonas Nyrup and Jürgen Appel.)
Changes to past timestamps
Changes for pre-1996 northern Canada (thanks to Chris Walton):
Merge America/Iqaluit and America/Pangnirtung into the former,
with a backward compatibility link for the latter name.
There is no good evidence the two locations differ since 1970.
This change affects pre-1996 America/Pangnirtung timestamps.
Cambridge Bay, Inuvik, Iqaluit, Rankin Inlet, Resolute and
Yellowknife did not observe DST in 1965, and did observe DST
from 1972 through 1979.
Whitehorse moved from -09 to -08 on 1966-02-27, not 1967-05-28.
Colombia's 1993 fallback was 02-06 24:00, not 04-04 00:00.
(Thanks to Alois Treindl.)
Singapore's 1981-12-31 change was at 16:00 UTC (23:30 local time),
not 24:00 local time. (Thanks to Geoff Clare via Robert Elz.)
Changes to code
Although tzcode still works with C89, bugs found in recent routine
maintenance indicate that bitrot has set in and that in practice
C89 is no longer used to build tzcode. As it is a maintenance
burden, support for C89 is planned to be removed soon. Instead,
please use compilers compatible with C99, C11, C17, or C23.
timegm, which tzcode implemented in 1989, will finally be
standardized 34 years later as part of C23, so timegm is now
supported even if STD_INSPIRED is not defined.
Fix bug in zdump's tzalloc emulation on hosts that lack tm_zone.
(Problem reported by Đoàn Trần Công Danh.)
Fix bug in zic on hosts where malloc(0) yields NULL on success.
(Problem reported by Tim McBrayer for AIX 6.1.)
Fix zic configuration to avoid linkage failures on some platforms.
(Problems reported by Gilmore Davidson and Igor Ivanov.)
Work around MS-Windows nmake incompatibility with POSIX.
(Problem reported by Manuela Friedrich.)
Port mktime and strftime to debugging platforms where accessing
uninitialized data has undefined behavior (strftime problem
reported by Robert Elz).
Check more carefully for unlikely integer overflows, preferring
C23 <stdckdint.h> to overflow checking by hand, as the latter has
had obscure bugs.
Changes to build procedure
New Makefile rule check_mild that skips checking whether Link
lines are in the file 'backward'. (Inspired by a suggestion from
Stephen Colebourne.)
Release 2022f - 2022-10-28 18:04:57 -0700
Briefly:
Mexico will no longer observe DST except near the US border.
Chihuahua moves to year-round -06 on 2022-10-30.
Fiji no longer observes DST.
Move links to 'backward'.
In vanguard form, GMT is now a Zone and Etc/GMT a link.
zic now supports links to links, and vanguard form uses this.
Simplify four Ontario zones.
Fix a Y2438 bug when reading TZif data.
Enable 64-bit time_t on 32-bit glibc platforms.
Omit large-file support when no longer needed.
In C code, use some C23 features if available.
Remove no-longer-needed workaround for Qt bug 53071.
Changes to future timestamps
Mexico will no longer observe DST after 2022, except for areas
near the US border that continue to observe US DST rules.
On 2022-10-30 at 02:00 the Mexican state of Chihuahua moves
from -07 (-06 with DST) to year-round -06, thus not changing
its clocks that day. The new law states that Chihuahua
near the US border no longer observes US DST.
(Thanks to gera for the heads-up about Chihuahua.)
Fiji will not observe DST in 2022/3. (Thanks to Shalvin Narayan.)
For now, assume DST is suspended indefinitely.
Changes to data
Move links to 'backward' to ease and simplify link maintenance.
This affects generated data only if you use 'make BACKWARD='.
GMT is now a Zone and Etc/GMT a link instead of vice versa,
as GMT is needed for leap second support whereas Etc/GMT is not.
However, this change exposes a bug in TZUpdater 2.3.2 so it is
present only in vanguard form for now.
Vanguard form now uses links to links, as zic now supports this.
Changes to past timestamps
Simplify four Ontario zones, as most of the post-1970 differences
seem to have been imaginary. (Problem reported by Chris Walton.)
Move America/Nipigon, America/Rainy_River, and America/Thunder_Bay
to 'backzone'; backward-compatibility links still work, albeit
with some different timestamps before November 2005.
Changes to code
zic now supports links to links regardless of input line order.
For example, if Australia/Sydney is a Zone, the lines
Link Australia/Canberra Australia/ACT
Link Australia/Sydney Australia/Canberra
now work correctly, even though the shell commands
ln Australia/Canberra Australia/ACT
ln Australia/Sydney Australia/Canberra
would fail because the first command attempts to use a link
Australia/Canberra that does not exist until after the second
command is executed. Previously, zic had unspecified behavior if
a Link line's target was another link, and zic often misbehaved if
a Link line's target was a later Link line.
Fix line number in zic's diagnostic for a link to a link.
Fix a bug that caused localtime to mishandle timestamps starting
in the year 2438 when reading data generated by 'zic -b fat' when
distant-future DST transitions occur at times given in standard
time or in UT, not the usual case of local time. This occurs when
the corresponding .zi Rule lines specify DST transitions with TO
columns of 'max' and AT columns that end in 's' or 'u'. The
number 2438 comes from the 32-bit limit in the year 2038, plus the
400-year Gregorian cycle. (Problem reported by Bradley White.)
On glibc 2.34 and later, which optionally supports 64-bit time_t
on platforms like x86 where time_t was traditionally 32 bits,
default time_t to 64 instead of 32 bits. This lets functions like
localtime support timestamps after the year 2038, and fixes
year-2038 problems in zic when accessing files dated after 2038.
To continue to limit time_t to 32 bits on these platforms, use
"make CFLAGS='-D_TIME_BITS=32'".
In C code, do not enable large-file support on platforms like AIX
and macOS that no longer need it now that tzcode does not use
off_t or related functions like 'stat'. Large-file support is
still enabled by default on GNU/Linux, as it is needed for 64-bit
time_t support.
In C code, prefer C23 keywords to pre-C23 macros for alignof,
bool, false, and true. Also, use the following C23 features if
available: __has_include, unreachable.
zic no longer works around Qt bug 53071, as the relevant Qt
releases have been out of support since 2019. This change affects
only fat TZif files, as thin files never had the workaround.
zdump no longer modifies the environ vector when compiled on
platforms lacking tm_zone or when compiled with -DUSE_LTZ=0.
This avoid undefined behavior on POSIX platforms.
Release 2022e - 2022-10-11 11:13:02 -0700
Briefly:
Jordan and Syria switch from +02/+03 with DST to year-round +03.
Changes to future timestamps
Jordan and Syria are abandoning the DST regime and are changing to
permanent +03, so they will not fall back from +03 to +02 on
2022-10-28. (Thanks to Steffen Thorsen and Issam Al-Zuwairi.)
Changes to past timestamps
On 1922-01-01 Tijuana adopted standard time at 00:00, not 01:00.
Changes to past time zone abbreviations and DST flags
The temporary advancement of clocks in central Mexico in summer
1931 is now treated as daylight saving time, instead of as two
changes to standard time.
Release 2022d - 2022-09-23 12:02:57 -0700
Briefly:
Palestine transitions are now Saturdays at 02:00.
Simplify three Ukraine zones into one.
Changes to future timestamps
Palestine now springs forward and falls back at 02:00 on the
first Saturday on or after March 24 and October 24, respectively.
This means 2022 falls back 10-29 at 02:00, not 10-28 at 01:00.
(Thanks to Heba Hamad.)
Changes to past timestamps
Simplify three Ukraine zones to one, since the post-1970
differences seem to have been imaginary. Move Europe/Uzhgorod and
Europe/Zaporozhye to 'backzone'; backward-compatibility links
still work, albeit with different timestamps before October 1991.
Release 2022c - 2022-08-15 17:47:18 -0700
Briefly:
Work around awk bug in FreeBSD, macOS, etc.
Improve tzselect on intercontinental Zones.
Changes to code
Work around a bug in onetrueawk that broke commands like
'make traditional_tarballs' on FreeBSD, macOS, etc.
(Problem reported by Deborah Goldsmith.)
Add code to tzselect that uses experimental structured comments in
zone1970.tab to clarify whether Zones like Africa/Abidjan and
Europe/Istanbul cross continent or ocean boundaries.
(Inspired by a problem reported by Peter Krefting.)
Fix bug with 'zic -d /a/b/c' when /a is unwritable but the
directory /a/b already exists.
Remove zoneinfo2tdf.pl, as it was unused and triggered false
malware alarms on some email servers.
Release 2022b - 2022-08-10 15:38:32 -0700
Briefly:
Chile's DST is delayed by a week in September 2022.
Iran no longer observes DST after 2022.
Rename Europe/Kiev to Europe/Kyiv.
New zic -R option
Vanguard form now uses %z.
Finish moving duplicate-since-1970 zones to 'backzone'.
New build option PACKRATLIST
New tailored_tarballs target, replacing rearguard_tarballs
Changes to future timestamps
Chile's 2022 DST start is delayed from September 4 to September 11.
(Thanks to Juan Correa.)
Iran plans to stop observing DST permanently, after it falls back
on 2022-09-21. (Thanks to Ali Mirjamali.)
Changes to past timestamps
Finish moving to 'backzone' the location-based zones whose
timestamps since 1970 are duplicates; adjust links accordingly.
This change ordinarily affects only pre-1970 timestamps, and with
the new PACKRATLIST option it does not affect any timestamps.
In this round the affected zones are Antarctica/Vostok,
Asia/Brunei, Asia/Kuala_Lumpur, Atlantic/Reykjavik,
Europe/Amsterdam, Europe/Copenhagen, Europe/Luxembourg,
Europe/Monaco, Europe/Oslo, Europe/Stockholm, Indian/Christmas,
Indian/Cocos, Indian/Kerguelen, Indian/Mahe, Indian/Reunion,
Pacific/Chuuk, Pacific/Funafuti, Pacific/Majuro, Pacific/Pohnpei,
Pacific/Wake and Pacific/Wallis, and the affected links are
Arctic/Longyearbyen, Atlantic/Jan_Mayen, Iceland, Pacific/Ponape,
Pacific/Truk, and Pacific/Yap.
From fall 1994 through fall 1995, Shanks wrote that Crimea's
DST transitions were at 02:00 standard time, not at 00:00.
(Thanks to Michael Deckers.)
Iran adopted standard time in 1935, not 1946. In 1977 it observed
DST from 03-21 23:00 to 10-20 24:00; its 1978 transitions were on
03-24 and 08-05, not 03-20 and 10-20; and its spring 1979
transition was on 05-27, not 03-21.
(Thanks to Roozbeh Pournader and Francis Santoni.)
Chile's observance of -04 from 1946-08-29 through 1947-03-31 was
considered DST, not standard time. Santiago and environs had moved
their clocks back to rejoin the rest of mainland Chile; put this
change at the end of 1946-08-28. (Thanks to Michael Deckers.)
Some old, small clock transitions have been removed, as people at
the time did not change their clocks. This affects Asia/Hong_Kong
in 1904, Asia/Ho_Chi_Minh in 1906, and Europe/Dublin in 1880.
Changes to zone name
Rename Europe/Kiev to Europe/Kyiv, as "Kyiv" is more common in
English now. Spelling of other names in Ukraine has not yet
demonstrably changed in common English practice so for now these
names retain old spellings, as in other countries (e.g.,
Europe/Prague not "Praha", and Europe/Sofia not "Sofiya").
Changes to code
zic has a new option '-R @N' to output explicit transitions < N.
(Need suggested by Almaz Mingaleev.)
'zic -r @N' no longer outputs bad data when N < first transition.
(Problem introduced in 2021d and reported by Peter Krefting.)
zic now checks its input for NUL bytes and unterminated lines, and
now supports input line lengths up to 2048 (not 512) bytes.
gmtime and related code now use the abbreviation "UTC" not "GMT".
POSIX is being revised to require this.
When tzset and related functions set vestigial static variables
like tzname, they now prefer specified timestamps to unspecified ones.
(Problem reported by Almaz Mingaleev.)
zic no longer complains "can't determine time zone abbreviation to
use just after until time" when a transition to a new standard
time occurs simultaneously with the first DST fallback transition.
Changes to build procedure
Source data in vanguard form now uses the %z notation, introduced
in release 2015f. For example, for America/Sao_Paulo vanguard
form contains the zone continuation line "-3:00 Brazil %z", which
is simpler and more reliable than the line "-3:00 Brazil -03/-02"
used in main and rearguard forms. The plan is for the main form
to use %z eventually; in the meantime maintainers of zi parsers
are encouraged to test the parsers on vanguard.zi.
The Makefile has a new PACKRATLIST option to select a subset of
'backzone'. For example, 'make PACKRATDATA=backzone
PACKRATLIST=zone.tab' now generates TZif files identical to those
of the global-tz project.
The Makefile has a new tailored_tarballs target for generating
special-purpose tarballs. It generalizes and replaces the
rearguard_tarballs target and related targets and macros, which
are now obsolescent.
'make install' now defaults LOCALTIME to Factory not GMT,
which means the default abbreviation is now "-00" not "GMT".
Remove the posix_packrat target, marked obsolescent in 2016a.
Release 2022a - 2022-03-15 23:02:01 -0700
Briefly:
Palestine will spring forward on 2022-03-27, not -03-26.
zdump -v now outputs better failure indications.
Bug fixes for code that reads corrupted TZif data.
Changes to future timestamps
Palestine will spring forward on 2022-03-27, not 2022-03-26.
(Thanks to Heba Hamad.) Predict future transitions for first
Sunday >= March 25. Additionally, predict fallbacks to be the first
Friday on or after October 23, not October's last Friday, to be more
consistent with recent practice. The first differing fallback
prediction is on 2025-10-24, not 2025-10-31.
Changes to past timestamps
From 1992 through spring 1996, Ukraine's DST transitions were at
02:00 standard time, not at 01:00 UTC. (Thanks to Alois Treindl.)
Chile's Santiago Mean Time and its LMT precursor have been adjusted
eastward by 1 second to align with past and present law.
Changes to commentary
Add several references for Chile's 1946/1947 transitions, some of
which only affected portions of the country.
Changes to code
Fix bug when mktime gets confused by truncated TZif files with
unspecified local time. (Problem reported by Almaz Mingaleev.)
Fix bug when 32-bit time_t code reads malformed 64-bit TZif data.
(Problem reported by Christos Zoulas.)
When reading a version 2 or later TZif file, the TZif reader now
validates the version 1 header and data block only enough to skip
over them, as recommended by RFC 8536 section 4. Also, the TZif
reader no longer mistakenly attempts to parse a version 1 TZIf
file header as a TZ string.
zdump -v now outputs "(localtime failed)" and "(gmtime failed)"
when local time and UT cannot be determined for a timestamp.
Changes to build procedure
Distribution tarballs now use standard POSIX.1-1988 ustar format
instead of GNU format. Although the formats are almost identical
for these tarballs, ustar headers' magic fields contain "ustar"
instead of "ustar ", and their version fields contain "00" instead
of " ". The two formats are planned to diverge more significantly
for tzdb releases after 2242-03-16 12:56:31 UTC, when the ustar
format becomes obsolete and the tarballs switch to pax format, an
extension of ustar. For details about these formats, please see
"pax - portable archive interchange", IEEE Std 1003.1-2017,
<https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html#tag_20_92_13>.
Release 2021e - 2021-10-21 18:41:00 -0700
Changes to future timestamps
Palestine will fall back 10-29 (not 10-30) at 01:00.
(Thanks to P Chan and Heba Hemad.)
Release 2021d - 2021-10-15 13:48:18 -0700
Briefly:
Fiji suspends DST for the 2021/2022 season.
'zic -r' marks unspecified timestamps with "-00".
Changes to future timestamps
Fiji will suspend observance of DST for the 2021/2022 season.
Assume for now that it will return next year. (Thanks to Jashneel
Kumar and P Chan.)
Changes to code
'zic -r' now uses "-00" time zone abbreviations for intervals
with UT offsets that are unspecified due to -r truncation.
This implements a change in draft Internet RFC 8536bis.
Release 2021c - 2021-10-01 14:21:49 -0700
Briefly:
Revert most 2021b changes to 'backward'.
Fix 'zic -b fat' bug in pre-1970 32-bit data.
Fix two Link line typos.
Distribute SECURITY file.
This release is intended as a bugfix release, to fix compatibility
problems and typos reported since 2021b was released.
Changes to Link directives
Revert almost all of 2021b's changes to the 'backward' file,
by moving Link directives back to where they were in 2021a.
Although 'zic' doesn't care which source file contains a Link
directive, some downstream uses ran into trouble with the move.
(Problem reported by Stephen Colebourne for Joda-Time.)
Fix typo that linked Atlantic/Jan_Mayen to the wrong location
(problem reported by Chris Walton).
Fix 'backzone' typo that linked America/Virgin to the wrong
location (problem reported by Michael Deckers).
Changes to code
Fix a bug in 'zic -b fat' that caused old timestamps to be
mishandled in 32-bit-only readers (problem reported by Daniel
Fischer).
Changes to documentation
Distribute the SECURITY file (problem reported by Andreas Radke).
Release 2021b - 2021-09-24 16:23:00 -0700
Briefly:
Jordan now starts DST on February's last Thursday.
Samoa no longer observes DST.
Merge more location-based Zones whose timestamps agree since 1970.
Move some backward-compatibility links to 'backward'.
Rename Pacific/Enderbury to Pacific/Kanton.
Correct many pre-1993 transitions in Malawi, Portugal, etc.
zic now creates each output file or link atomically.
zic -L no longer omits the POSIX TZ string in its output.
zic fixes for truncation and leap second table expiration.
zic now follows POSIX for TZ strings using all-year DST.
Fix some localtime crashes and bugs in obscure cases.
zdump -v now outputs more-useful boundary cases.
tzfile.5 better matches a draft successor to RFC 8536.
A new file SECURITY.
This release is prompted by recent announcements by Jordan and Samoa.
It incorporates many other changes that had accumulated since 2021a.
However, it omits most proposed changes that merged all Zones
agreeing since 1970, as concerns were raised about doing too many of
these changes at once. It does keeps some of these changes in the
interest of making tzdb more equitable one step at a time; see
"Merge more location-based Zones" below.