Re: [LEAPSECS] What problems do leap seconds *really* create?

From: Tom Van Baak <tvb_at_LEAPSECOND.COM>
Date: Thu, 30 Jan 2003 11:41:03 -0800

> Fact 1 is that there is a *lot* of Unix code out there that depends on
> 1 day being represented by a 86400 increment in time_t, and that is what

This is correct. And add DOS, Windows, and NT.

> Fact 2 is that the old 1980s pre-POSIX Unix manuals talked about GMT and
> not UTC. This strongly suggests that the authors were unfamiliar with
> both TAI and UTC. The "seconds" they refer to behave more like UT1

This is correct.

> and not Caesium oscillations. There are in the long run as many UT1
> seconds as there are UTC-non-leap seconds. The authors of Unix also
> assumed that local civilian time zones and GMT differ only by an integer
> number of minutes (see struct timezone in man gettimeofday(2)). Today,
> most local civilian times and UTC have exactly that connection.

Your comment about the word GMT vs. UTC is
correct. I would add further that struct timezone
and gettimeofday are much later BSD additions
and were not part of any early versions of Bell
Labs UNIX. (You can tell because only the Berkeley
guys used a compiler that supported long names;
we were limited to 8 characters).

I worked on System III UNIX at Bell Labs and the
only support for time zones was the TZ environment
variable - which only supported signed integer hour

This was all we needed. I worked on GCOS prior
to that and it ran on local time, even if you were
a dial-up timeshare user. UNIX was really cool
because each dial-up user could set his own time
zone. After working on a mainframe that displayed
time only in fractional millihours, I can't tell you
how cool it was that UNIX used a double-register
(32-bit) integer to encode the time of day, had a
TZ variable, and displayed time as HH:MM:SS.
And all this at 2400 baud instead of 300. It was
very clever.

As far as I remember in the code, and in practice,
time_t was just a cute way to encode a date;
nothing more. There was no more thought about
leap seconds on our PDP 11/34 than on my wrist
watch. After all, we usually turned the computers
off every night when we left work. The thought of
a computer, back then, being a continuous count
of sacred SI seconds is ridiculous. That's what
WWV was for. When the computer time was too
wrong, you just set it right. Remember also that
none of these computers had battery clocks so
you had to reset the clock every time you booted.
I remember how cool the first DOS PC I saw was
because it kept time across a boot. It was very

> Therefore we can conclude very convincingly that UTC non-leap seconds
> represent the best modern interpretation of what the authors of Unix had
> in mind. And POSIX.1-2001 wisely does specify now exactly that.
> I rest my case.
> Are there any more interesting problems with leap seconds than
> misinterpretations of old Unix manuals?
> Markus

So, I think I'm agreeing with you, Markus.

The point is, anyone that thinks 1970's UNIX was
some kind of sophisticated operating system with
a modern timescale algorithm just wasn't there.

Received on Thu Jan 30 2003 - 11:51:45 PST

This archive was generated by hypermail 2.3.0 : Sat Sep 04 2010 - 09:44:54 PDT