Hi guys,

It has been a little bit more than a month since the last status update, which was for beta1. It is now time to release beta2. I am preparing the release at the moment as well as a blog article, but here are the changes.

Enjoy! The final 0.5 release is not far at this point :-)

Highlights:

- rdoc, ri, rack, sinatra are now working.
- DTrace probes are available. Same as in MacRuby 0.4.
- BigDecimal, OpenSSL and JSON support (experimental).
- macrubyc: support for building fat binaries (using the --arch argument). - New tool: macruby_deploy, to help you deploying a MacRuby application, by ahead-of-time compiling its source code and relocating the MacRuby framework inside the application bundle. One-click Xcode targets provided. - Lots of bugs fixed, especially related to compatibility, thread- safeness and memory/resource leaks.

Details:

- Added JSON support, based on the yajl library (experimental).
- Fixed a bug when compiling super without arguments, where the method's &block wouldn't be passed. - Fixed a bug during singleton class creation where the super class would not have any outer. - Fixed a bug in the VM method preparation routine when the current VM class would be a metaclass.
- The compiler now honors the current VM class when compiling outers.
- Fixed a crash in String#[] when called with 2 arguments and when the last one is negative.
- Fixed Object#class to never return singleton classes.
- Fixed a parsing crash that would happen if a magic comment includes an encoding that we do not recognize.
- Fixed Object#inspect output to not include extra characters.
- Fixed #method_missing to be called with Ruby-like selectors.
- Do not install special methods on singleton classes.
- Fixed several module mixin bugs.
- Fixed a bug in Proc#to_s to print lambda status.
- Implemented 1.9 lambda syntax (->).
- Now sanitizing method names before passing them to the added/removed/ undefined callbacks. - When mixing a class with a module, make sure to JIT methods that already exist in the target class. - Fixed a bug when #method_added would be called during method compilation and not registration.
- Fixed Module#<= to honor included modules.
- Optimized IO#gets to read from the IO cache if available.
- Optimized Hash#each to be slightly faster.
- Optimized Hash#[] to not dispatch #default if it's unnecessary.
- Optimized #[] and #[]= dispatches for Hash.
- Optimized #respond_to? by caching results.
- Fixed a bug in the compilation of global variable assignments where potential exceptions would not properly be intercepted.
- Bring back #[], #[]= and #<< optimizations (oops).
- Optimized returns from non-ensure-scoped and non-Proc blocks.
- void-returning objc calls now return the receiver instead of nil.
- Fixed a bug in Kernel#respond_to? to avoid recursive calls.
- Fixed a bug in YAML objects deserialization, where #new would be called instead of #alloc. - When changing the visibility of a method that is included in classes, make sure the new flags are recursively applied. - When registering a new method, if the given class also responds to the arity-1+1 selector let's make it unavailable, to fully conform to the way Ruby behaves. - Fixed a bug in the compilation of super without argument where the scoping method has arguments with default values.
- Fixed AOT compilation of backquote with a literal string.
- return-from-block is now active for further dispatch calls inside the same method
- Do not return-from-block from lambdas (to mimic MRI 1.9).
- Implemented VM cleanup.
- Fixed Thread resource leaks.
- Unregister VM objects created from GCD pthreads.
- Make sure Thread and GCD blocks are detachable (that they won't be cached and that their dvars will be preserved when leaving the scope where the blocks have been created).
- Merge to recent CRuby readline.
- Implemented ObjectSpace finalizers (experimental).
- Fixed Pointer to work with ^v (void *) type.
- Fixed a const lookup bug when rb_define_module() wouldn't set a default outer.
- Call Symbol#to_s if #description is called, instead of #inspect.
- Better MRI 1.9 C API compatibility.
- Added OpenSSL extension (experimental).
- Added macruby_deploy, a tool to help compiling AOT a MacRuby app and relocating MacRuby.framework inside it. Updated "Embed MacRuby" Xcode target and added "Compile" Xcode target. - Fixed a x86-64 ABI conformance bug where arguments should be passed by reference when there aren't enough registers to hold all of them.
- Create -copyWithZone: on every new Object-based Ruby class.
- Fixed a bug when break/next/redo statements inside exception handlers would not properly end potential landing pads.
- Fixed sprintf's %p to pass the object address.
- Fixed a bug in IO.popen.
- Added support for defined? on any unhandled expression.
- Swapped our custom Set implementation by the latest code from 1.9.
- Now generating and installing RDoc ri files.
- Added YAML support for Struct objects.
- Free parser node objects post-execution.
- Do not leak Match objects.
- Now deleting internal structures, IR and machine code of main functions created by #eval.
- Do not leak Regexp objects.
- Fixed a bug in Kernel#open when the given file was opened twice (ouch!).
- Adding missing GC write barriers in Struct.
- Do not leak some of the oniguruma internal hash tables.
- Fixed a couple of ivar slot bugs.
- Fixed String#dump.
- Implemented YAML support for date/time.
- Working around missing 64-bit informal protocol annotations with NSRange.
- Safe quoting of YAML plain string scalars that look like non-strings.
- When generating the default objc runtime signature for a pure ruby method, if it starts by 'set' let's use 'void' instead of 'id'. - Fixed a const lookup bug (always set the outer of a class to something).
- MACRUBY_VERSION is now a string.
- Implemented #remove_method.
- Fixed a bug in String#dup where the receiver's class would not be honored.
- Added BigDecimal extension (experimental).
- Re-enabled File#flock.
- Fixed a bug where ivars would not work for some builtin subclasses.
- Implemented YAML.each_document.
- Fixed a bug when module_function was used as a scope visibility followed by -1 arity methods. - Re-implemented #rand and #srand to use random(3) and srandom(3), faster and thread-safe.
- YAML now handles UTF-16 encoded strings.
- For a given CF type signature, also register an equivalent without the '=' character to conform to BridgeSupport APIs returning this type by reference. - Fixed a bug in the BridgeSupport parser where an exception message would not be correct. - A binding created from a method with a block passed-by now has a reference to this block and uses it during evaluation.
- Fixed many recursive bugs.
- Fixed a bug when loading scripts where the current VM state wouldn't be restored if an exception happened. - macrubyc now generates executables linking against MacRuby.framework dynamically. For a static binary, the --static argument must be passed. - Fixed a bug when the AOT bitcode would not be compiled as fully relocatable. - LLVM's llc utility, required by macrubyc, is now installed inside the framework's bindir. - macrubyc is now able to build fat binaries, accepting --arch arguments.
- Implemented the rb_provided() method.
- Fixed many autoload bugs.
- Fixed a bug where non-specific tags for quoted YAML scalars would be printed.
- Implemented :inline format for YAML sequences and mappings.
- Implemented protected visibility check.
- Added support for AOT compilation of literal bignums.
- Fixed a bug when handling a sel_of_type argument where the selector may be nil. - Fixed a bug in -[ByteString isEqual:] when the given object was not CFString-based.
- Fixed KVO bugs.
- Fixed a bug where the return value of #initialize would be returned.
- Added DTrace probes: method:entry, method:return, raise.
- Fixed a compilation bug with variables declared inside class definitions. - Fixed the uncaught exception routine to not fail if there is no backtrace.

Laurent
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to