Hi guys,
MacRuby 0.7 is now ready to be released. I created a branch called "0.7" which
might host minor fixes, and I'm now working on preparing the release and
announcement post. It should now be released very soon, likely Monday (we want
to do more testing).
In the meantime, trunk becomes MacRuby 0.8, where the story continues!
Thanks to everyone working on this release, which closes a successful 5 months
development cycle.
Following are the complete release notes, the upcoming announcement post will
be clearer :-)
Highlights:
* Better Ruby compatibility. Better C extensions support. This release has
about 90% of RubySpec coverage.
* Better concurrency. Dispatch cache has been rewritten to be thread safe.
Fixed several race conditions and deadlocks. MacRuby can now handle a
significant number of concurrent HTTP requests through ControlTower. Fixes and
improvements in the Dispatch library.
* Better Cocoa support. Reduced runtime overhead, fixed minor problems and
simplified the integration with Cocoa classes. C-style blocks are now supported
in MacRuby, assuming you install the new BridgeSupport preview release. The
sandbox(7) functionality is now exposed in the Sandbox class.
* Better performance. MacRuby's kernel primitives are now pre-compiled into
LLVM bitcode and inlined later into the module. Fixed minor performance
regressions introduced in last release. Optimized codegen, instance variables
and multiple assignments. In JIT mode, cold paths are now interpreted and not
JIT compiled. Introduced a regression performance suite.
* MacIRB has been rewritten from scratch. The new version (called DietRB) is
lighter and better implemented. It should be compatible with the old IRB.
* Started working on static Ruby compilation, which generates executable
binaries embedding the MacRuby runtime, not making use of the JIT compiler or
BridgeSupport runtime metadata. This is a work in progress and we intend to
finish it in the next release.
* Mac OS v10.5 (Leopard) is no longer supported. We require MacRuby users to
upgrade to Snow Leopard.
Other changes:
* Fixed clang/clang++ build.
* Fixed a crash when trying to create a byte string out of an empty NSString.
* Fixed a small typo in the compilation error message.
* Fixed a bug when bridgesupport files for linked frameworks wouldn't be loaded.
* Fixed a crash when calling #to_json on a symbol.
* Fixed a bug in Method#call which would incorrectly change the safe level.
* Now filtering the symbols we expose in the macruby dylib.
* Avoid calling xmalloc() with a zero size (fixes several performance problems).
* #sysread with a len argument must return a binary string, not UTF-8.
* Allow Pointer objects of type 'c' to be passed as C-style char arrays.
* Fixed a bug in NSString#== where an exception would occur if the operand
cannot be converted as a string.
* Got rid of the NSNumber glue, it's useless since NSNumbers are always
converted.
* In case we are in a .app with MacRuby.framework embedded inside, relocate the
load paths accordingly.
* Deal with numeric escapes in regexps.
* Symbol#to_proc now generates a Proc that can accept a variable number of
arguments.
* Fixed minor bugs in symbol and enumeration.
* Implemented of String#encode.
* Fixed String#each_byte to return positive numbers.
* Made NSObject#== and NSObject#eql? use -[NSObject isEqual:].
* Fixed minor bugs in Array and implemented #rotate, #rotate!, #select!,
#keep_if, #sort_by!.
* More robust runtime signature parsing, by dynamically allocating the
temporary buffer instead of using a static array (which might be too small when
parsing big signatures like in CoreAudio).
* Be careful when compiling the struct #new method, some fields might be large
(ABI-wise) structures.
* Fixed minor bugs in Dir, implemented #home.
* Create symbols from the auto zone, allowing associative references to work
without emitting warnings/errors.
* Fixed minor bugs in Enumerable and implemented #flat_map, #collect_concat,
#each_entry, #each_slice, #each_cons, #each_with_object.
* Fixed a bug in the compilation of the alias keyword, some arguments can be
interpolated symbols (not literals).
* Removed the sigbus/sigsegv signal handlers, let macruby crash immediately to
make the life of crashtracer easier.
* Fixed minor bugs in Enumerator and implemented #each_with_object,
#with_object.
* Fixed minor bugs in File and implemented #absolute_path and #size.
* Backported latest net/http from ruby trunk.
* Fixed minor bugs in Fixnum and implemented #magnitude.
* Fixed minor bugs in Float and implemented #rationalize.
* Added some missing MRI C-APIs.
* Added support for the nkf extension.
* Fixed a bug when popping exceptions from compiled code.
* Fixed minor bugs in the GC module.
* Made the division of negative fixnums behave like MRI.
* Fixed minor bugs in Math.
* Fixed #define_method with a Proc to compile a stub with the same arity as the
block.
* Cleaned up public headers.
* Simplifie