Issue #12005 has been updated by Jörg W Mittag.


Yui NARUSE wrote:
> CRuby has two `Integer` classes, `Fixnum` and `Bignum`.
> But it is implementation detail.
> They should be seen as a single class `Integer` like `Flonum`.

I like this very much! It always struck me as odd that `Integer` is special-cased like that. Some implementations have special-cased optimizations for small arrays or hashes (e.g. less than 6 elements), yet they don't have have a separate `SmallArray` or `SmallHash` class. Some implementations have special-cased optimizations for small objects (e.g. less than 3 instance variables), yet they don't have a separate `SmallObject` inheritance hierarchy. YARV has flonums, yet no separate `Flonum` class. And so on 
The ISO Ruby Language Specification also explicitly treats them as private internal implementation details. It only specifies the `Integer` class and then allows for "implementation-defined subclasses". (And in fact, I suspect that sentence was only put in there because `Fixnum`/`Bignum` already existed when the spec was written.)

Treating it as a private internal implementation detail would also give more freedom to implementors to choose different, more aggressive, or maybe just no optimizations at all. (The latter might be useful for very small implementations intended for embedded use, or very simple implementations intended for educational use.)

----------------------------------------
Feature #12005: Unify Fixnum and Bignum into Integer
https://bugs.ruby-lang.org/issues/12005#change-57069

* Author: Yui NARUSE
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
CRuby has two `Integer` classes, `Fixnum` and `Bignum`.
But it is implementation detail.
They should be seen as a single class `Integer` like `Flonum`.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>