Rubyコミッターが語る Ruby2.4にてFixnumとBignumをIntergerに統合する話 #RubyKaigi #RubyKaigiA
akr「そもそも何故このようなことをするのか。まず、Fixnumと判定される幅は環境や実装に依って異なる。」#rubykaigiA #rubykaigi
2016-09-08 16:27:30「FixNumの表現範囲はプラットフォームに寄って±2^30, 2^62, 2^63など。」 1bitは符号フラグだろうけどもう1bitは何に使ってるんだろ #rubykaigi #rubykaigiA
2016-09-08 16:27:48Fixnum と Bignum は Ruby の国際規格で定義されてはないが、許容されている #rubykaigi #rubykaigiA
2016-09-08 16:29:35規格では、unboundedなIntegerが定義されているが、サブクラスは「あってもよい」という扱い。なのでFixNum, BigNumがある実装でも規格に適合してはいる。 #rubykaigi #rubykaigiA
2016-09-08 16:30:17akr「RubyにはJIS/ISOで定義された規格があり、そこではFixnumやBignumの存在は有っても良いしなくてもよい。」#rubykaigiA #rubykaigi
2016-09-08 16:31:42if(n)def RUBY_INTEGER_UNIFICATION5、6箇所しかない、これくらいでいいんだ #rubykaigi #rubykaigiA
2016-09-08 16:32:12WinのLLP64 longが32bitなのは互換性の為なんだろうなぁ。並べてみるとintもlongも32bitというのは違和感しかないのだけど。 #rubykaigi #rubykaigiA
2016-09-08 16:33:04RubyのJIS規格 JISX3017 jisc.go.jp/app/pager?%23j… #rubykaigi #rubykaigiA
2016-09-08 16:34:02つまりLinux以外でver.4294967296のgemをリリースすると例外になるのか? #rubykaigi #rubykaigiA
2016-09-08 16:34:25Fixnum のことを本当に知っていて is_a?(Fixnum) を使っているのかどうかみたいなことが起きやすい #rubykaigiA #rubykaigi
2016-09-08 16:34:43`obj.is_a?(Fixnum)` は `obj.is_a?(Integer)` と同じになる #rubykaigi #rubykaigiA
2016-09-08 16:35:06自分はどっかの時期から意識的に整数であるかをチェックする時はIntegerって書いてた気がするけど、そうでないコードを書いてた可能性もあるな。 #rubykaigiA #rubykaigi
2016-09-08 16:35:36FixNumとBigNumをIntegerに統合する利点はいろいろあって、欠点は非互換性くらい。非互換性が問題になるのは、例えばrubygems/specificationにversionがFixNumであるかの検査がある #rubykaigi #rubykaigiA
2016-09-08 16:36:081がFixnumであることは大体の人は知らない(Lispプログラマーは除く) #rubykaigi #rubykaigiA
2016-09-08 16:36:181がIntegerなことはみんな知っているが、1がFixnumだということは普通知らない #rubykaigi #rubykaigiA
2016-09-08 16:36:22