[MacRuby-devel] MacRuby 0.8 release notes
Laurent Sansonetti
lsansonetti at apple.com
Mon Dec 13 19:32:54 PST 2010
Hi guys,
As promised, 0.8 is now released! It's now available in http://www.macruby.org/files/ and I will push a new website later today with a blog article.
I would like to thank everyone who participated to this release, reporting bugs and patches. And special thanks to watson1978 who contributed a huge number of changes.
trunk (and tonight's nightly build) is now using the 0.9 version number. Let's continue fixing the bugs in our 1.0 milestone!
Highlights:
Lots of compatibility and stability fixes.
Minor enhancements to the Cocoa development support.
macirb (DietRB) now supports auto-indentation and completion.
Changes:
Fix a bug in Digest.digest and Digest.hexdigest when passing the algorithm name.
Fix a bug in Date when not using nsec in substitution for subsec.
Fix a bug in Date.httpdate when an exception "undefined method `size' for nil:NilClass'" was raised.
Fix a bug in #define_method when passed an objc-style selector.
Implement rb_str_modify() MRI API.
Fix a bug in the compiler when converting invoke instructions to call, where debugging metadata would not be properly transfered.
Fix a bug in -[NSArray ==:], make sure it returns false in case the receiver isn't an NSArray, instead of raising an exception.
Fix a bug in Benchmark::Tms#add! when a NameError would be raised.
Fix a bug in CMath.cbrt, when passed a negative value as argument.
Introduce Dispatch::Object which becomes the mother class of all Dispatch classes.
Introduce Dispatch::Object#dispatch_object which returns a raw pointer to the internal libdispatch type.
Fix a bug in BridgeSupport, by avoiding sanity pointer type comparison check in case the given pointer type is 'C'.
Fix missing connections in MacRuby Document-based Application template.
Fix a bug n String#split(sep, limit), when passed value to limit.
Introduce String#pointer which returns a Pointer object wrapping the string's internal storage.
Improve current algorithm to calculate line numbers in stack traces.
Fix a bug in BasicSocket#close_{read,write} where the actual fd would be left intact.
Fix a bug when creating a NameError exception where calling #inspect on the receiver object would raise an exception and cause an infinite loop.
Fix a bug in BasicSocket#close_{read,write} where we wouldn't raise an exception in case the stream was already closed
Fix a bug in BasicSocket#{listen,setsockopt} where we wouldn't raise an exception in case the stream was already closed
Fix a bug in StringIO#read(length). Should return empty string when specified 0 to length.
Fix a bug in StringIO#read(length, buffer). Should set empty string to buffer when calls at EOF.
Fix a bug in File#size. Should throw an IOError exception when calls with closed stream.
Fix a bug in the compilatin of #eval statements with Binding objects. When creating a binding, keep a reference to the top one.
Fix a bug in IO#sysread where it should throw an EOFError.
Fix a bug in IO#sysread(length). Should return empty string when specified 0 to length.
Implement rb_protect() and rb_jump_tag() MRI API.
Add a sample showing how to use CoreLocation to find the user's location and open it in a google map page using the default browser (Scripts/locator.rb).
Fix a bug in the super dispatch when we try to super call a method under the same selector as the current one but on a receiver from a totally different class hierarchy.
Improve +[MacRuby sharedRuntime] to make the load path relocatable in case MacRuby.framework is embedded in a .app.
Improve stack traces by now including yield statements. Attach DWARF metadata when compiling yield calls.
Fix a bug in Method#call where the method cache would not be used.
Implement rb_str_split() MRI API.
Implement rb_hash_tbl() MRI API.
Implement rb_global_variable() MRI API.
Implement rb_iterate() MRI API.
Remove Leopard hacks since it's not supported anymore.
Fix a bug in the compilation of bitfield types. Raise an exception in case the type string is invalid except of crashing the process (as we might be calling from Pointer.new).
Improve Pointer.new by supporting :boolean/:bool as a shortcut to 'B', and :selector/:sel as a shortcut to ':'.
Implement rb_gc_register_address() MRI API.
Introduce Pointer#+ and Pointer#- to allow the user to change the offset of a pointer (returning a new pointer object).
Change Pointer.new to only accept Symbols for type shortcuts.
Fix a bug in BridgeSupport by disabling a check when converting bignums into unsigned long longs as it may trigger false positives when using certain Cocoa APIs.
Fix a bug in the io.h header file, making sure it can be included without CoreFoundation.
Fix a bug in File.expand_path to not resolve symlinks.
Fix a bug in #methods and friends to not include unavailable (undefined, etc.) methods.
Implement rb_call_super() MRI API.
Implement rb_num_coerce_relop() MRI API.
Fix a bug in BigDecimal to throw exceptions when compared with nil.
Fix a bug in IO#gets(nil). Will return all data which was read from the stream.
Fix a bug in IO#gets(nil, limit). Will return data of limited length.
Implement rb_obj_instance_eval() MRI API.
Introduce Kernel#getpass method, which wraps the getpass(3) API.
Fix a bug in the compilation of var slots, where binding slots would be taken first before block dynamic slots.
Fix a parser bug by removing useless range literal optimization.
Fix a bug in IO#gets(limit). Will return nil when calls at EOF.
Fix a bug in IO#readlines(limit) when an infinite loop could be entered.
Fix a bug in IO#gets(0) to return empty string.
Fix a bug in IO#gets(sep, 0) to return empty string.
Update DietRB to 0.6.0 which adds auto-indentation and file path completion in strings.
Improve the compilation of converter routines, by now supporting C-style arrays ('[' ... ']' runtime type).
Fix a bug in IO.readlines, when the last element wasn't returned.
Fix a bug in BrigeSupport, when doing sanity pointer type check, ignore '=' characters in type signatures.
Fix bugs in IO#dup and IO#binmode. Will raise an IOError exception with the closed stream.
Fix warnings in BridgeSupport when poking for the __octype__ hidden boxed ivar.
Fix bugs in IO#close_{read,write} to not wait completion of child process.
Fix a bug in IO.popen to properly cononect the pipe into the stdin of the child process.
Implement pipeline support in IO.readlines.
Fix a bug in IO.read to close resources surely, in case an exception happens.
Fix various bugs in ARGF methods, #each_{line,byte,char}, #getc, #read, #readlines, #getbyte, #read{char,byte,line}, #chars, #lines, #bytes.
Fix a bug in the IO layer to dispatch a message to #write instead of calling the default method directly. This fixes bugs in Zlib::GzipWriter#putc, #print, #printf and #<<.
Fix a bug in StringScanner#rest when it would return nil sometimes.
Fix various String methods, to copy the status of the taint and untrusted flags.
Fix a bug in String#sub! to throw an exception with frozen string, also when replacing was not performed.
Improve the Xcode MacRuby apps entry point, by automatically loading the BridgeSupport files of frameworks linked into the product's executable.
Change +protocolWithName: method signature. This will avoid the Objective-C runtime to think the returned object is an Objective-C object, which would issue warnings and crash.
NSObject's conformsToProtocol: methods will check if given Ruby classes implement the protocol methods, at runtime.
Fix various formatting bugs in #sprintf().
Fix a bug in the rake clean:rbo Rakefile task, making sure to remove the C extensions' rbo files too.
Fix warnings in macirb.
Fix a bug in String#setbyte.
Fix a 32-bit ABI issue when calling a C function returning a struct that can fit inside a 64-bit integer (such as NSPoint).
Fix a bug in BridgeSupport by not raising a TypeError exception when passing any pointer as an void-...* argument (before this change, only void* arguments where ignored).
Implement \G support in regexp layer.
Fix various bugs in Array#pack.
Fix a performance bug by no longer registering all Objective-C classes as constants after calling #framework, which had the side effect of waking them up, messaging their +initialize method). Instead we now always use the dynamic resolver.
Fix a bug in Kernel$$+.
Implement StringIO#external_encoding and StringIO#internal_encoding.
Fix a performance memory allocation bug, by making sure Match objects created from the same string keep a reference to a unique, frozen string object.
Undefine Symbol#to_str.
Fix a bug in Array#join to return a string when the given array includes an object responding to to_ary/to_str/to_s.
Fix a bug in the YAML extension when parsing numeric strings.
The Foundation framework is now marked as multithreaded by default.
Improve the support of Dir.tmpdir.
Fix bugs related to the compilation of C-level blocks. Now allocate them in the autozone heap and emit a write barrier to the original ruby Proc object, to avoid premature garbage collection of the Proc when calling the C-level block.
Fix bugs in String#chop and String#reverse, to work properly with non-BMP characters.
Fix install permissions for Info.plist and InfoPlist.strings.
Fix a string comparison bug, by making ascii-only strings now compatible with any other string.
Implement $_ (last time) variable setters.
Make NSObject's performSelector: and friends dispatch pure-ruby methods properly.
Fix a bug in Dir.glob to convert paths to unicode normalization form C.
The compiler is now using LLVM 2.8.
Remove the lib/dispatch layer.
Fix a bug when STDIO file descriptors could be closed.
Fix a bug in Array#uniq, to not remove the element of the array when object type is different.
Fix a bug that prevented CSV from parsing all multi-line fields correctly.
Fix various Webrick bugs.
Fix IO.open to not raise a warning in case a block is passed.
Fix a bug in String#lines to yield the paragraph when passed ''.
Implement Module.nesting.
Fix a bug in String#delete (and friends) when an escaped dash character in the transliteration pattern would still be interpreted as a range.
Fix a bug in IO#close, #close_{read,write} to throw SecurityError when $SAFE is 4.
Fix various bugs in Array#product.
Tickets closed:
ticket summary
969 Need to implement rb_gc_register_address
720 methods from define_method() can't be performed from ObjC
281 Bundles pointing to local MacRuby installation instead of embedded
922 Writing a MacFUSE fs doesn't work when delegating methods
143 macgem does not set chmod +x on files in archive
944 MacRuby should throw an IOError exception when calls Socket#listen #setsockopt with closed socket.
1012 Inconsistent Regex behaviour
493 signals cannot be intercepted
936 Kernel#caller reports the wrong line numbers
978 macirb gives a weird error when I dereference a pointer to a CFArray
981 File.expand_path should not return actual file path with Symbolic link.
1015 mark Cocoa as multithreaded by default
979 Find.find standard library broken in macirb
940 MacRuby should throw an exception when calls IO#read/write without status of READABLE/WRITABLE.
238 rdoc memleaks & segfaults when installing gems
1026 IO::open give a warning when passed a block
993 Assertion failure : vm.cpp
783 Patch for builder.rb error: invalid byte sequence in US-ASCII
782 Segfault occurs with exception is raised from object with broken #inspect
540 segfault with NSURLDownload with GC on
1003 Copied Proc objects cause crash when used as Objective-C blocks
906 Double BOM force_encoding bug (from HAML)
887 calling join on an Array of BINARY Strings returns UTF-8, may raise Encoding::CompatibilityError.
823 String comparison issues when different encodings are used
925 MacRuby use an insubstantial rb_str_modify() in ossl_ssl.c
1022 move to llvm 2.8
955 Problem printing arrays in 0.7
956 macirb NSArray ArgumentError
943 tab completion of files crashes macirb
831 Received request header with Webrick HTTPD is broken after GC is executed.
737 Unpack inconsistencies (possibly related to issue #605?)
1008 Can't get the last line from $_. Need to implement rb_lastline_get and rb_lastline_set.
952 Should set got string to $_ when calls StringIO#gets #readline.
288 miniruby bench on 32 bit fails
895 MacRuby crashes when trying to parse an XML document with nokogiri
923 Kernel#caller returns an empty stack trace
959 CALayers can have a problem resolving method in superclass.
957 [Macruby sharedRuntime] should relocate paths when embedded in a Objective-C app
966 MacRuby encoding error with Mail gem
632 performSelector behaves oddly.
19 Problems with method_missing
105 BridgeSupport can't convert KCGSessionEventTap as an argument for CGEventTapCreate
428 AOT compiled script can't get rescued
928 "MacRuby throws an exception of ""undefined method `size' for nil:NilClass'"" with Date.httpdate."
924 "MacRuby throws an exception of ""Unsupported digest algorithm (OpenSSL::Digest::MD5)."""
945 MacRuby should throw an IOError exception when calls Socket#close_read #close_write with closed socket.
964 Need to implement rb_global_variable
985 Need to implement rb_obj_instance_eval
965 Regexp literal with options broken in macirb
926 "MacRuby throws an exception of ""undefined method `subsec'"" with DateTime#inspect."
932 MacRuby Document-based Application template missing connections, etc
934 passing Dispatch::Queue#dispatch_object to FSEventStreamSetDispatchQueue fails
929 Colons are always appended to the selector during define_method
664 MacRuby Crashes When Scheduling a Block to Run on the Main Thread from a Background Thread
933 String#split(sep, limit) is broken when specified a limit.
963 Need to implement rb_iterate
927 "MacRuby throws an exception of ""undefined method `subsec'"" with Time#iso8601."
967 Boolean pointer creation assertion
982 Class#public_instance_methods keeps reporting methods after removing them
983 Need to implement rb_call_super
984 strange scoping error in macirb
1028 Strings generated by a directory listing of files with Unicode chars in name cannot be compared
974 Failed assertion when creating pointer Pointers
971 Pointer constructor bug
973 EventMachine fails to build.
1032 dispatch library should be removed
999 Handle Obj-C protocols better in MacRuby
648 "(TypeError) ""unrecognized runtime type"" when receiving a CGEventTapProxy"
576 It's possible to close STDOUT (and presumably other standard IO streams)
968 """NATIVE"" symbol is not solved within rubygems."
961 MacRuby trunk doesn't show the correct file and line numbers in stacktraces involving blocks
772 Assertion fails with 4 bytes non-BMP UTF-8.
962 Appscript framework causes EXC_BAD_ACCCESS error with MacRuby 0.7
990 Calling some CGContext functions raises 'instance variable __octype__ not initialized' warning
1013 Segmentation fault when using readline
1000 Xcode fails to load bridgesupport file automatically for user created framework
520 Confusion in data type names for Core OpenGL
1010 NSPoint/CGpoint =>NaN
135 macgem won't install hpricot
1011 Sinatra fails silently on MacRuby 0.8 nightly builds
1004 warnings when running macirb
1006 rake clean target is now missing intermediate build results
267 Change permissions on Info.plist and InfoPlist.strings
382 undefined constants in Snow Leopard
1014 Unhelpful error message when loading the restclient gem
829 Retrieving a list of local variables from a Binding instance fails
1002 AXUIElement functions won't accept Pointers of type :id
865 "String#lines(separator) is broken when specified separator == """"."
432 Module.nesting not working
1001 All future significant numbers should be novelty tickets
975 macri requires superuser permissions to update cache
91 rss module doesn't work - problem in dublincore.rb or module_eval
500 DRb problems
421 MacGem reports wrong executable directory
848 Recieving SIGABRT signal from GDB
Laurent
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20101213/6b219656/attachment-0001.html>
More information about the MacRuby-devel
mailing list