Skip to content

Commit

Permalink
Squashed 'tz/' changes from c4eb3fcf2..623631d84
Browse files Browse the repository at this point in the history
d3dc2a9d6 Release 2022f
2050724fa Most of Mexico will no longer observe DST
4b85935bd * NEWS: Tweak Ontario commentary.
45e1ad619 Fix usage of __has_include
44f77c4fb Fix recently-introduced zic infloop
21b8279fc Omit _LARGE_FILES, _DARWIN_USE_64_BIT_INODE
cfb514be7 Don’t include <sys/type.h>
918650731 Fiji no longer observes DST
fdd270534 Fix zdump undefined behavior if !USE_LTZ
979b1c401 * zic.c (S_ISLNK) [!HAVE_SYMLINK]: Remove no-longer-used macro.
127469a6a Default time_t to 64 bits on glibc 2.34+ 32-bit
3c87cfcc1 * zic.c: No space before paren
caa9ae32d Tune qsort usage slightly
bbbb46c76 Remove zic workaround for Qt bug 53071
e2effc43c Port zic.c better to non-2’s-complement
b19d522e4 Avoid macros in zic.c when easy
0eff62a6d Prefer C23 'alignof' to C11 '_Alignof'
9242f6c08 Remove duplicate HAVE_GENERIC definition
859973290 Preserve columns more nicely in vanguard form
243ed3c1d Avoid undefined behavior if no Link lines
3620a330c Vanguard form now uses links to links
4878b644b zic now supports links to links
d04a4b310 Improve zic -v performance on links to links
846c28d0e Refactor zic to record input line order
ff1ea7b00 Fix line number in “link to link” diagnostic
0733c65c1 Improve randomness of zic temp file names
53943486d Use C23 'unreachable' if available
e5b2ee634 Use C23 __has_include if available
6566d3d11 Port better to C23 bool
c1466b283 Coalesce some commentary
164727dad Improve checking for shortcut links
34c466276 Reorder 'backward’
02fc17f6b Move most remaining links to ‘backward’
02fb5dae5 Move a few links to ‘backward’
b494c1c43 Fix typos in previous change
2cf08a797 Simplify four Ontario zones into one
38e002402 * Makefile: Warn about bugs triggered by -b fat.
cd8e42fd8 Fix Y2438 bug when reading fat TZif files

git-subtree-dir: tz
git-subtree-split: 623631d84606c4e9517edc67cd406c6b1fd389cb
  • Loading branch information
stub42 committed Oct 31, 2022
1 parent 872168c commit 5797f88
Show file tree
Hide file tree
Showing 22 changed files with 1,191 additions and 824 deletions.
40 changes: 26 additions & 14 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,8 @@ LDLIBS=
# -DHAVE_DECL_ENVIRON if <unistd.h> declares 'environ'
# -DHAVE_DIRECT_H if mkdir needs <direct.h> (MS-Windows)
# -DHAVE_GENERIC=0 if _Generic does not work
# -DHAVE_GETTEXT if 'gettext' works (e.g., GNU/Linux, FreeBSD, Solaris)
# -DHAVE_GETRANDOM if getgrandom works (e.g., GNU/Linux)*
# -DHAVE_GETTEXT if 'gettext' works (e.g., GNU/Linux, FreeBSD, Solaris)*
# -DHAVE_INCOMPATIBLE_CTIME_R if your system's time.h declares
# ctime_r and asctime_r incompatibly with the POSIX standard
# (Solaris when _POSIX_PTHREAD_SEMANTICS is not defined).
Expand All @@ -222,16 +223,17 @@ LDLIBS=
# -DHAVE_MALLOC_ERRNO=0 if malloc etc. do not set errno on failure.
# -DHAVE_POSIX_DECLS=0 if your system's include files do not declare
# functions like 'link' or variables like 'tzname' required by POSIX
# -DHAVE_SETENV=0 if your system lacks the setenv function
# -DHAVE_SNPRINTF=0 if your system lacks the snprintf function
# -DHAVE_STDBOOL_H if you have a non-C99 compiler with <stdbool.h>
# -DHAVE_STDINT_H if you have a non-C99 compiler with <stdint.h>
# -DHAVE_STDINT_H if you have a non-C99 compiler with <stdint.h>*
# -DHAVE_STRFTIME_L if <time.h> declares locale_t and strftime_l
# -DHAVE_STRDUP=0 if your system lacks the strdup function
# -DHAVE_STRTOLL=0 if your system lacks the strtoll function
# -DHAVE_SYMLINK=0 if your system lacks the symlink function
# -DHAVE_SYS_STAT_H=0 if your compiler lacks a <sys/stat.h>
# -DHAVE_SYS_STAT_H=0 if your compiler lacks a <sys/stat.h>*
# -DHAVE_TZSET=0 if your system lacks a tzset function
# -DHAVE_UNISTD_H=0 if your compiler lacks a <unistd.h>
# -DHAVE_UNISTD_H=0 if your compiler lacks a <unistd.h>*
# -DHAVE_UTMPX_H=0 if your compiler lacks a <utmpx.h>*
# -Dlocale_t=XXX if your system uses XXX instead of locale_t
# -DRESERVE_STD_EXT_IDS if your platform reserves standard identifiers
# with external linkage, e.g., applications cannot define 'localtime'.
Expand All @@ -254,14 +256,17 @@ LDLIBS=
# Also set TZDOBJS=zdump.o and CHECK_TIME_T_ALTERNATIVES= below.
# -DZIC_BLOAT_DEFAULT=\"fat\" to default zic's -b option to "fat", and
# similarly for "slim". Fat TZif files work around incompatibilities
# and bugs in some TZif readers, notably readers that mishandle 64-bit
# data in TZif files. Slim TZif files are more efficient and do not
# work around these incompatibilities and bugs. If not given, the
# default is "slim".
# and bugs in some TZif readers, notably older ones that
# ignore or otherwise mishandle 64-bit data in TZif files;
# however, fat TZif files may trigger bugs in newer TZif readers.
# Slim TZif files are more efficient, and are the default.
# -DZIC_MAX_ABBR_LEN_WO_WARN=3
# (or some other number) to set the maximum time zone abbreviation length
# that zic will accept without a warning (the default is 6)
# $(GCC_DEBUG_FLAGS) if you are using recent GCC and want lots of checking
#
# * Options marked "*" can be omitted if your compiler is C23 compatible.
#
# Select instrumentation via "make GCC_INSTRUMENT='whatever'".
GCC_INSTRUMENT = \
-fsanitize=undefined -fsanitize-address-use-after-scope \
Expand Down Expand Up @@ -397,8 +402,9 @@ ZIC= $(zic) $(ZFLAGS)

# To shrink the size of installed TZif files,
# append "-r @N" to omit data before N-seconds-after-the-Epoch.
# To grow the files and work around older application bugs, append "-b fat";
# see ZIC_BLOAT_DEFAULT above.
# To grow the files and work around bugs in older applications,
# possibly at the expense of introducing bugs in newer ones,
# append "-b fat"; see ZIC_BLOAT_DEFAULT above.
# See the zic man page for more about -b and -r.
ZFLAGS=

Expand Down Expand Up @@ -818,13 +824,19 @@ check_slashed_abbrs: $(TDATA_TO_CHECK)
CHECK_CC_LIST = { n = split($$1,a,/,/); for (i=2; i<=n; i++) print a[1], a[i]; }
check_sorted: backward backzone iso3166.tab zone.tab zone1970.tab
$(AWK) '/^Link/ {print $$3}' backward | LC_ALL=C sort -cu
$(AWK) '/^Link/ {printf "%.5d %s\n", g, $$3} /^$$/ {g++}' \
backward | LC_ALL=C sort -cu
$(AWK) '/^Zone/ {print $$2}' backzone | LC_ALL=C sort -cu
touch $@
check_links: checklinks.awk $(TDATA_TO_CHECK) tzdata.zi
$(AWK) -f checklinks.awk $(TDATA_TO_CHECK)
$(AWK) -f checklinks.awk tzdata.zi
$(AWK) \
-v DATAFORM=$(DATAFORM) \
-v backcheck=backward \
-f checklinks.awk $(TDATA_TO_CHECK)
$(AWK) \
-v DATAFORM=$(DATAFORM) \
-f checklinks.awk tzdata.zi
touch $@
check_tables: checktab.awk $(YDATA) backward $(ZONETABLES)
Expand Down
101 changes: 101 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
@@ -1,5 +1,106 @@
News for the tz database

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.

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:
Expand Down
Loading

0 comments on commit 5797f88

Please sign in to comment.