Can a Ruby program determine whether it's running on a 32-bit or64-bit system?

E

Eric Promislow

I can't go by RUBY_PLATFORM -- I'm setting up a new 32-bit Linux box,
and RUBY_PLATFORM is set to "i686-linux".

Or maybe this is a bug -- repaved machine, installed Fedora Core 9,
downloaded and built a vanilla Ruby 1.8.6 -- but I see this on another
32-bit Linux box as well (this one's a virtual host, but `cat /proc/
cpuinfo`
suggests it's 32-bit)

If anyone's wondering, this is related to the Komodo debugger. The
ruby-debug-base component is not 32/64-bit universal, so I need to
put the 32-bit binary in one dir, the 64-bit one in another, and
direct the client to the right spot.

Thanks,
Eric Promislow
 
J

Jan Dvorak

I can't go by RUBY_PLATFORM -- I'm setting up a new 32-bit Linux box,
and RUBY_PLATFORM is set to "i686-linux".
Well, i?86 means it is 32bit.
64-bit x86 system would have 'x86_64-linux'.

Jan
 
S

Suraj Kurapati

Eric said:
Can a Ruby program determine whether
it's running on a 32-bit or 64-bit system?

Yes. Look at the result of calling the 'size' method on a Fixnum; it
will be 4 on 32-bit machines, and 8 on 64-bit machines.
=> 4
 
P

Pablo Q.

[Note: parts of this message were removed to make it a legal post.]

I got 4 on 64bit Windows Server. That doesn't mean that it depends if it was
built on 64bit or 32bit, I mean ruby core.
 
F

F. Senault

Le 3 septembre 2008 à 02:42, Eric Promislow a écrit :
I can't go by RUBY_PLATFORM -- I'm setting up a new 32-bit Linux box,
and RUBY_PLATFORM is set to "i686-linux".

Pack has a support for native size :
RUBY_PLATFORM => "i386-freebsd6"
[ -1 ].pack('l!').length
=> 4

While...
RUBY_PLATFORM => "amd64-freebsd7"
[ -1 ].pack('l!').length
=> 8

(From the Pickaxe : 'Any of the directives "sSiIlL" may be followed by
an underscore (_) or bang (!) to use the underlying platform's native
size for the specified type')

Fred
 
L

Lloyd Linklater

Suraj said:
Yes. Look at the result of calling the 'size' method on a Fixnum; it
will be 4 on 32-bit machines, and 8 on 64-bit machines.

=> 4

On my 32 bit machine I get this:
p 0.size
=> 8

p [ -1 ].pack('l!').length
=> 4

I am not sure why, but there it is, fyi.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,731
Messages
2,569,432
Members
44,835
Latest member
KetoRushACVBuy

Latest Threads

Top