Issue #14378 has been updated by jeremyevans0 (Jeremy Evans).

Backport deleted (2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN)
ruby -v deleted (2.5.0)
Subject changed from On windows, RUBY_FIXNUM_MAX of 64 bits ruby  is 32 bits to Increase Fixnum range on Windows from 31 bits to 63 bits
Tracker changed from Bug to Feature

This issue is still present in the master branch.  However, the range of T_FIXNUM is an implementation detail, especially since  Integer unification in Ruby 2.4, so I do not think this is a bug.  I think we wouldn't be opposed to increasing the range of Fixnum on 64-bit Windows, but I consider that a feature request.

----------------------------------------
Feature #14378: Increase Fixnum range on Windows from 31 bits to 63 bits
https://bugs.ruby-lang.org/issues/14378#change-92592

* Author: HfCloud (Xiangyu Shi)
* Status: Open
* Priority: Normal
----------------------------------------
On windows, start an IRB of a 64-bits ruby, enter these code:

~~~ruby
(1<<29).equal?(1<<29) 
#=>true

(1<<30).equal?(1<<30)
#=>false
~~~

So, it is that FIXNUM of the 64-bits ruby is a 32-bits data?
But my friend try these code on linux platform and all got true(it means FIXNUM is 64bits) 
Then I opened ruby/ruby.h and found this:

~~~ ruby
#define RUBY_FIXNUM_MAX (LONG_MAX>>1)
~~~

The LONG_MAX of my compiler(msvc140, vs2017) is 2147483647, and the ruby which is installed by ruby-installer also have the same problem.





-- 
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>