summaryrefslogtreecommitdiff
path: root/NEWS
diff options
context:
space:
mode:
Diffstat (limited to 'NEWS')
-rw-r--r--NEWS99
1 files changed, 98 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index eef59a2b095b..acd22280cb3a 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,100 @@
News for the tz database
+Release 2026a - 2026-03-01 22:59:49 -0800
+
+ Briefly:
+ Moldova has used EU transition times since 2022.
+ The "right" TZif files are no longer installed by default.
+ -DTZ_RUNTIME_LEAPS=0 disables runtime support for leap seconds.
+ TZif files are no longer limited to 50 bytes of abbreviations.
+ zic is no longer limited to 50 leap seconds.
+ Several integer overflow bugs have been fixed.
+
+ Changes to past and future timestamps
+
+ Since 2022 Moldova has observed EU transition times, that is, it
+ has sprung forward at 03:00, not 02:00, and has fallen back at
+ 04:00, not 03:00. (Thanks to Heitor David Pinto.)
+
+ Changes to data
+
+ Remove Europe/Chisinau from zonenow.tab, as it now agrees with
+ Europe/Athens for future timestamps.
+
+ Changes to build procedure
+
+ The Makefile no longer by default installs an alternate set
+ of TZif files for system clocks that count leap seconds.
+ Install with 'make REDO=posix_right' to get the old default,
+ which is rarely used in major downstream distributions.
+ If your system clock counts leap seconds (contrary to POSIX),
+ it is better to install with 'make REDO=right_only'.
+ This change does not affect the leapseconds file, which is still
+ installed as before.
+
+ The Makefile's POSIXRULES option, which was declared obsolete in
+ release 2019b, has been removed. The Makefile's build procedure
+ thus no longer optionally installs the obsolete posixrules file.
+
+ Changes to code
+
+ Compiling with the new option -DTZ_RUNTIME_LEAPS=0 disables
+ runtime support for leap seconds. Although this conforms to
+ POSIX, shrinks tzcode's attack surface, and is more efficient,
+ it fails to support Internet RFC 9636's leap seconds.
+
+ zic now can generate, and localtime.c can now use, TZif files that
+ hold up to 256 bytes of abbreviations, counting trailing NULs.
+ The previous limit was 50 bytes, and some tzdata TZif files were
+ already consuming 40 bytes. zic -v warns if it generates a file
+ that exceeds the old 50-byte limit.
+
+ zic -L can now generate TZif files with more than 50 leap seconds.
+ This helps test TZif readers not limited to 50 leap seconds, as
+ tzcode's localtime.c is; it has little immediate need for
+ practical timekeeping as there have been only 27 leap seconds and
+ possibly there will be no more, due to planned changes to UTC.
+ zic -v warns if its output exceeds the old 50-second limit.
+
+ localtime.c no longer accesses the posixrules file generated by
+ zic -p. Hence for obsolete and nonconforming settings like
+ TZ="AST4ADT" it now typically falls back on US DST rules, rather
+ than attempting to override this fallback with the contents of the
+ posixrules file. This removes library support that was declared
+ obsolete in release 2019b, and fixes some undefined behavior.
+ (Undefined behavior reported by GitHub user Naveed8951.)
+
+ The posix2time, posix2time_z, time2posix, and time2posix_z
+ functions now set errno=EOVERFLOW and return ((time_t) -1) if the
+ result is not representable. Formerly they had undefined behavior
+ that could in practice result in crashing, looping indefinitely,
+ or returning an incorrect result. As before, these functions are
+ defined only when localtime.c is compiled with the -DSTD_INSPIRED
+ option.
+
+ Some other undefined behavior, triggered by TZif files containing
+ outlandish but conforming UT offsets or leap second corrections,
+ has also been fixed. (Some of these bugs reported by Naveed8951.)
+
+ localtime.c no longer rejects TZif files that exactly fit in its
+ internal structures, fixing off-by-one typos introduced in 2014g.
+
+ zic no longer generates a no-op transition when
+ simultaneous Rule and Zone changes cancel each other out.
+ This occurs in tzdata only in Asia/Tbilisi on 1997-03-30.
+ (Thanks to Renchunhui for a test case showing the bug.)
+
+ zic no longer assumes you can fflush a read-only stream.
+ (Problem reported by Christos Zoulas.)
+
+ zic no longer generates UT offsets equal to -2**31 and localtime.c
+ no longer accepts them, as they can cause trouble in both
+ localtime.c and its callers. RFC 9636 prohibits such offsets.
+
+ zic -p now warns that the -p option is obsolete and likely
+ ineffective.
+
+
Release 2025c - 2025-12-10 14:42:37 -0800
Briefly:
@@ -69,6 +164,8 @@ Release 2025c - 2025-12-10 14:42:37 -0800
The new CFLAGS options -DHAVE_STRUCT_STAT_ST_CTIM=0 and
-DHAVE_STRUCT_TIMESPEC=0 port to non-POSIX.1-2008 platforms
that lack st_ctim and struct timespec, respectively.
+ On these platforms, the code falls back on st_ctime to
+ implement -DTZ_CHANGE_INTERVAL=N.
tzset etc. now treat ' ' like '_' in time zone abbreviations,
just as they treat other invalid bytes. This continues the
@@ -89,7 +186,7 @@ Release 2025c - 2025-12-10 14:42:37 -0800
The new CFLAGS option -TTHREAD_TM_MULTI causes localtime to return
a pointer to thread-specific memory, as FreeBSD does, instead of
- to the same memory in all threads. This supports unportable
+ to the same memory in all threads. This supports nonportable
programs that incorrectly use localtime instead of localtime_r.
This option affects gmtime and offtime similarly to localtime.
Because the corresponding storage is freed on thread exit, this