From: Laurent S. <lau...@gm...> - 2007-08-14 16:05:57
|
Hi, I am honored to announce the immediate release of RubyCocoa 0.12.0. RubyCocoa is a Mac OS X framework that allows Cocoa programming in the object-oriented scripting language Ruby. In other words, it is a bridge that let you access Objective-C objects from Ruby, and vice-versa. You can learn more about RubyCocoa on our new website: http://rubycocoa.sf.net This release fixes lots of important bugs, and also bring a few interesting new features. All users are encouraged to upgrade. Following are the release notes. Enjoy! The RubyCocoa Team Changes: - Introduced support for using Ruby threads with RubyCocoa. The Ruby interpreter must be patched in order to activate the support. The binary release ships an already-patched libruby, but if you build from the sources, please read misc/README_THREADING. If you installed Ruby from MacPorts, it should be already pre-patched. - Now automatically registering informal protocol methods defined in Ruby to the ObjC runtime. - When messaging Objective-C from Ruby, we now auto-define the Ruby methods on the proxy class (by generating Libffi closures), to make #method_missing called only once per method. - Better generic Ruby -> ObjC boolean conversion, now trying to respect the Ruby semantics. Ruby's true and false are converted as true and false, all integers (including 0) are converted as true and nil as false. - When ObjC tries to message a private Ruby method, raises an exception. - Implemented foo? -> isFoo method name conversion. - Added the docs for the ruby-like setters that are supported by the bridge. So for instance NSView will have documentation for #setNeedsDisplay() and #needsDisplay=(). - Fixed a PPC bug where floating types were not properly handled by variadic arguments. - Fixed a PPC regression when converting small integers (less than 4 bytes) from a metadata-driven Ruby method (ex: an informal protocol method). - ObjcPtr.new initialize ObjcPtr.encoding as "uchar" by default and clear allocated memory. - ObjcPtr#allocate_as_int{8,16,32} set ObjcPtr.encoding" as "char", "short", and "int", respectively. - OSX.objc_method: Add acceptable types: BOOL, longlong, ulonglong and cstr. - standalonify: Fixed a bug that occurs when the app bundle already contains the RubyCocoa.framework. - rb_nibtool: When writing a plist for a given Ruby source code, make sure the outlets and actions are ordered in the same order they have been defined in the given code. - rb_nibtool: Support passing '-' as the source code path, which will read on stdin. - rb_nibtool: Write the property list as XML. - rb_nibtool: If the RubyNode library is present in the system, uses it to collect the necessary IB metadata, by parsing the given Ruby source code file. If not, uses the old behavior that requires the given Ruby source code file and collect the metadata via code evaluation. - Work around possible warnings when defining module functions from bridge support, in case a function has already been defined. - Templates: Modified method definition by appropriate syntax, because it was written by obsoleted syntax. - Templates: Removed the .pch files in CoreData projects. - Templates: Modified the main.m files to `#import <Cocoa/Cocoa.h>', to give a hint to the Xcode indexer. - Samples: New CocoaRepl example. - Samples: Removed references to the 10.4u SDK and use instead the current SDK. - Fixed --build-universal for systems higher than 10.4. - Improved ObjcPtr#regard_as to accept an ObjC runtime encoding string. - Added the class method ActiveRecordProxy.on_get() which can be used to define filters to be applied when a specified key is requested in rbValueForKey. So the filter will be run before returning the data. - Fixed some bugs when importing NSProxy-based classes. - Define #dup and #clone for C structures boxed types. - Proxy classes are now automagically defined when a ActiveRecord::Base subclass is defined. ActiveRecord::Base#to_activerecord_proxy now caches the proxy class name. - Fixed NULL to C strings and opaque types conversion. |