[tz] [PROPOSED] zic now defaults to ‘-b slim’

Paul Eggert eggert at cs.ucla.edu
Sun Jun 21 21:54:27 UTC 2020

Make zic’s ‘-b slim’ option the default.  This option first
appeared in tzdb 2019b (2019-07-01), and is already the default in
NetBSD 9.0 (2020-02-14) and seems to be working there.  Using
slim format should help finish off the TZif format’s Y2038
transition that began in tzcode 95f (1995-10-28).
* Makefile, NEWS, zic.8: Mention this.
* zic.c (ZIC_BLOAT_DEFAULT): Default to "slim".
 Makefile | 10 +++++-----
 NEWS     |  2 ++
 zic.8    | 10 ++++------
 zic.c    |  5 ++---
 4 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/Makefile b/Makefile
index 0da7c3f..8abd4d0 100644
--- a/Makefile
+++ b/Makefile
@@ -22,6 +22,7 @@ BUGEMAIL=	tz at iana.org
 #	DATAFORM=	main
 # To wait even longer for new features, use:
 #	DATAFORM=	rearguard
+# Rearguard users might also want "ZFLAGS = -b fat"; see below.
 DATAFORM=		main
 # Change the line below for your timezone (after finding the one you want in
@@ -249,13 +250,12 @@ LDLIBS=
 #	other than simply getting garbage data
 #  -DUSE_LTZ=0 to build zdump with the system time zone library
 #	Also set TZDOBJS=zdump.o and CHECK_TIME_T_ALTERNATIVES= below.
-#  -DZIC_BLOAT_DEFAULT=\"slim\" to default zic's -b option to "slim", and
-#	similarly for "fat".  Fat TZif files work around incompatibilities
+#  -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
-#	current default is "fat" but this is intended to change as readers
-#	requiring fat files often mishandle timestamps after 2037 anyway.
+#	default is "slim".
 #	(or some other number) to set the maximum time zone abbreviation length
 #	that zic will accept without a warning (the default is 6)
@@ -390,7 +390,7 @@ ZIC=		$(zic) $(ZFLAGS)
 # To shrink the size of installed TZif files,
 # append "-r @N" to omit data before N-seconds-after-the-Epoch.
-# You can also append "-b slim" if that is not already the default;
+# To grow the files and work around older application bugs, append "-b fat";
 # see ZIC_BLOAT_DEFAULT above.
 # See the zic man page for more about -b and -r.
diff --git a/NEWS b/NEWS
index bfe02ea..6b9fd43 100644
--- a/NEWS
+++ b/NEWS
@@ -23,6 +23,8 @@ Unreleased, experimental changes
   Changes to code
+    zic now defaults to '-b slim' instead of to '-b fat'.
     zic's new '-l -' and '-p -' options uninstall any existing
     localtime and posixrules files, respectively.
diff --git a/zic.8 b/zic.8
index a431311..8d34368 100644
--- a/zic.8
+++ b/zic.8
@@ -61,15 +61,13 @@ is
 .BR slim ,
 keep the output files small; this can help check for the bugs
 and incompatibilities.
-Although the default is currently
-.BR fat ,
-this is intended to change in future
-.B zic
-versions, as software that mishandles the 64-bit data typically
+The default is
+.BR slim ,
+as software that mishandles 64-bit data typically
 mishandles timestamps after the year 2038 anyway.
 Also see the
 .B \*-r
-option for another way to shrink output size.
+option for another way to alter output size.
 .BI "\*-d " directory
 Create time conversion information files in the named directory rather than
diff --git a/zic.c b/zic.c
index c874b04..3aed819 100644
--- a/zic.c
+++ b/zic.c
@@ -661,8 +661,7 @@ static const char *	tzdefault;
 static const char *	yitcommand;
 /* -1 if the TZif output file should be slim, 0 if default, 1 if the
-   output should be fat for backward compatibility.  Currently the
-   default is fat, although this may change.  */
+   output should be fat for backward compatibility.  The default is slim.  */
 static int bloat;
 static bool
@@ -672,7 +671,7 @@ want_bloat(void)
-# define ZIC_BLOAT_DEFAULT "fat"
+# define ZIC_BLOAT_DEFAULT "slim"

More information about the tz mailing list