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

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

···

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

Maybe
ruby -v
?

···

On Mon, Feb 2, 2009 at 6:45 PM, Wes Gamble <weyus@att.net> 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?

Thanks,
Wes
--
Posted via http://www.ruby-forum.com/\.

--
Pozdrawiam

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

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

···

On Mon, Feb 2, 2009 at 9:45 AM, Wes Gamble <weyus@att.net> 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

$ irb
['foo'].pack('p').size

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

-jh

···

On Tue, 3 Feb 2009 02:45:00 +0900, Wes Gamble 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?

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

···

Le 02 février à 18:45, Wes Gamble 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?

--
Hey God, why are you doing this to me ?
Am I not living up to what I'm supposed to be ?
Why am I seething with this animosity ? (Nine Inch Nails,
Hey God, i think you owe me a great big apology Terrible Lie)

In article <362105e6d11a88de8bd0b5b64c49e629@ruby-forum.com>,

···

Wes Gamble <weyus@att.net> 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).
--
Ollivier ROBERT -=- CND/COE/VI/SQ -=- EUROCONTROL
Systems Quality & Support

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

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

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

···

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

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

···

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

$ irb
['foo'].pack('p').size

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

-jh

Thanks Jonathan!

···

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

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 Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com

···

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

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

--

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

···

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

Wes Gamble <weyus@att.net> 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...

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

···

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

Wes Gamble <weyus@att.net> 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...

--