Hi,

Following are the release notes of the upcoming MacRuby 0.6 release. We will 
prepare the installer package and write a more explanatory announcement on the 
blog a bit later. 

This closes a very successful 4 months development period since the last 
release!

Laurent

Highlights:

* MacRuby is now stable for Cocoa development.
* Debugging support in both the compiler & the VM (experimental). Introduced 
macrubyd as a command-line tool to pilot the debugger.
* New Hash class. Honors insertion ordering, optimized for Ruby immediate types.
* New String class. Supports the Ruby 1.9 encoding semantics and can also hold 
binary data. Removed the old hidden ByteString class. Symbol has also been 
rewritten to support multibyte characters.
* New Regexp class. Thread-safe, based on the ICU framework. Oniguruma is no 
longer used.
* Additional, higher-level abstractions and convenience APIs for GCD, such as 
the Job and Proxy classes, via the "dispatch" library.
* Support for C extensions written for MRI (experimental).
* Rewrote the Foundation built-in classes glue to conform better to the Ruby 
semantics and be more robust in the future. A lot of unused code was then 
deleted.
* About 85% of global RubySpecs pass rate.

Other Changes:

* Fixed a bug in #caller to remove itself from the backtrace.
* Make sure #at_exit blocks are called within exception handlers.
* yaml: implement YamlNode.
* Fixed a bug in File.open to handle given path argument as a path and not a 
string.
* Fixed a constant lookup bug inside Foo::bar modules.
* Fixed a constant lookup bug inside #instance_eval.
* Fixed a deadlock when autoloading constants.
* Fixed a GC bug when passing thread-local objects to a new thread.
* RubyGems was updated to 1.3.6.
* Better signal handling support.
* Make sure Fixnum and Float boxes honor -copyWithZone:.
* Fixed a bug in #autoload from a mixed module.
* Register not implemented methods with rb_f_notimplement().
* Properly pop exceptions from the VM stack when we unwind from a handler.
* Added support for blocks symbolication.
* Make sure to catch Exception-based exceptions when requiring a file.
* Changed generic/native/class instance variables to use GC associative 
references and keep the global hash for immediates.
* Introduce RubyObject, a hidden class used as the basic class of all 
ruby-created classes.
* Fixed an infinite loop in Object#freeze that only occurs at SAFE level 4.
* #respond_to? now returns false in case the method is not implemented.
* GC.count is no longer implemented.
* Added support for the flip-flop operator.
* macruby_deploy: make sure .rbo files are properly linked when MacRuby is 
embedded into an app.
* Added encoding-related exceptions.
* Fixed #flatten on NSArrays.
* Get rid of bad alloca() calls to avoid stack corruption.
* Disable frame pointer elimination optimization in the JIT.
* Simplified constant lookup primitives.
* Removed an old limitation of 32-bit MacRuby being unable to load .rbo files.
* Don't always assume that a thread has a group.
* Array#sample: raise an exception if given count is negative.
* When doing an assignment from thread X to thread Y's stack, defeat the 
thread-local collector by making X leave the ownership of the object.
* BasicObject#initialize: do not forward -init in case it's a ruby method.
* Added support for methods defined for the MRI ABI (using rb_define_method & 
friends).
* Class#clone and Module#clone: now copying methods and constants.
* Class#instance_methods and Module#instance_methods: do not include the 
superclass methods.
* Rewrote the String formatting code to no longer be a stub of CFString.
* Removed the testrb and erb executables.
* Inspect message should always start by a #.
* Hash#compare_by_identity, #compare_by_identity?, #default_proc=: added.
* Hash#dup: fixed to honor subclasses.
* Hash#[]=: fixed to duplicate and freeze string keys.
* Fixed some freeze/taint problems with immediates.
* Kernel.Integer: upgraded to 1.9.
* yaml: Don't break :inline structures at 80 column boundaries.
* Integrate Mersenne Twister based random number generator from 1.9 upstream.
* Kernel#respond_to_missing?: added.
* Kernel#caller: now honor the skip argument.
* Hash#clone: keep singleton classes.
* Array#join: convert separator as string.
* Array#<=>: return nil if given obj is not array.
* Array#dup/#clone: appropriately handle singleton classes.
* When calling method missing, don't assume #method: takes only one argument.
* Allow methods/blocks with 12+ arguments.
* Delegate #copyWithZone to #dup, as we don't do anything with the zone yet.
* Copy the `trusted' state when creating a copy with #dup.
* Fixed a crasher in ossl_rand.
* A lot of fixes in String/Symbol/Regexp due to the ICU branch rewrite/merge.
* Fixed a buffer overflow when computing helper selectors in the dispatcher.
* Make sure #to_enum verifies that the argument is a symbol.
* Array#rindex: don't lookup argument in an empty array.
* Array#pack: fixed tainting of resulted string.
* Avoid a crash in #define_singleton_method on immediate types.
* Fixed a typo message in mkmf.rb.
* Avoid integer truncation in BigDecimal.
* Fixed a memory crasher in Bignum reallocation.
* When dispatching a custom #respond_to? method, do not pass the second 
optional argument in case the arity is incompatible.
* Fix random generation of bignums on 64-bit 10.6+ machines.
* Fixed a bug in mkmf.rb (backported from upstream 1.9).
* It is now possible to pass Proc to native C/ObjC functions or methods 
accepting function pointers.
* Make Symbol compliant to NSCoding.
* yaml: cleaned the extension code and fixed a few misc bugs.
* Set the maxgroups constant to NGROUPS_MAX.
* IO#tell, IO#seek: should not require readability and should be usable on 
write-only or read-only IOs.
* Now AOT compiling rexml and xmlrpc standard libraries.
* When defining a class, only allow a class as the super class (and not 
modules).
* Added notify_post.rb sample.
* Fixed bugs in ZSUPER (super with no argument and no parenthesis) compilation 
inside blocks.
* Fixed a problem with Array#to_a.
* Fixed a bug in Module#initialize which could be re-entered upon +initialize.
* attr_accessor and attr_writer now generates writers that send KVO 
notifications (if #framework was called at least once).
* Fixed a synchronization bug in the backquote operator.
* Rewrote the super dispatcher to not rely on the stack trace.
* Always try helper methods if a class is not a RubyObject descendant.
* Better Objective-C ignored selector detection.
* Implemented BEGIN{}.
* Use the same message format for printed exceptions everywhere.
* When preparing a method, do an extra resolve pass in case the Objective-C 
cache is invalid.
* Force class initialization upon lazy lookup.
* Added support for Array arguments in IO.popen.
* Disable the lazy JIT in case the target class already has a custom 
Objective-C method resolver (like CALayer).
* Do not auto-initialize classes that are not NSObject-based (like NSProxy).
* Added Pointer#cast! method to retype pointers.
* Allow any pointer to be converted to void*.
* Fix bugs in the way Objective-C method types were generated.
* When we acquire the core global lock, make sure we also release it in case an 
exception happens.
* MacRuby will no longer insert the special primitive methods when you directly 
subclass NSArray, NSString and NSDictionary. It is unlikely to happen anymore 
with the new architecture.
* When re-typing methods, do not re-type the same method twice and make sure 
the new signature matches the ruby arity.
* Fixed a bug in TypeArity() where stack size annotations were not ignored.
* The VM is now multithreaded-aware by default.
* When checking if a given BridgeSupport path has already been loaded, do a 
case insensitive search.
* Added support for anonymous structures (like {?=qq}).
* Added several missing GC write barriers all around the code.
* Make NSString, NSArray and NSDictionary yamlable.
* Rewrote class flags to not use the version field anymore, better typing 
system, fixed misc bugs.
* IRB should not crash when receiving Obj-C exceptions.
* Added simple compiler support for bit fields and C-style arrays.
* Improved support of opaque structures.
* Fixed the ViewModelDemo sample syntax.

Trac Tickets:

377     macgem crashes while installing any gem
583     macgem doesn't work with the latest trunk
551     NSThread.alloc.initWithTarget segfaulting
252     Support key-value observing via the attr_accessor family of methods
641     Using CLLocationCoordinate2D structs raises TypeError
552     NSOperationQueue segfaults when more than one operation is being added
647     Create alias when a pure objc #setFoo method is overriden
557     Ruby exceptions aren't catched when calling at_exit block
564     Scoping within nested classes is broken
644     String.include? bug
604     EXC_BAD_ACCESS while opening stream
645     Segmentation Fault using File::sysseek
210     Calling load_bridge_support_file without parameters raises NoMethodError
454     String#getbyte not working?
646     Ripper is broken on trunk
299     macruby core dumps.
651     NSString#stringByDeletingPathExtension: not returning a String
565     GCD sources should return passed-in handle for handle method
571     #respond_to? should return false for unimplemented methods
649     NSNumber bridging problem
290     Hashes do NOT stay ordered
581     sudo macgem install hotcocoa fails on latest nightly
116     """%s"" inside of format statements in macruby doesn't work with 
multibyte characters"
638     NSCFNUmber.to_f doesn't work correctly
637     Segmentation fault error with NSSearchPathForDirectoriesInDomains 
function
464     "can't load any framework ""undefined method copy for 
NSLoadedClasses:NSMutableString"""
431     Seg fault evaluating an escaped unicode string
458     odd debug messages during NSPredicate.prediateWithFormat:argumentArray:
655     NSInteger received as nil from QuickLook API
665     Easy to reproduce bug
548     The flip-flop operator
159     """%d"" with large integer argument gives conversion error"
465     [0.5b2] Problem walking directory trees with unicode filenames
438     rb_define_method for MacRuby
607     macruby_main() argv transformation prevents passing arguments to the 
Ruby app
582     Segmentation fault using ScriptingBridge
602     File.dirname cuts string at wrong index with unicode strings
603     error handling breaks causing a WIN32API load error to escape from 
tmpdir
628     CTFramesetterCreateFrame doesn't like the CFRange type
534     Hash RangeError
606     Zlib::Inflate crashing
654     CALayer has a problem aliasing methods
656     NSCoder encodeFloat and decodeFloatForKey doesn't with ruby float
666     yaml is broken for specific string, array and hash objects
667     File.join not working with NSStrings
280     NSNumber#decimalValue cant convert to ruby object
589     Build error (svn 3396)
609     Constants and methods are not copied when cloning modules
533     CoreLocation not covered by BridgeSupport
608     "rb_str_format() does not handle the ""field width"" flag for strings"
567     macirb can't exit after trying to load a gem that doesn't exit
250     subclassing Array
281     Bundles pointing to local MacRuby installation instead of embedded
614     Compiling lib/net/telnet.rb on r3489 crashes on latest trunk
246     NSMutableDictionary methods cannot retrieve values for Fixnum keys
309     String, Hash, Array: singleton attr_accessor cannot be defined
205     Incorrect list of instance methods
532     The backtrace does not contain line numbers for code in blocks
345     Ordering enumerations on set and hash
473     setObjectValue does not set floats, integers in NSTextFields properly.
579     i386 compilation doesn't work
616     MacRuby does not return control to terminal
615     macruby segfaults when generating large random numbers
555     Redefinition of method gives unexpected behavior
423     #respond_to? returns true, actual method call raises NoMethodError
512     MacRuby misreports #initialize argument count in error messages
629     Bindings not working for subclass
622     Overriding setRepresentedObject on NSViewController subclass doesn't 
seem to work
625     macirb failing with latest trunk
658     Including a module into Hash breaks creating an NSDictionary from a hash
529     Using a Proc as a ‘callback function’
244     "String.name should return ""String"" and not ""NSMutableString"""
587     "macgem fails on 32 bits machines (""too short escaped multibyte 
character"")"
179     Calling Regexp#match from ObjC in a background thread hangs
308     """too short multibyte code string"" when using Pathname"
544     NSBigMutableString#tr crashes
126     bytestrings, nsstring, and unicode/multibyte characters do not get along
192     String#length and String#size do not work correctly
569     macrake crashes with abort trap when compiling Phusion Passenger
507     valueForKey(key) no longer working with NSManagedObject subclasses.
660     ER: Pointer needs a #cast for untyped pointers
661     [NSUndoManager um.prepareWithInvocationTarget:] is broken
550     TypeError: unrecognized runtime type when using 
NSThread.alloc.initWithTarget
662     macruby 0.6 breaks Growl
_______________________________________________
MacRuby-devel mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to