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 Make ruby_deploy cleanup .rb files properly when using --compile
ext
framework committing experimental branch content
icu-1060 ignore warning of return-type-c-linkage in ICU header for clang
include
lib
misc Make installer setup Xcode integration as root
mspec
perf add perf_string.rb to do benchmark of string
plblockimp just compile plblockimp when need it
rakelib
sample-macruby update README.rdoc in sample-macruby
sample committing experimental branch content
spec
test-macruby Remove references to hotcocoa from the MacRuby sources
test-mri
test_vm implemented rb_provided() and rb_feature_provided(). these come from …
tool removed rb_nibtool.old
.document Make macri parse all relevant source files (GH-85)
.gdbinit add GDB trick
.gitignore rename the architecture name to i386 from invalid X86_32
BSDL update copyright in BSDL
COPYING update to new ruby license
ChangeLog.markdown update ChangeLog
GPL committing experimental branch content
HACKING.rdoc add GDB trick
LEGAL Move plblockimp license information to LEGAL
LGPL committing experimental branch content
MacRuby.m Change ownership to The MacRuby Team and update copyrights
MacRubyDebuggerConnector.h Change ownership to The MacRuby Team and update copyrights
MacRubyDebuggerConnector.m Change ownership to The MacRuby Team and update copyrights
NSArray.m
NSDictionary.m
NSString.m Symbol#dup raises a TypeError
README.rdoc Note in the README that you can make installation less noisy
Rakefile Remove xcode_support from the standard rakefile installation
TODO Remove instruby.rb now that porting is complete
array.c
array.h move the implementation about #hash from Array to NSArray, in order t…
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 suppress warning of loop empty body
bridgesupport.cpp
bridgesupport.h Change ownership to The MacRuby Team and update copyrights
bs.c Change ownership to The MacRuby Team and update copyrights
bs.h Change ownership to The MacRuby Team and update copyrights
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 Change ownership to The MacRuby Team and update copyrights
compar.c Change ownership to The MacRuby Team and update copyrights
compiler.cpp
compiler.h should not raise an exception, so implement vm_fast_mod(). fix #1471
complex.c
cont.c include/ruby/macruby.h -> macruby_internal.h
debugger.cpp Change ownership to The MacRuby Team and update copyrights
debugger.h Change ownership to The MacRuby Team and update copyrights
dir.c Change ownership to The MacRuby Team and update copyrights
dispatcher.cpp
distruby.rb committing experimental branch content
dln.c Change ownership to The MacRuby Team and update copyrights
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 Change ownership to The MacRuby Team and update copyrights
encoding.h fix the struct declarations
encoding_ucnv.h Change ownership to The MacRuby Team and update copyrights
enum.c Change ownership to The MacRuby Team and update copyrights
enumerator.c use RARRAY_LENINT() to pass the value into int type arguments
env.c ENV#[]= raises an exception if the key contains the '=' like a 'foo='
error.c add rb_vm_check_call() and use its function to check/call the method
eval.c add rb_vm_check_call() and use its function to check/call the method
eval_error.c Change ownership to The MacRuby Team and update copyrights
eval_jump.c Change ownership to The MacRuby Team and update copyrights
eval_safe.c Change ownership to The MacRuby Team and update copyrights
exported_symbols_list should not raise an exception, so implement vm_fast_mod(). fix #1471
file.c File::Stat#inspect will not raise an exception if passed uninitialize…
gc-stub.m
gc.c
gcd.c Make Dispatch::Queue#apply documentation less misleading
gcd.h Change ownership to The MacRuby Team and update copyrights
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 fix the struct declarations
id.c Change ownership to The MacRuby Team and update copyrights
id.h Change ownership to The MacRuby Team and update copyrights
inits.c Change ownership to The MacRuby Team and update copyrights
interpreter.cpp Change ownership to The MacRuby Team and update copyrights
interpreter.h Change ownership to The MacRuby Team and update copyrights
io.c Object#display will raise an exception if passed nil
irb.1 Add "See Also" sections
kernel.c fix an overflow by multiplying
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 now depend on revision 127367 of branch LLVM 2.9
load.c Change ownership to The MacRuby Team and update copyrights
macruby_internal.h Use plblockimp to provide imp_implementationWithBlock() for OS X 10.6…
main.cpp Change ownership to The MacRuby Team and update copyrights
markgc.c update copyrights to 2011
marshal.c keep the Object's status of untrusted
math.c Change ownership to The MacRuby Team and update copyrights
mt.c integrate Mersenne Twister based random number generator from 1.9 ups…
numeric.c Change ownership to The MacRuby Team and update copyrights
objc.h Change ownership to The MacRuby Team and update copyrights
objc.m Change ownership to The MacRuby Team and update copyrights
object.c add the implementation of Object#singleton_class
pack.c Change ownership to The MacRuby Team and update copyrights
parse.y RSTRING_PTR() returns (char *) instead of (const char *) like CRuby b…
prec.c Change ownership to The MacRuby Team and update copyrights
proc.c Change ownership to The MacRuby Team and update copyrights
process.c RSTRING_PTR() returns (char *) instead of (const char *) like CRuby b…
random.c Change ownership to The MacRuby Team and update copyrights
range.c
rational.c remove the unused definition
re.c
re.h
ruby.1 committing experimental branch content
ruby.c Change ownership to The MacRuby Team and update copyrights
ruby_deploy.1 cover new --gem and --bs options
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 Change ownership to The MacRuby Team and update copyrights
signal.c Change ownership to The MacRuby Team and update copyrights
sprintf.c Change ownership to The MacRuby Team and update copyrights
st.c fix incorrect using of GC_WB()
strftime.c move PRI_TIMET_PREFIX definition into ruby.h
string.c
struct.c use RARRAY_LENINT() to pass the value into int type arguments
symbol.c implement Symbol#succ
symbol.h Change ownership to The MacRuby Team and update copyrights
test_vm.rb supported show known problems.
thread.c Thread.new will be accepted even if ThreadGroup#add is not accepted b…
time.c
timev.h update MacRuby's older Time class with CRuby 1.9.2
transcode.c Change ownership to The MacRuby Team and update copyrights
ucnv.c Change ownership to The MacRuby Team and update copyrights
util.c made static to get rid of name clash
variable.c
version.c Change ownership to The MacRuby Team and update copyrights
version.h Flip RELEASE_YEAR and BIRTH_YEAR so RUBY_COPYRIGHT makes sense
vm.cpp
vm.h
vm_eval.c use RARRAY_LENINT() to pass the value into int type arguments
vm_method.c Change ownership to The MacRuby Team and update copyrights
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 the MacRuby team 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 64-bit machine. PowerPC and Intel 32-bit machines are not supported anymore, but may still work.

  • Mac OS X 10.6 or later.

  • LLVM ToT, compiled for x86_64.

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

    $ svn co https://llvm.org/svn/llvm-project/llvm/branches/release_29@127367 llvm-2.9
    $ cd llvm-2.9
    $ env CC=/usr/bin/gcc CXX=/usr/bin/g++ ./configure --enable-bindings=none --enable-optimized --with-llvmgccdir=/tmp
    $ env CC=/usr/bin/gcc CXX=/usr/bin/g++ make
    $ sudo env 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 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 <repository-URL>

Note for using Xcode 4.3 (or later)

If you use the Xcode 4.3 (or later), you might need to configure Xcode path before installing MacRuby:

$ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/

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 # --quiet

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

Contribute

Once you've made your great commits:

  1. Fork MacRuby

  2. Create a topic branch - git checkout -b my_branch

  3. Push to your branch - git push origin my_branch

  4. Create a pull request: github.com/USERNAME/MacRuby/pull/new/master

  5. That's it!

Something went wrong with that request. Please try again.