Nice. Great work! On Nov 17, 2009, at 3:23 AM, Laurent Sansonetti wrote:
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