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

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Bb4bdf2b184027bc38d4fb529770cde5?d=identicon&s=25 Wes Gamble (weyus)
on 2009-02-02 18:45
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
Aaca034456897ccbc8bb14953c4a41c1?d=identicon&s=25 Radosław Bułat (radarek)
on 2009-02-02 18:56
(Received via mailing list)
On Mon, Feb 2, 2009 at 6:45 PM, Wes Gamble <weyus@att.net> 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
90a73d9875462aaa9fab2feffafbffe7?d=identicon&s=25 Ben Bleything (Guest)
on 2009-02-02 18:59
(Received via mailing list)
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

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
Bb4bdf2b184027bc38d4fb529770cde5?d=identicon&s=25 Wes Gamble (weyus)
on 2009-02-02 19:01
> 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
768df2956f8f464c76cb2dcedcd29a50?d=identicon&s=25 Jonathan Hudson (Guest)
on 2009-02-02 19:12
(Received via mailing list)
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?
>

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

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

-jh
Bb4bdf2b184027bc38d4fb529770cde5?d=identicon&s=25 Wes Gamble (weyus)
on 2009-02-02 19:16
>
> $ irb
> ['foo'].pack('p').size
>
> 8 on 64bit, 4 on 32bit. At least on Linux (and hopefully everywhere).
>
> -jh

Thanks Jonathan!
B57c5af36f5c1f33243dd8b2dd9043b1?d=identicon&s=25 F. Senault (Guest)
on 2009-02-02 19:30
(Received via mailing list)
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?

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
89ce85e3dcd8f339c3bb5c7b1b1e1cf9?d=identicon&s=25 Timo Geusch (Guest)
on 2009-02-02 21:47
(Received via mailing list)
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...
Cb6bbc826cd7d9238a2fae344958f7ec?d=identicon&s=25 Sandor Szücs (Guest)
on 2009-02-02 22:52
(Received via mailing list)
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
C215c6ac79d6bc891dd6a2f4f74aff71?d=identicon&s=25 Ollivier Robert (Guest)
on 2009-02-03 10:55
(Received via mailing list)
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).
6bdc6b64f46bbb6dd6e84b5ba68385fc?d=identicon&s=25 hengist podd (has)
on 2009-02-03 13:07
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
Ef3aa7f7e577ea8cd620462724ddf73b?d=identicon&s=25 Rob Biedenharn (Guest)
on 2009-02-03 14:32
(Received via mailing list)
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 Biedenharn    http://agileconsultingllc.com
Rob@AgileConsultingLLC.com
Bec38d63650c8912b6ba9b557fb953b9?d=identicon&s=25 Roger Pack (rogerdpack)
on 2009-04-10 20:35
> 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 :)

Cheers!
-=r
4a9cd711ccb80f1ab3ce17450c2857e4?d=identicon&s=25 Greg Willits (-gw-)
on 2009-06-29 19:05
> 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
This topic is locked and can not be replied to.