Dan Sugalski <[EMAIL PROTECTED]> writes:
>In an attempt to drain the swamp...
>
>So far as I can see, we need, in descending order of importance (and 
>speed) (And if there's stuff missing, add them):
>
>1) A timestamp value
>2) A way to chop the timestamp to pieces
>3) A way to turn the timestamp into a string
>4) A way to turn pieces to a timestamp
>5) A way to turn the string into a timestamp
>
>All of which is confounded by the joys of timezones and platform limitations.
>
>As far as I can tell, the only thing we can absolutely count on are:
>
>      asctime, ctime, difftime, gmtime, localtime, mktime, strftime

Everything gives you a ticks of size ? since ? hook or three.
In most places the ticks are less than second.

All the stringify and human/planet-izing seems to be library fodder.

gettimeofday() is widely available or fakeable. (Tk uses it.)
Seems $^T could start based on time(2) and then get deltas using 
something finer. Perhaps aspire to clock_gettime() and fake
that interface where not available?


>
>We can't even count on timegm, unfortunately. Neither can we count on 
>getting fractional time. (Or even really count on getting a GMT time 
>that's actually GMT, as far as that goes, but that's 
>user-misconfiguration and there's a limit to what I'm willing to care 
>about) Nor strptime for time parsing, though a case could be made 
>there that we could do our own. (Cases to be made for that should be 
>accompanied by unencumbered source to do the parsing ;) Can't even 
>count on the full range of output when splitting the time up--if you 
>check the CVS logs you'll see I yanked out a few elements because 
>they're not C89 and there wasn't any way to synthesize them easily 
>that I know of.
>
>That means we can't convert to TAI, since that needs leap second info 
>we don't have, so base time can't be TAI. From what I can tell from 
>the interfaces and long painful experience we can't convert to and 
>from anything other than the current system timezone. (Maybe. I'm not 
>100% sure that's reliable either)
>
>Right now, you can get a black-box integer timestamp that's fixed to 
>GMT time, and you can disassemble that timestamp into day/month/year 
>pieces. I adjusted the year to be a real year, but I haven't adjusted 
>the month. We can do that, though. We can easily:
>
>*) Give a float timestamp
>*) Adjust the timestamp to various base dates (I've already made my
>    preferences clear :)
>
>My general rule-of-thumb for ops is that they must:
>
>*) Be something we want to guarantee behaviour on everywhere
>*) Require C code
>*) Have a fixed signature
>
>Being primitive isn't necessary as such, but doesn't hurt. Having to 
>be required present at all times isn't necessary either, though we 
>should nail down lexical oplibs if we want to start talking about 
>secondary libraries of this stuff.
>
>Anyway, given the restrictions on what we have to work with, the 
>first question is:
>
>*) Is what we're providing correct
>*) What *aren't* we providing that we must to allow full and
>    proper date processing in modules without much pain?

Reply via email to