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:
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.