Skip to content
This repository

MacRuby is an implementation of Ruby 1.9 directly on top of Mac OS X core technologies such as the Objective-C runtime and garbage collector, the LLVM compiler infrastructure and the Foundation and ICU frameworks.

Fetching latest commit…

Cannot retrieve the latest commit at this time

bin
ext
framework committing experimental branch content
icu-1060 bye bye oniguruma, started ICU regexps
include
lib
misc
mspec
perf
rakelib
sample-macruby
sample committing experimental branch content
spec
test-macruby Removed the half implemented RubyCocoa layer for now at least. Need t…
test
test_vm
tool
.cvsignore removed autogenerated files
.document removed autogenerated files
.gitignore
COPYING
GPL committing experimental branch content
HACKING.rdoc
LEGAL
LGPL committing experimental branch content
MacRuby.m
MacRubyDebuggerConnector.h
MacRubyDebuggerConnector.m
NSArray.m
NSDictionary.m
NSString.m
README.rdoc
Rakefile ignore RUBYOPT
TODO refreshed
array.c
array.h
auto_zone_1060.h Fix auto_zone header for SL
b.rb now compile some of the VM primitives into bitcode that will be added…
bignum.c
bridgesupport.cpp
bridgesupport.h
bs.c
bs.h
bs_lex.h fixed compilation on Leopard
bs_struct_readers.c statically generate the struct reader methods, 128 seems necessary at…
class.c
class.h
compar.c
compiler.cpp
compiler.h
complex.c
cont.c include/ruby/macruby.h -> macruby_internal.h
debugger.cpp
debugger.h
dir.c
dispatcher.cpp
distruby.rb committing experimental branch content
dln.c
dln.h .rbo files are now initialized using a gcc constructor instead of an …
dmydln.c committing experimental branch content
dmyencoding.c committing experimental branch content
dmyext.c committing experimental branch content
dmytranscode.c committing experimental branch content
dtrace.d removed the insn__entry and insn__return probes now that yarv is gone
encoding.c
encoding.h
encoding_ucnv.h
enum.c
enumerator.c
env.c
error.c
eval.c
eval_error.c
eval_jump.c
eval_safe.c
exported_symbols_list
file.c
gc-stub.m
gc.c
gcd.c
gcd.h
gem_prelude.rb Updated RubyGems to 1.3.5
gen_bs_struct_readers.rb statically generate the struct reader methods, 128 seems necessary at…
golf_prelude.rb committing experimental branch content
hash.c
hash.h
id.c
id.h
inits.c
instruby.rb
interpreter.cpp
interpreter.h
io.c
irb.1 Add "See Also" sections
kernel.c
keywords committing experimental branch content
lex.c.blt committing experimental branch content
lex.c.src committing experimental branch content
lgamma_r.c committing experimental branch content
llvm.h
load.c
macruby_internal.h
main.cpp
markgc.c update copyrights to 2011
marshal.c
math.c
mt.c integrate Mersenne Twister based random number generator from 1.9 ups…
numeric.c
objc.h
objc.m
object.c
pack.c
parse.y
prec.c
proc.c
process.c
random.c
range.c
rational.c
re.c
re.h
ruby.1 committing experimental branch content
ruby.c
ruby_deploy.1
rubyc.1 Added some linker options to rubyc
rubyd.1 Add "See Also" sections
rubytest.rb committing experimental branch content
runruby.rb committing experimental branch content
sandbox.c
signal.c
sprintf.c
st.c
string.c
struct.c
symbol.c
symbol.h
test_vm.rb Fixed a few test_vm tests that were incorrect (compared to 1.9)
thread.c
time.c
transcode.c
ucnv.c
util.c
variable.c
version.c
version.h
vm.cpp
vm.h
vm_eval.c
vm_method.c
README.rdoc

MacRuby

MacRuby is a Ruby implementation based on Mac OS X technologies, such as the Objective-C runtime and garbage collector, the CoreFoundation framework and the LLVM compiler infrastructure.

It is the goal of MacRuby to enable the creation of full-fledged Mac OS X applications which do not sacrifice performance in order to enjoy the benefits of using Ruby.

MacRuby is copyrighted free software by Apple Inc and covered by the terms of the Ruby license. Please refer to the COPYING file for more information.

The project website contains more documentation, such as tutorials and guides: macruby.org

Requirements

  • An Intel machine. PowerPC machines are not supported anymore, but may still work. An Intel 64-bit machine (Intel Core Duo 2) is recommended.

  • Mac OS X 10.6 or later.

  • LLVM ToT, compiled for both i386 and x86_64.

    LLVM is a moving target and breaks periodically. We recommend to install revision tag 2.8, being sure to specify the correct C and C++ compilers through environment variables.

    $ svn co https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_28 llvm-2.8
    $ cd llvm-2.8
    $ env UNIVERSAL=1 UNIVERSAL_ARCH="i386 x86_64" CC=/usr/bin/gcc CXX=/usr/bin/g++ ./configure --enable-bindings=none --enable-optimized --with-llvmgccdir=/tmp
    $ env UNIVERSAL=1 UNIVERSAL_ARCH="i386 x86_64" CC=/usr/bin/gcc CXX=/usr/bin/g++ make
    $ sudo env UNIVERSAL=1 UNIVERSAL_ARCH="i386 x86_64" CC=/usr/bin/gcc CXX=/usr/bin/g++ make install

    Note that compiling LLVM can take quite a while. If you have a machine with multiple cores, which is quite likely, you might want to speed up the process by using all/more cores. However, doing this can make your machine unresponsive during compilation. To use multiple cores pass the `-j N' option, where `N' stands for the number of cores you'd like to use. So for a Core Duo the command would look like:

    $ env UNIVERSAL=1 UNIVERSAL_ARCH="i386 x86_64" CC=/usr/bin/gcc CXX=/usr/bin/g++ make -j2

    If you would prefer to update an existing LLVM Subversion working copy you need to be careful to remove any previous build files before you compile:

    $ svn status --no-ignore | awk '{print $2}' | xargs rm -rf
    $ svn revert -R .
    $ svn switch https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_28

Build Instructions

You can build MacRuby by doing the following command:

$ rake

Or, as with LLVM, you can specify the amount of jobs to run simultaneously:

$ rake jobs=2

Once done, you can run the RubySpec-based regression tests as well as the performance suite:

$ rake spec:ci
$ rake bench:ci

To install MacRuby on your machine:

$ sudo rake install

Then you should be all set! Please report us any problem you will find (the macruby.org website has pointers). Thanks!

Something went wrong with that request. Please try again.