[MacRuby-devel] experimental branch: status update

Laurent Sansonetti lsansonetti at apple.com
Sun Jun 7 19:39:58 PDT 2009

Another week, another status update on the experimental branch!

Highlights are:

- A much better Cocoa support. We are almost as stable as trunk, I  
think. I was able to run a significant internal MacRuby application  
with the experimental branch.

- The project is now able to be installed and used on Mac OS 10.6. It  
should theoretically work with the latest seeded build, using the same  
building instructions as mentioned in README.rdoc, and pass our spec  
suite. Please contact me offline if you have any problem or question,  
since 10.6 cannot be discussed here.

- Lots of RubySpec-related work. We enabled most of the "core" specs  
and the spec:ci rake task is now running about 15,000 expectations (vs  
2,000 before). Several bugs discovered by these RubySpec were fixed,  
but surprisingly we didn't have so much failing specs. Huge kudos to  

- Patrick started working on optimizing floating point arithmetic (in  
a branch, called fp-optimized-experimental). The idea is to make Float  
objects immediate so that we don't have to allocate memory in order to  
do float arithmetic. The work is still under progress, it will be  
merged back to the experimental branch once it's done and stable.


- Fixed a crash when trying to symbolicate a backtrace when the JIT  
compiler has not been initialized yet (command line argument parsing).

- Disable the recursive dispatch optimization in case there is an  
arity mismatch (optional arguments).

- Fixed a bug in the #send optimization compilation where the basic  
block created by the exception handler was not honored.

- Fixed a GC-related bug in File.readlink.

- Removed the builtin oniguruma copy which wasn't working great with  
our GC, because it was using GC memory and missing some write  
barriers, and added a snapshot of the latest one (5.9.1) which works  
using regular malloc memory.

- Fixed several bugs in the way we create CF IO streams and do error  

- Fixed lots of 10.6-only bugs in the way we check for mutability on  
builtin types (string, array, hash, set).

- Fixed a critical bug in the code path that was used to verify if a  
given builtin type is tainted or not.

- We now require LLVM revision 72741. The MacRuby source code won't  
compile anymore with the previous revision because of an API change in  
LLVM. Markus Prinz graciously offered a binary installer for this very  
specific version of LLVM that you can use instead of compiling your  
own (read http://lists.macosforge.org/pipermail/macruby-devel/2009-June/001908.html 
  for more information).

- When subclassing a builtin type class, only insert the mutable  
primitives if the subclass is the mutable version of this builtin type.
- Don't forget to reload class constants every time a new framework is  
- Fixed a bug when we weren't actually passing the method selector  
from the dispatcher to -2 arity methods defined in C.

- Added some preliminary support to call variadic C functions /  
Objective-C methods.

- Implemented implemented String#bytesize and String#each_byte.

- Fixed Bignum#+.

- ByteString objects can now be frozen/tainted.

- Define Encoding::ASCII_8BIT as a shortcut to US_ASCII (for now).

- Fixed ByteString#encoding to always return US_ASCII (for now).

- Implemented the undefinition of methods.

- Undefined Symbol#to_str.

- Fixed lex_io_gets_fast() to deal better with scripts containing non- 
ASCII characters. This allows us to parse and compile scripts  
containing non-ASCII characters.

- Fixed a bug in the file loader, when the given path is absolute and  
contains the file extension.

- Ported process.c to the new runtime API.

- Implemented File#chown.

- Before calling #method_missing, raise an ArgumentError in case we  
tried to call a method with an argument when there exists a method  
under the same Ruby name that accepts no argument.

- Made Eumerator a top-level class.

- Fixed lots of bugs in the Struct class, it's now usable again.

- Fixed bugs discovered by RubySpec in the following Array methods:  
#choice (deleted), #concat, #fill, #flatten, #initialize, #insert,  
#pack, #push, #sample (added), #sort, #unshift, #zip,

- Fixed bugs discovered by RubySpec in the following String methods:  
#capitalize, #center, #chomp, #delete, #downcase, #dump, #gsub,  
#ljust, #rjust, #squeeze, #sub, #swapcase, #tr_s, #tr, #upcase

- Enabled most of the RubySpec core specifications!


More information about the MacRuby-devel mailing list