[tz] Java & Rearguard
eggert at cs.ucla.edu
Mon Jun 3 20:19:59 UTC 2019
On 6/3/19 9:44 AM, Fred Gleason wrote:
> I find it significant that POSIX apparently ended up ditching an entire
> API element in favor of adding a model capabale of handling the full
> complexities of civil timekeeping (as they were understood at the
> time); a move which surely must have caused heartburn for many POSIX-
> based applications in use at that time.
I suppose it must have caused some problems, although the applications
world was smaller then. I don't recall any problems being publicized.
The precise road to the current spec for POSIX TZ strings is a bit
obscure to me. I vaguely recall that in 7th Edition Unix the time zone
was a kernel setting (and perhaps you had to rebuild the kernel?);
presumably this inspired the gettimeofday API you mention, which was
introduced some time between 4BSD (1980-10) and 4.1cBSD (1982-12), and
was declared obsolete sometime between 4.3BSD Reno (1990-06) and 4.4BSD
(1993-06); presumably Linux (released before 4.4BSD came out) picked up
the API from 4.3BSD.
At some point the time zone was put into the user environment via the TZ
variable, but only the forms TZ=XXXn and TZ-XXXnYYY were supported, with
US daylight-saving rules being hardcoded in the C library; I don't know
when and where this was first done, but it made the kernel setting (and
thus the 2nd argument of gettimeofday) obsolete. However, this didn't
work for non-US rules and vendors had nonportable ways to address this.
In July 1986 the US changed its daylight-saving rules (effective April
1987) and by then it surely had became clear to everybody that something
better had to be done. The POSIX committee settled on something close to
the current TZ design in the first POSIX edition in 1988, where they
purposely did not standardize gettimeofday and suggested that something
would be standardized later; by the time gettimeofday made it into POSIX
its timezone argument was completely vestigial.
It's possible the POSIX TZ design was a committee invention, and did not
reflect any specific implementation at the time. Guy Harris and Arthur
David Olson would likely know the history better, as they were active in
this area then. The rationale of POSIX 1003.1-1988 cites the early tzdb
work as the "Olson/Harris method" and says it would be a conforming
extension to POSIX if it were fixed up a bit (which it was, eventually).
More information about the tz