[#49270] [Ruby trunk - Feature #11558] Time related C APIs — akr@...
Issue #11558 has been updated by Akira Tanaka.
7 messages
2015/09/30
[#49275] Re: [Ruby trunk - Feature #11558] Time related C APIs
— KOSAKI Motohiro <kosaki.motohiro@...>
2015/09/30
>> 既存の非公開APIを公開してください。
[#49278] Re: [Ruby trunk - Feature #11558] Time related C APIs
— Tanaka Akira <akr@...>
2015/10/01
2015年10月1日 7:03 KOSAKI Motohiro <kosaki.motohiro@gmail.com>:
[ruby-dev:49275] Re: [Ruby trunk - Feature #11558] Time related C APIs
From:
KOSAKI Motohiro <kosaki.motohiro@...>
Date:
2015-09-30 22:03:09 UTC
List:
ruby-dev #49275
>> 既存の非公開APIを公開してください。 >> struct tm * localtime_with_gmtoff_zone(const time_t *t, struct tm *result, long *gmtoff, const char **zone); > > time_t を使うと 2038年問題を考慮しないといけないので、よくないと思います。 > struct tm を使うと (tm_year が int なので) 2**31年問題を考慮しないといけないので、よくないと思います。 > zone を char * で返すのはメモリ管理に責任を持てなくなるので、よくないと思います。 横から失礼します。time_t問題、OS絡みでもあるので、今後の方針とか知りたいです。 まず、time_tが32bitなOSって、いまどのくらい残ってるのでしょうか。わたしの認識だとLinuxとWindowsが 問題ありで、BSDが解決済みだったのですが、あってます? 前にAkrさんが調べてた気がしたのですが、簡単にぐぐった限りでは見つけられませんでした。 現在、Linuxではtime_tに関連するすべてのsyscallに64bit time_t版のsyscallが追加されていっています。 ユーザー空間の以降についてはglibcの対応方針がまだ確定ではないのですが、おそらく 64bit off_tのときのように 1.gettimeofday64() のような64bit time_tのnew syscallが大量にできる 2.TIME_BITS=64 みたいなdefine (この名前はまだ未確定)をすると、time_tが64bitに差し替わり、自動的にgettimeofday()等もgettimeofday64()を呼ぶよう差し替えられる 3.最終的には TIME_BITS=64 がデフォルトにする という移行パスになりそう。 さて、この場合に、Rubyがあるメジャー版Upのときに、TIME_BITS=64を追加したら、どのくらいの人がギャっというでしょうか? いまはバイナリオンリーな拡張なんてないから実は困らない? そして、もし、TIME_BITS=64 が出来たとして、RubyとしてはメジャーOSがだいたいtime_t問題を解決してくれれば time_t を使い続けるのに 問題ない? それとも、2038年問題以外にも、ほかに問題ありますか? というあたりが分かっていないので、識者のご意見うかがわせていただきたく。