ふなばです。

>現在、ネットワーク上をNTPで流通している時刻は、うるう秒をなかっ
>たものとしています。つまり、「the epochからの経過秒数 - これまで
>にあったうるう秒の秒数」が使われています。うるう秒の調整は、NTP
>上の1秒の長さで調節しているのかな。

いや、ここでの話に NTP は関係ないですよ。Marshal などで、Time を書き出
しだときに、それってポータブルだって保証できるか、できないならばそう書
いておいたほうがいいんじゃないかってことですから。

>確かにOSはうるう秒の機構を用意しているのですが、世間で広く一般に
>使われている運用ではうるう秒を無視しています。つまり、manで見ら
>れるtime_tの定義とは異なる値が得られ、その原因は世界中のシステム
>管理者が共謀して(笑)OSのマニュアルを無視した運用をしているという
>点にあります。

うーん、間違った運用でもないでしょう。仰りたいことは判るつもりです。で
すから tzfile(5) によって、どうなるか判らないと書いたわけですよ。 たぶ
ん、POSIX なんかでは考えない、ということになっていたはずだと思います。
でも、Perl や Python で閏秒なし、と書いてあるのは、 そういう意味なんで
しょうか。そのように保証している (と思われる) 処理系もある現実があって、
一方で、Ruby はそうはいっていない、 どっちにしても、それは断わっておく
べきだと思いますよ。

>というより、time(2)の値を返すと書くべきではないでしょうか。DOSや
>Windowsではどうしているのですか? 年月日時分秒からTimeへの変換を
>するときうるう秒を考慮しているかという意味ですが……。

どうも、意味がわかりませんが、DOS に time(2) ってあるんでしょうか。
わからないなあ。最初読むと、かなり一般的に通用する慣習だから閏秒はない
ものだといい切ってよいということがいいたいのかと思ったけど、time(2) そ
のままだといえということなんですね。

で、time(2) の値を返すという、いいかたがどうかは別にして、僕がみたとこ
ろ、基本的にはそういう話しになっていると思うんですが...。

time(2) そのままってのは、閏秒がはいっているかもしれんし、はいってない
かもしれないということではないですか。保証できないんだったら、そうハッ
キリ書けばよいんじゃないのかしら。

慣習だから大抵は閏秒は気にしなくてよい、でも、time(2) そのままというこ
とをいっておけば、そこには立ち入らないで済む、ということにしたいんでしょ
うか。うーん。

何度もいうようだけど、僕は Ruby がどのような方針であるのかハッキリさせ
て、責任の範囲を明確にするのが望ましいということをいっているだけです。
time(2) そのままです、でもよいとは思いますけど、だったら、1970年1月1日
云々は余計だといえましょう。徹底的に責任逃れしておくべきです :-)

--Tadayoshi Funaba