From: sxysxygm@... Date: 2018-01-20T12:01:50+00:00 Subject: [ruby-core:84945] [Ruby trunk Bug#14378] On windows, RUBY_FIXNUM_MAX of 64 bits ruby is 32 bits Issue #14378 has been updated by HfCloud (Xiangyu Shi). nobu (Nobuyoshi Nakada) wrote: > To "fix" this, or relax this limitation, we have to replace tons of `long` in the source code. Oh...I tried just now. The codes uses so large amount of '#define' to alias types' names, it makes the work more difficult..... what I only want to say is 'why didn't use typedef?...' I found that Matz once said 'IL32LLP64 platform is not hackneyed' :( ---------------------------------------- Bug #14378: On windows, RUBY_FIXNUM_MAX of 64 bits ruby is 32 bits https://bugs.ruby-lang.org/issues/14378#change-69653 * Author: HfCloud (Xiangyu Shi) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: 2.5.0 * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- 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: