[MacRuby-devel] 0.5 status... good to go!

Laurent Sansonetti lsansonetti at apple.com
Sun Jan 31 14:35:47 PST 2010

Hi guys,

It has been a long time since I did a status report here, but I have  
been busy :)

Here is a status about what happened since 0.5 beta 2 until we started  
working on 0.6. I think 0.5 is good enough to be released as final  
now. I will prepare the release and hopefully it will go out later  


- HotCocoa support is back! Also, HotCocoa is no longer developed in  
the MacRuby repository but on GitHub: http://github.com/richkilmer/hotcocoa 
. We hope that by being on GitHub, HotCocoa will evolve faster. Be  
sure to do a 'macrake install hotcocoa'.
- AOT compiler is more stable, supports compilation of multiple Ruby  
files into shared/dynamic libraries. It is also documented in a man- 
page, be sure to check it out for a detailed list of options and some  
use case examples.
- GCD API is complete, frozen and fully documented. Stay tuned for GCD  
tutorials on the website.
- Better runtime symbolication (backtraces) by emitting DWARF  
- Numerous miscellaneous bug fixes!


- macrubyc: better CPU architecture check
- ruby catch/throw statements now use specialized C++ exceptions  
instead of setjmp/longjmp
- macrubyc: make sure compilation works if paths contain spaces
- macrubyc: no longer use llvm-config for C++ compilation flags but  
- fixed Module#method_defined?
- rake build: ignore RUBYOPT
- templates: updated rb_main.rb to honor .rbo files
- GCD: ignore exceptions raised inside GCD blocks
- do not cache blocks for functions
- openssl extention: misc fixes
- #throw must clear the current VM exception before unwinding the stack
- GCD: fixed a few race conditions
- define the GC and ObjectSpace API as module functions
- start tagging non-RObject classes to not use ivar slots
- added Module#__properties__ to return the list of Objective-C  
- never overwrite -[NSObject hash]
- when registering a method as a BS informal protocol, pad the  
signature with @ in case the ruby arity is greater than the objc one
- property handle missing 64-bit bridgesupport annotations in informal  
protocols for pointer types
- fixed a bug when inserting an object into a KVO array
- str.split('') should split into characters
- honor nil backtraces when printing an uncaught exception
- misc KVC bug fixes
- templates: switched from .nib to .xib
- GCD: block shared/dynamic variables are now copied
- GCD: Queue#dispatch and Group#dispatch are gone. Replacements:  
Queue#async(group=nil) and Queue#sync
- macrubyc: don't forgot to initialize load path and program name
- GCD: aliased Queue#to_s to Queue#label
- emit DWARF metadata at compilation time and use it to establish  
backtracing later at runtime
- fixed Time marshalling
- GCD: don't try to release a NULL semaphore
- fixed a whole lot of crashes on 32-bit
- macrubyc: added support for AOT compiled source code objects in  
- macrubyc: added manpage
- GCD: when finalizing a dispatch semaphore, re-equilibrate before  
release to avoid a crash
- fixed #method_missing and #respond_to? for NSProxy-based objects
- fixed some class variables bugs
- when changing the visibility of a method and duplicating its entry  
in the lookup table, be sure to keep the same flags too
- added Pointer out-of-bounds access check
- optimized #to_path conversion
- fixed Fixnum#odd? and Fixnum#even?
- fixed a thread-safety bug in RoxorCore::retype_method()
- #extend_object: honor nested modules
- added some basic support for multibyte regexps
- FFI::Library#attach_function: the first argument can also be a symbol
- macrubyc: generate better tmpfiles to allow multiple compilations of  
the same project
- GCD: added rdoc documentation for all APIs
- fixed a bunch of super-dispatch bugs
- added preliminary (not complete) support for objc methods aliasing
- fixed a bug when accessing regexp match special variables
- fixed a bug in String#dump in case the receiver is a bytestring
- fixed a bug in the #send method inliner where protected methods  
would not be callable
- removed HotCocoa from the repository. It is now living on github as  
a separate gem.
- implemented Thread.kill and Thread.exit
- rb_str_dup(): in case the receiver is not a pure CF string, send - 
- Thread.list: do not return the internal thread list but a copy instead
- don't use #delete to remove a thread from the internal list since it  
might trigger custom methods which might acquire the core lock and  
therefore cause a deadlock
- implemented #[] and #[]= as shortcuts for objectForKey: and  
- GCD: added sources API
- do not uncache a block if the context (self) is different
- templates: do not load rb_main.rb twice


More information about the MacRuby-devel mailing list