[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
today.
Highlights:
- 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
annotations.
- Numerous miscellaneous bug fixes!
Changes:
- 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
rbconfig
- 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
properties
- 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
#require
- 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 -
mutableCopy
- 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
setObject:forKey:
- GCD: added sources API
- do not uncache a block if the context (self) is different
- templates: do not load rb_main.rb twice
Laurent
More information about the MacRuby-devel
mailing list