Time Library Organisation

Aaron Denney wnoise at ofb.net
Thu Jan 27 14:41:14 EST 2005

On 2005-01-27, Simon Marlow <simonmar at microsoft.com> wrote:
> On 27 January 2005 17:06, Daan Leijen wrote:
>> Marcin 'Qrczak' Kowalczyk wrote:
>>> You can't have gettimeofday() returning UTC and libtai returning TAI
>>> at the same time, because they return the same thing. This is the
>>> implementation from libtai: 
>>> [snip]
>>  >
>>> DJB (the author of libtai) disagrees with POSIX about what
>>> gettimeofday should return, and assumes that it actually returns
>>> what he wishes it returned.

More accurately, he expects admins to set it to TAI, and not run
programs that set it to other than non-TAI.

>> Wow, that is terrible! Well, we can not fix libraries. If libtai is
>> that broken, we can just as well do it ourselves:
> That's pretty much the conclusion I came to when I looked at libtai for
> implementing my library.

The thing is that POSIX or not, storing UTC in a time_t is clearly
broken.  There are people working on systems that store TAI (or TAI +
fixed offset) in time_t, with special NTP daemons or patches to the
standard ones.  I would really like the ability to have Haskell programs
do exactly the right thing in such an environment.

This can't be autodetected, short of a network probe of a timeserver
though, and even that will just be a heuristic.  The only way to fix
this is to let people explicitly tell the library that they're on such
a system.

It'd be convenient if there were, say, environment variables defined for
this purpose.  (Or another convenient system.  A file would be fine too,
but I think environment variable would involve the least overhead.)

> You can't assume that time_t is not being adjusted for leap seconds: the
> host might be running NTP, for example.  The best thing to do seems to
> be to assume that time_t is a count of seconds since the epoch minus
> leap seconds, and calculate TAI from that.  It might be wrong by up to a
> second around a leap second on a host running NTP, and slightly more
> wrong on a host not running NTP, but the latter probably don't care too
> much about second-accuracy anyway.

Certainly the best default at this time.

Aaron Denney

More information about the Libraries mailing list