How to tell if one is running 32 or 64 bit Ruby on Mac OS X?


#1

All,

A friend just bought a new Mac and is trying to figure out whether they
have 32 or 64 bit Ruby installed. This is the output of "file which ruby":

/usr/bin/ruby: Mach-O universal binary with 2 architectures
/usr/bin/ruby (for architecture ppc7400): Mach-O executable ppc
/usr/bin/ruby (for architecture i386): Mach-O executable i386

Can’t really tell from this. Does anyone know definitively if Mac OS X
is still shipping with a 32 - bit version of Ruby or if there is a way
to check?

Thanks,
Wes


#2

On Mon, Feb 2, 2009 at 6:45 PM, Wes G. removed_email_address@domain.invalid wrote:

Can’t really tell from this. Does anyone know definitively if Mac OS X
is still shipping with a 32 - bit version of Ruby or if there is a way
to check?

Thanks,
Wes

Posted via http://www.ruby-forum.com/.

Maybe
ruby -v
?


Pozdrawiam

Rados³aw Bu³at
http://radarek.jogger.pl - mój blog


#3

On Mon, Feb 2, 2009 at 9:45 AM, Wes G. removed_email_address@domain.invalid wrote:

/usr/bin/ruby: Mach-O universal binary with 2 architectures
/usr/bin/ruby (for architecture ppc7400): Mach-O executable ppc
/usr/bin/ruby (for architecture i386): Mach-O executable i386

I can’t say with 100% conviction, but i386 is a 32-bit platform, so my
guess would be that you’re running a 32-bit Ruby.

Quick way to find out: download and build (but don’t install!) Ruby,
taking care to enable 64-bit. Then run your new ruby with -v and see
what it outputs.

Ben


#4

On Tue, 3 Feb 2009 02:45:00 +0900, Wes G. wrote:

Can’t really tell from this. Does anyone know definitively if Mac OS X
is still shipping with a 32 - bit version of Ruby or if there is a way
to check?

$ irb
[‘foo’].pack(‘p’).size

8 on 64bit, 4 on 32bit. At least on Linux (and hopefully everywhere).

-jh


#5

Maybe
ruby -v
?

Output of ruby -v:

ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]

Does “universal-darwin9.0” imply 32-bit?

Wes


#6

Le 02 février à 18:45, Wes G. a écrit :

Can’t really tell from this. Does anyone know definitively if Mac OS X
is still shipping with a 32 - bit version of Ruby or if there is a way
to check?

I’d try this :

ruby -rrbconfig -rpp -e ‘pp Config::CONFIG’

In my case (no MacOSX, though), I see things like this :

“arch”=>“amd64-freebsd7”
“sitearch”=>“amd64-freebsd7”,
“host_cpu”=>“amd64”,

Etc.

Fred


#7

$ irb
[‘foo’].pack(‘p’).size

8 on 64bit, 4 on 32bit. At least on Linux (and hopefully everywhere).

-jh

Thanks Jonathan!


#8

Wes G. removed_email_address@domain.invalid writes:

Maybe
ruby -v
?

Output of ruby -v:

ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]

Does “universal-darwin9.0” imply 32-bit?

Not really - a universal binary is one that works both on the older
PowerPC architecture and the Intel Macs…


#9

In article removed_email_address@domain.invalid,
Wes G. removed_email_address@domain.invalid wrote:

/usr/bin/ruby: Mach-O universal binary with 2 architectures
/usr/bin/ruby (for architecture ppc7400): Mach-O executable ppc
/usr/bin/ruby (for architecture i386): Mach-O executable i386

Can’t really tell from this. Does anyone know definitively if Mac OS X
is still shipping with a 32 - bit version of Ruby or if there is a way
to check?

A 64-bit binary will show x86_64 and ppc64:

1011 [0:41] roberto@rron:yarv/build> file =trn
/usr/local/bin/trn: Mach-O 64-bit executable x86_64

(my trn is not universal but it is a 64 bit one).


#10

On 02.02.2009, at 21:45, Timo Geusch wrote:

Does “universal-darwin9.0” imply 32-bit?

Not really - a universal binary is one that works both on the older
PowerPC architecture and the Intel Macs…

Just to add a universal binary is a container binary, in which you
can add several CPU architectures. Use `lipo’ if you want more
information or add/delete architectures.

$ lipo -detailed_info /usr/bin/ruby
Fat header in: /usr/bin/ruby
fat_magic 0xcafebabe
nfat_arch 2
architecture ppc7400
cputype CPU_TYPE_POWERPC
cpusubtype CPU_SUBTYPE_POWERPC_7400
offset 4096
size 13776
align 2^12 (4096)
architecture i386
cputype CPU_TYPE_I386
cpusubtype CPU_SUBTYPE_I386_ALL
offset 20480
size 17824
align 2^12 (4096)

If you want to run it on a specific platform use `arch’
$ arch -arch x86_64 /usr/bin/ruby
arch: posix_spawnp: /usr/bin/ruby: Bad CPU type in executable
zsh: exit 1 arch -arch x86_64 /usr/bin/ruby
$ arch -arch ppc /usr/bin/ruby
^C

The manpage of `arch’ :
-------------8<-------------
The arch_name argument must be one of the currently supported
architectures:

        i386    32-bit intel

        ppc     32-bit powerpc

        ppc64   64-bit powerpc

        x86_64  64-bit intel

------------->8-------------

regards, Sandor
Sz


#11

A friend just bought a new Mac and is trying to figure out whether they
have 32 or 64 bit Ruby installed.

As a note for linode users, you should probably install the 32 bit
version of your OS instead of the 64 bit version so that your rails
processes use half as much memory :slight_smile:

Cheers!
-=r


#12

Wes G. wrote:

All,

A friend just bought a new Mac and is trying to figure out whether they
have 32 or 64 bit Ruby installed. This is the output of "file which ruby":

/usr/bin/ruby: Mach-O universal binary with 2 architectures
/usr/bin/ruby (for architecture ppc7400): Mach-O executable ppc
/usr/bin/ruby (for architecture i386): Mach-O executable i386

Can’t really tell from this. Does anyone know definitively if Mac OS X
is still shipping with a 32 - bit version of Ruby or if there is a way
to check?

The stock Ruby 1.8.6 installation on 10.5 consists of a 4-way fat (ppc +
ppc64 + i386 + x86_64) framework build which you’ll find in
/System/Library/Frameworks, with a 32-bit fat command line interpreter
symlinked to /usr/bin/ruby. This means Ruby will run as 32-bit in 32-bit
processes (e.g. when running scripts via /usr/bin/ruby) and as 64-bit in
64-bit processes.

HTH

has

Control AppleScriptable applications from Python, Ruby and ObjC:
http://appscript.sourceforge.net


#13

On Feb 3, 2009, at 7:07 AM, hengist podd wrote:

/usr/bin/ruby (for architecture i386): Mach-O executable i386
/System/Library/Frameworks, with a 32-bit fat command line interpreter
Control AppleScriptable applications from Python, Ruby and ObjC:
http://appscript.sourceforge.net

This came up at least once before so a search of the archive may yield
a better answer, but one possible way is to see how big a Fixnum is in
bytes:

$ ruby -v
ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]
$ ruby -e “puts 1.size”
4

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid


#14

The stock Ruby 1.8.6 installation on 10.5 consists of a 4-way fat (ppc +
ppc64 + i386 + x86_64) framework build which you’ll find in
/System/Library/Frameworks, with a 32-bit fat command line interpreter
symlinked to /usr/bin/ruby. This means Ruby will run as 32-bit in 32-bit
processes (e.g. when running scripts via /usr/bin/ruby) and as 64-bit in
64-bit processes.

So, /usr/bin/ruby invokes the 32-bit version, how do we invoke the
64-bit version?

– gw