From: Yukihiro Matsumoto Date: 2011-03-26T21:28:25+09:00 Subject: [ruby-dev:43361] [Ruby 1.9 - Feature #4529] date_core と long 型 Issue #4529 has been updated by Yukihiro Matsumoto. longを採用した理由が開示していただけてないのでなんとも言えませんが、intとlongを揃えたほうが良い(かつlongは避けたほうが良い)というのは、なんらかの対応をしていただけると良いと思います。 ---------------------------------------- Feature #4529: date_core と long 型 http://redmine.ruby-lang.org/issues/4529 Author: Yui NARUSE Status: Rejected Priority: Normal Assignee: tadayoshi funaba Category: ext Target version: おそらく既にご存じの通り、最近 date_core も含めて ext 中の shorten-64-to-32 を直しています。 それに際して date_core をいじっていて気づいたのですが、ユリウス日や年を long で保持したり int で保持したりしています。 int と long が混在していると、long から int へのキャスト時にオーバーフローが起こりえますし、 そもそも long は * 環境によってサイズが違う (int も 理屈の上では違うはずだが、CRuby では 32bit しか確認してない) * long は mswin64 でだけポインタとサイズが違うので、Unix な人には気づきづらいバグの温床になる というような懸念があるので、特に理由が無いのであれば、int にするか、int64_t にするかした方がよいかと思います。 (CRuby は C90 だが、int64_t を configure で定義している) 例えば int に統一する場合のパッチは以下の通りです -- http://redmine.ruby-lang.org