[MacRuby-devel] MacRuby 0.6 release notes
Laurent Sansonetti
lsansonetti at apple.com
Thu Apr 29 17:45:42 PDT 2010
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
More information about the MacRuby-devel
mailing list