Here are the release notes for MacRuby 0.9! An e-mail announcing the release 
will be following.

Highlights:

- Lots of stability fixes (crashers, memory leaks and race conditions), and a 
few performance improvements.
- The internal representation of Strings changed from a dual binary / UTF-16 
model to a pure binary one, principally to avoid problems in multithreaded 
applications. Performance should remain the same in most cases.
- The macruby_deploy program has been enhanced to embed RubyGems (with 
dependencies) and BridgeSupport files. See the new respective --gem and --bs 
options.
- The libmacruby-static.a library is not built by default anymore, because 
static compilation is still a work in progress.
- Upgraded to RubyGems 1.4.2.

Changes:

- Fix a bug in IO.open() where numeric file descriptors could not be passed as 
the first argument.
- Fix an assertion that could happen when calling #methods & friends on a class 
that contains a method name larger than 100 characters.
- Fix a bug in IO.open() where the given path would not be handled as a path 
(calling #to_path if necessary).
- Fix a bug in the YAML extension where yajl_free() would be called on a NULL 
pointer.
- Fix a bug in the OpenSSL extension, when calling ossl_pkey_sign().
- Fix a bug where calling a method defined with #define_method with a block 
accepting a splat argument (arity -2) would crash.
- Fix Ruby warnings in the YAML extension.
- Fix a bug when some splat methods defined with #define_method() would 
segfault at dispatch time.
- Improve the internal rb_eql() routine for performance, makes faster hash 
lookup / keys comparison operations.
- Improve the hashing function for Arrays.
- Move the conformsToProtocol: and performSelector: default logic on direct 
pure-Ruby subclasses.
- Fix a bug in IO#close_write where IOError would not be thrown if the stream 
was readable and non-duplex.
- Fix a bug in IO#write where an exception would be raised if the stream was 
read-only when writing 0 bytes of data.
- Fix a bug in Kernel.require where a file path starting with '~' would not be 
loaded.
- Fix a bug in String#gsub! where we would segfault during string concatenation.
- Fix a bug in the compilation of scopes where the current_block_arg state 
variable wouldn't be re-entrant (this fixes the compilation of the mechanize 
library).
- Fix bugs in String#inspect when called on a string that contains invalid and 
non-BMP characters.
- Fix a potential memory crasher in String#sub and String#gsub where free'd 
memory would be reused.
- Fix a bug where $FILENAME, $* and $-W could be changed.
- Fix a bunch of bugs in Array methods where SecurityError would not be raised 
when $SAFE is 4.
- Fix a bug in Kernel#untrust where an exception would not be raised on a 
frozen object.
- Fix a bug in Kernel#trust where an exception would not be raised on a frozen 
object.
- Fix a bug in Kernel#trust where an exception would not be raised if $SAFE is 
equal or greater than 3.
- Fix a crash in Rational#rationalize due to registering the method with a 
wrong arity.
- Fix a bug when we would free outer memory but still keep outers pointing to 
that memory location, causing crashes later during const lookup (this fixes 
rspec).
- Fix a bug in Struct#hash when called on recursive structs.
- Fix a bug in Array#== when called with recursive arrays.
- Fix a bug in StringIO#puts when called with recursive arrays.
- Fix a bug in Exception#== when an infinite loop would be entered when 
comparing exceptions from different classes.
- Fix a bug when #initialize_copy would not raise an exception when called on 
Object or BasicObject.
- Add support for encodings ISO8859_{2..16}.
- Fix a bug in String#search_codepoint where breaks were ignored.
- Fix a bug in OpenSSL::BN#to_s.
- Fix a bug in OpenSSL::PKey::DH#compute_key.
- Fix a bug in OpenSSL::X509::Attribute#to_der.
- Fix a bug in OpenSSL::PKCS5.pbkdf2_hmac(_sha1).
- Fix a bug in OpenSSL::PKey::DSA#syssign.
- Fix a bug in OpenSSL's ossl_x509store_initialize() function where an internal 
value would not properly be initialized.
- Fix a bunch of bugs in Array methods where an exception would not be raised 
when passing very large indexes or ranges.
- Fix a bug in Array#inspect where an untrusted string would not be returned.
- Fix a bug in String#unpack when called with a block.
- Add support for variadic objc method dispatch in the parser.
- Fix a bug in Socket.pair where the sockets would not be yielded when passing 
a block.
- Fix a bug in Socket.pair(domain, type, protocol) and Socket.new(domain, type, 
protocol) where protocol would not be an optional argument.
- Fix a bug in Socket.getservbyport(port) where a port outside the uint16 range 
would be accepted.
- Fix a bug in Socket.getservbyport where the network byte order value would 
not be passed to the underlying API.
- Fix a memory leak and potential crasher in Regexp's internal 
rb_reg_matcher_new() function.
- Fix various memory leaks and potential crashers in code paths that require 
binary -> UTF-16 conversions.
- Fix a bug in OpenSSL::BN#prime?.
- Add the #size class method on BridgeSupport struct classes. Example, 
NSRect#size returns the same as sizeof(NSRect) in C.
- Fix a bug in OpenSSL::SSL::SSLSocket#cert.
- Fix -[MacRuby evaluateFileAtPath:] to behave like #require, so that it can 
also handle .rbo or .bundle files.
- Fix a bug when sending KVO notifications on immediate objects would cause a 
crash.
- Cleaned out all public header files.
- Fix a bug in Sandbox.new where passing a non-String object would cause a 
crash.
- Add rb_str_plus() CRuby API.
- Fix a bug in {Thread,ThreadGroup,Mutex}#alloc where we would not return 
objects from the current class (could be a subclass).
- Fix a bug in Kernel#public_method where an exception would not be raised when 
called without public methods.
- Fix bugs in Module#{remove_method,undef_method,public} to honor untrusted 
state.
- Add Pointer.magic_cookie to create pointers with arbitrary values (must fit 
in a long). Example: Pointer.magic_cookie(42).
- Fix a bug in Module#method_defined? where false would not be returned was 
passed the name of private method.
- Fix the compilation of C blocks to not use a global variable to store/load 
the Proc object to call, but instead retrieve a reference to it from the block 
literal argument. This fixes nested C blocks.
- Fix a bug in Kernel#<=> will 0 would not be returned when receiver's == 
return true.
- Fix a bug in Module#public_method_defined? where true would not be returned 
when was passed name/symbol of public method.
- Fix a bug in Array#pack with format "fFeEdDgG" to raise a TypeError when does 
not convert into float.
- Fix bugs in #sprintf when passing the following formats: "%# x", "%010.4f", 
"%010.4u".
- Fix a bug in String#unpack with format 'Q' to add add nil for each element 
requested beyond the end of the String.
- Fix a bug in String#scan to return an Array object with each element tainted 
or untrusted when #scan returns nested arrays.
- Fix a bug in Array#[]= to check frozen state before attempting to coerce 
arguments.
- Fix a bug in String#initialize to raise a RuntimeError if self is frozen.
- Fix a bunch of bugs detected by clang's link time optimization (LTO). 
- Fix a bug in -[NSArray ==:] and -[NSDictionary ==:] where a crash would occur 
if passed a Ruby immediate type.
- Fix bugs in String#each_char and String#ord to now raise an exception if the 
String contain invalid characters.
- Fix a bug in String#ord to return the byte value even if a it's not an ASCII 
character.
- Fix a bug in the dispatcher where free'd memory would be accessed.
- Fix a bug in #at_exit when the process would abort if a block raised an 
exception.
- Fix a bug in Array#delete where we would check if the receiver can be 
modified *after* modifying it.
- Fix a bug in Mutex and ThreadGroup where modifying internal array structures 
under SAFE level of 4 would raise an exception.
- Fix a problem in #load: instead of crashing if we cannot locate the entry 
point of a .rbo file, raise an exception with a message explaining the most 
common problem cause instead.
- Fix a bug in the compilation of the 'next' expression which would not honor 
ensure blocks.
- Add support for #define_method when passing Method.
- Fix a bug in StringScanner on multiline strings.
- Fix a bug in macirb where a syntax error would exit the program.
- Improve the performance of #pack with most flags by pre-allocating the result 
bytestring, to avoid too-much frequent memory reallocations.
- Fix a 32-bit precision bug when converting Time objects to NSDate objects.
- Allow Float objects to be trusted/untrusted and tainted/untainted.
- Fix the default value of BasicSocket.do_not_reverse_lookup to be true.
- Fix a bug in Thread.kill when passing a non-Thread object would cause a crash.
- Fix calls to -[NSString fileSystemRepresentation] to catch potential 
exceptions.
- Fix a bug in macruby_deploy with --embed where the main application's 
executable's link path would not be updated.
- Fix a bug in macruby_deploy with --embed to now delete the Current symlink as 
it seems to cause the AppStore validation process to fail.
- Add the Errno.code method to return the current errno value.
- Fix a race condition bug when generating internal class names where 
concurrent access would cause runtime problems.
- Add missing CRuby API rb_thread_blocking_region().
- Fix a race condition bug when spawning a new VM instance and copying the 
current VM dispatch cache.
- Fix a memory leak when resolving JIT methods.
- Fix a race condition bug when dispatching and resolving a method at the same 
time.
- Fix lexical const lookup bugs inside modules defined using the :: notation.
- Fix const lookup calls to include necessary DWARF metadata, in order for 
#const_missing calls to appear in backtraces later at runtime. 
- Change the framework's bundle identifier to use macruby.org instead of 
apple.com.

Tickets closed:

#1155   Embed BridgeSupport Files
#1067   Segfault occurs when calls Struct#hash with recursive structs.
#1116   Yet another String performance issue
#1122   Inspection of NSArray stops at unicode char
#1134   The new code for next/ensure does not work properly
#1133   Silly syntax error crashes macirb
#1124   string.ord returns 0xFFFF for all characters 0x80 or greater in binary 
string
#1075   rdoc is way too slow as of r5059
#1160   Need ability to access errno from Ruby code
#1055   running RSpec with MacRuby 0.9 r5038 and greater causes seg. fault
#1070   rspec2 segfaults when I try to run it
#1136   Array#pack performance w/ base64 strings
#1087   Assertion fails when Array#[]= was specified with very large index.
#1143   Dates in 32-bit converted from NSDate are not precise enough
#1142   Array#pack performance while converting array of ASCII values to string
#1137   macruby_deploy should automate gems embedding
#1083   Segfault occurs when calls the String#unpack('i') with block.
#1054   Assertion failed. "(arity >= 0), function compile_block_caller"
#1040   Dalli test suite crashes
#1088   Performance: String#* is very slow.
#1039   Bundler fails with TypeError: can't convert Pathname into String
#1076   Abort occurs when raise a SecurityError within Thread.
#1074   Abort occurs when install the rubygems.
#1078   segfault when trying to use macgem to install a gem
#1092   Unable to Update MacRuby Gems
#1127   Access to freed memory in rb_vm_dispatch
#868    Should not get a value until calling Hash#rehash when Object of Hash's 
key was changed.
#1080   Add #size method for C struct classes
#1043   Cocoa Binding broken
#1045   restclient gem fails when trying to GET
#1081   API function for loading RBO files from Objective-C environment
#1105   upgrade to rubygems 1.4.2
#1106   #initialize is not called in class which inherit Mutex.
#1107   Need to implement rb_str_plus.
#1047   Clean up warnings when installing gems
#1009   Can't set status of taint and untrust to Float Object.
#1132   Reopening a class modifies it
#1050   Segfault occurs with Rake::namespace.
#766    macrake overrides /usr/bin/rake
#1125   case insensitive fs require bug
#1109   Installing a gem from disk fails
#1051   Segfault occurs with RDoc::Parser::Ruby.
#1034   Requiring Mechanize gives segmentation fault
#1123   does not process the "ensure" when called the "next".
#1112   Allowing pointers to be created and initialised directly with an integer
#1121   Assertion failed: (boundaries.start_offset_in_bytes <= offset_in_bytes)
#668    Newlines and carriage returns cause erroneous matches in StringScanner
#1048   Performance of Hash with an Array as a key
#106    Syntax error with Variadic function
#1077   Performance of String
#1084   Abort occurs when was passed Object of Method to define_method.
#1062   Segfault occurs when calls Rational#rationalize with no arguments.
#1019   String#gsub performance
#1058   Segfault occurs when Array#== handles recursive array.
#1060   Segfault occurs when StringIO#puts handles self-recursive array.
#1063   Segfault occurs when compare the objects of Exception.
#1113   unexpected behaviour with enumerateObjectsUsingBlock
#1131   Abort: exception is not caught when open the file which is not existing 
in at_exit block.
#1115   Bundler not working since updating to rubygems 1.4.2
#1128   MacRuby builds broken gems, probably since 1.4.2 update
#1072   macgem is broken in trunk
#1073   Allocation/free errors popping up when I try to autocomplete in macirb
#1150   Segfault occurs with Thread.kill when was passed Object other than 
Thread.

Laurent
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to