Hi guys,

MacRuby 0.7 is now ready to be released. I created a branch called "0.7" which 
might host minor fixes, and I'm now working on preparing the release and 
announcement post. It should now be released very soon, likely Monday (we want 
to do more testing).

In the meantime, trunk becomes MacRuby 0.8, where the story continues!

Thanks to everyone working on this release, which closes a successful 5 months 
development cycle.

Following are the complete release notes, the upcoming announcement post will 
be clearer :-)

Highlights:

* Better Ruby compatibility. Better C extensions support. This release has 
about 90% of RubySpec coverage.
* Better concurrency. Dispatch cache has been rewritten to be thread safe. 
Fixed several race conditions and deadlocks. MacRuby can now handle a 
significant number of concurrent HTTP requests through ControlTower. Fixes and 
improvements in the Dispatch library.
* Better Cocoa support. Reduced runtime overhead, fixed minor problems and 
simplified the integration with Cocoa classes. C-style blocks are now supported 
in MacRuby, assuming you install the new BridgeSupport preview release. The 
sandbox(7) functionality is now exposed in the Sandbox class.
* Better performance. MacRuby's kernel primitives are now pre-compiled into 
LLVM bitcode and inlined later into the module. Fixed minor performance 
regressions introduced in last release. Optimized codegen, instance variables 
and multiple assignments. In JIT mode, cold paths are now interpreted and not 
JIT compiled. Introduced a regression performance suite.
* MacIRB has been rewritten from scratch. The new version (called DietRB) is 
lighter and better implemented. It should be compatible with the old IRB.
* Started working on static Ruby compilation, which generates executable 
binaries embedding the MacRuby runtime, not making use of the JIT compiler or 
BridgeSupport runtime metadata. This is a work in progress and we intend to 
finish it in the next release.
* Mac OS v10.5 (Leopard) is no longer supported. We require MacRuby users to 
upgrade to Snow Leopard.

Other changes:

* Fixed clang/clang++ build.
* Fixed a crash when trying to create a byte string out of an empty NSString.
* Fixed a small typo in the compilation error message.
* Fixed a bug when bridgesupport files for linked frameworks wouldn't be loaded.
* Fixed a crash when calling #to_json on a symbol.
* Fixed a bug in Method#call which would incorrectly change the safe level.
* Now filtering the symbols we expose in the macruby dylib.
* Avoid calling xmalloc() with a zero size (fixes several performance problems).
* #sysread with a len argument must return a binary string, not UTF-8.
* Allow Pointer objects of type 'c' to be passed as C-style char arrays.
* Fixed a bug in NSString#== where an exception would occur if the operand 
cannot be converted as a string.
* Got rid of the NSNumber glue, it's useless since NSNumbers are always 
converted.
* In case we are in a .app with MacRuby.framework embedded inside, relocate the 
load paths accordingly.
* Deal with numeric escapes in regexps.
* Symbol#to_proc now generates a Proc that can accept a variable number of 
arguments.
* Fixed minor bugs in symbol and enumeration.
* Implemented of String#encode.
* Fixed String#each_byte to return positive numbers.
* Made NSObject#== and NSObject#eql? use -[NSObject isEqual:].
* Fixed minor bugs in Array and implemented #rotate, #rotate!, #select!, 
#keep_if, #sort_by!.
* More robust runtime signature parsing, by dynamically allocating the 
temporary buffer instead of using a static array (which might be too small when 
parsing big signatures like in CoreAudio).
* Be careful when compiling the struct #new method, some fields might be large 
(ABI-wise) structures.
* Fixed minor bugs in Dir, implemented #home.
* Create symbols from the auto zone, allowing associative references to work 
without emitting warnings/errors.
* Fixed minor bugs in Enumerable and implemented #flat_map, #collect_concat, 
#each_entry, #each_slice, #each_cons, #each_with_object.
* Fixed a bug in the compilation of the alias keyword, some arguments can be 
interpolated symbols (not literals).
* Removed the sigbus/sigsegv signal handlers, let macruby crash immediately to 
make the life of crashtracer easier.
* Fixed minor bugs in Enumerator and implemented #each_with_object, 
#with_object.
* Fixed minor bugs in File and implemented #absolute_path and #size.
* Backported latest net/http from ruby trunk.
* Fixed minor bugs in Fixnum and implemented #magnitude.
* Fixed minor bugs in Float and implemented #rationalize.
* Added some missing MRI C-APIs.
* Added support for the nkf extension.
* Fixed a bug when popping exceptions from compiled code.
* Fixed minor bugs in the GC module.
* Made the division of negative fixnums behave like MRI.
* Fixed minor bugs in Math.
* Fixed #define_method with a Proc to compile a stub with the same arity as the 
block.
* Cleaned up public headers.
* Simplified the Core Data Xcode template.
* Better ivar slot system for RubyObject + misc fixes/cleanup.
* Introduced the VM_VERIFY_IR environment variable to force a LLVM module 
verification. Made sure the RubySpec suite runs with no verification error.
* Webrick bug fixes.
* Follow API changes in LLVM.
* Define the encoding constants in upper case, also.
* Some of the VM primitives are not precompiled into bitcode and later inlined. 
* Reduced usage of std::vector.
* New sample code: Suru, a to-do list app that uses Core Data for storage.
* Fixed a bug when rbconfig.rb would not honor ARCH_FLAG.
* Don't recognize ^v as a CF type + misc cleanup.
* A more efficient class flags mechanism.
* Reduced the number of default slots in RubyObjects to 4.
* rake now accepts optional CC and CXX variable to setup custom compilers. To 
compile with clang, use rake CC=clang CXX=clang++.
* Fixed a bug in IO#read when the given buffer wouldn't be truncated.
* Don't temporarily disable the collector when booting the runtime.
* Do not raise ArgumentError in the case where the method has been undefined.
* Implemented String#each_codepoint and String#codepoints.
* macrubyc: when linking a final executable, also link against Foundation and 
libauto since some of their symbols can now be inlined.
* Set the actual backtrace to Obj-C exceptions, instead of an empty array.
* Per-vm method cache + misc fixes/improvements.
* Fixed the return value of NSArray#reject.
* Ruby strings now respond to #to_data which returns an NSData object wrapping 
the internal storage.
* Implemented File#realpath and File#readdirpath.
* Implemented IO#sysread (unbuffered reading).
* Ruby version is now set to 1.9.2.
* Do not run node if node is not executable.
* Do not allow creation of pointer to "v".
* Removed usage of autozone weak references.
* macrubyc: always link using the current macruby's libdir.
* Allow reserved keywords to be used as function keyword arguments.
* Removed usage of RTTI.
* macrubyc: now strip symbols from binaries.
* Strip symbols from shared and static library during install.
* Fixed minor encoding bugs in net/protocol and resolv.
* Fixed a bug in IO#sysread to make sure the buffer is properly resized.
* Don't instantiate the JIT when running in AOT mode.
* Honor the target triple from the deserialized kernel module
* Expose the VM_KERNEL_PATH variable to specify a kernel bitcode file.
* When the default -description is called, avoid calling #to_s on the object if 
the implementation is the same.
* Fixes using ruby Array methods on SBElementArray objects.
* Create all functions with internal linkage since the super dispatcher no 
longer requires external symbols.
* AOT: when preparing methods, also pre-compile objc stubs (currently, only 
generic ones).
* Added Object#to_plist and Kernel#load_plist for property list manipulation.
* Fixed bugs in open3 lib and Process.spawn.
* Time now inherits from NSDate.
* Before acquiring the core lock when resolving a method, make sure the VM 
object has been created/registered, since it might be needed when adding the 
method and if called by a foreign thread it might cause a deadlock.
* Fixed the compilation of while loops with empty bodies (ex: '() while 1').
* C extension Ruby files are now pre-compiled during build.
* +[MacRuby sharedRuntime]: don't forget to init the JIT!
* When creating a regex matcher, don't crash if there is no capture.
* macrubyc: added --sdk option (work in progress).
* Fixed build on 10.5. But it's no longer supported, so don't use it.
* Reduce/restore safe level when formatting an exception (since it may taint 
objects).
* Fixed bignum promotion when multiplying fixnums.
* Don't crash when trying to deal with constants whose symbols cannot be 
located or constants tagged as magic cookies.
* Added support for splat when clauses inside empty-case statements (don't ask 
me why).
* Make sure Bignum#modulo uses the implementation function.
* Fixed a minor bug in ENV#rassoc.
* Added support for comparison of recursive structs.
* Fixed a bug in IO#gets.
* When preparing a block, make sure to write barrier the reference to self.
* Always return 'main' as the top level object description.
* String#gsub with block: don't check for receiver mutable state.
* Removed Array#nitems and fixed Array#count for empty arrays.
* Thread#join: when timeout is provided, make sure to do multiple sleeps and 
return appropriately if the given thread has finished.
* Fixed #marshal_load for non-array arguments.
* Fixed bugs in the NSString forwarding methods.
* Implement Socket#sendfile.
* Fixed many crash bugs discovered by fuzzing.
* Added a Sandbox class that adds sandbox(7) functionality.
* Implement #remove_instance_variable for RubyObjects.
* Fixed #remove_instance_variable for native objects.
* Fixed several bugs in the BridgeSupport parser to make it read the files 
created by the new generator.
* Lots of openssl bug fixes.
* New sample code: Sketch, a MacRuby port of the existing Objective-C 
application.
* Added basic support to define/message ignored selectors (retain & friends).
* Fixed the compilation of store instructions to not be compiled as volatile, 
allowing further optimizations.
* Fixed a crash when yielding a block inside a loop in a thread.
* Fixed a bug in Method#== where it wouldn't work on pure objc methods.
* Honor the original string encoding when generating substrings out of a regexp 
matcher.
* When unregistering a thread, mark is as dead very early to avoid pthread 
mutex lock problems when potentially canceling it later.
* Raise an exception in case we try to stop the only running thread.
* Fixed many zlib bugs/crashes.
* #instance_eval: don't attempt to create singleton classes on symbols.
* Fixed a compiler bug where it would assume that the argument of the undef 
keyword would always be a literal symbol.
* Honor bridgesupport metadata when calculating the default objc signature of a 
new method.
* Better C implemention of iconv.
* Make sure rake won't overload -copy.
* When trying to convert a string into a numeric type, raise an exception in 
case the string encoding isn't ASCII incompatible.
* Mutex#try_unlock: Add the mutex to the current thread mutexes on success.
* Fixed a 1.9 bug in File.basename.
* Fixed marshal load of large integers.
* Fixed a bug when string-formatting numeric types.
* Don't attempt to #load directories.
* When killing the main thread, just exit the program.
* Fixed a bug in File.extname.
* Rewrote the regexp layer in pure C to avoid binary incompatibility issues 
with ICU.
* +[MacRuby sharedRuntime]: initialize the load path.
* pack(U) should set an encoding of UTF-8.
* String#strip: don't strip non-ASCII whitespaces.
* Fixed #flatten not setting untrust state.
* Properly reap child processes before closing their IO objects.
* Hash#to_a: transfer untrusted status to the new array.
* Honor ThreadGroup frozen state.
* Don't allow a Thread object to be initialized twice.
* Avoid mutual recursion while setting outers.
* Merge webrick security fix from 10.6 SU.
* Fixed a bug in the BridgeSupport parser when dealing with circular 
dependencies + minor bug fixes.
* Fixed multiple AOT feature #requires.
* Fixed a memory leak in the BridgeSupport parser.
* Fixed String#sum to accept bits argument greater than 64.
* macrubyc: now accept more linker options: --compatibility_version, 
--current_version and --install_name.
* #sprintf: don't try to mutate symbols.
* Optimized IO read_all.
* Fixed alignment bugs in the GCD layer.
* Dir.tmpdir: returns NSTemporaryDirectory() in last resort and not /tmp.
* Re-cache Obj-C variadic calls when argc is different than cached.
* macgem now asks confirmation before overriding binaries w/ different shebang.
* When a GCD block exits because of an uncaught exception, write a message on 
stderr.
* When a thread exits prematurely because of an exception, write a message on 
stderr once the thread object is being finalized only if #join was never called.
* Range#each: make sure break works in all cases.
* Fixed reentrance bugs in #load & friends.
* Synced bigdecimal extension with upstream code + fix some crashers 
(heap/stack corruption).
* Don't crash when using defined?(super) out of a method block.
* BridgeSupport parser: in 32-bit mode, ignore elements having only type64 
attributes.
* Let's complain when trying to resize a string with a negative capacity like 
MRI does.
* Don't raise an exception when comparing an NSDictionary with a non-one.
* No longer install digest.h.
* Issue write barriers when storing objects into Binding slots (this should fix 
most of the macirb crashers).
* Fixed a bug in the super dispatcher: in case we can't locate the receiver's 
class in the ancestors chain, because it may have been extended, let's assume 
the super method will be in the direct superclass instead.
* #require: forget about the current binding during parsing.
* Rewrote AOT .rbo files loading mechanism: now using a callback routine 
instead of calling directly the main scope from the dylib constructor, since 
the dyld trampoline will not properly forward C++ exceptions.
* Added 2 new sample code scripts: javascript.rb and webrick.rb.
* Fixed a bug when changing a method's visibility to public would not be taken 
into account.
* Don't invalidate respond_to and dispatch caches while we are still booting 
the runtime.
* When calculating a backtrace path from a -e script, omit the current 
directory.
* File.unlink: rewrote so that the arguments aren't wrapped inside an array 
anymore, to avoid a resurrection error in lib/tempfile.rb.
* Fixed a silly bug in String#setbyte.
* macrubyc: disable frame pointer elimination optimization because it will mess 
up with the backtracing routine which walks through the stack.
* Added basic support for __method__ and __callee__.

Fixed tickets:

677     Macruby segfaults when performing symbol#to_json
702     AudioTimeStamp.new crashes MacRuby 0.6
773     Segfault occurs when specified $SAFE=4 and exception is generated.
739     String#match calls block twice
879     open-uri/stringio throw enoding errors
710     MacRuby 0.6 performance decline from 0.5 in AO Bench
841     Segfault occurs when calls the Rake::Application#const_warning.
872     An Instance of Thread is not necessary to be able to reinitialize.
740     Building LZMA gem fails
511     GCD crash with indirect method access
741     All character encoding of the string become UTF-8 when use 
force_encoding.
719     IO.read is broken
716     Undefining a method and then calling the method with a different arity 
than the original fails wrong
790     Exception is not generated when calls Thread.stop with only one thread.
902     Bus error with OpenSSL::Random.pseudo_bytes.
728     pre-definition of true conflicts with the mysql gem
708     nkf must be bundled and functional
785     Thread.join(limit) is brocken.
691     Runtime should allow pointer types for C-string arguments
864     String#sum(bits), throws an exception when specified bits >= 64.
694     framework 'Cocoa' in macirb crashes 0.6, 0.7
669     Unable to find QTKit constant within a MacRuby app
826     Symbol#instance_eval raises a TypeError
835     Abort occurs when kills the MainThread.
761     Integer 2  multiplication by self seems wrong
328     Calling a ObjC-method with a named argument which is a Ruby keyword 
does not work
784     Exception is generated when change Hash's key.
830     Assertion fails when calls undef with Symbol including expression 
interpolation.
802     Assertion or Segfault occurs when calls the Zlib::Deflate.deflate.
451     "Attempting to require ""nkf"" results in a LoadError"
369     Change wording of sample-macruby/buildall.rb
631     soap4r is not working for me
807     rack does not work due to regexp compilation error
617     Reopening Symbol Appears to Cause auto malloc[16067]: error for object 
0x1016090b0: auto_zone_set_associative_ref
824     Calls to #validateUserInterfaceItem: have no effect
463     Intermitent crashes with MacRuby 0.5 HEAD (2009/11/26), Ruby threads 
and RestClient/Net:HTTP
808     sinatra does not load
764     Weird instance variable value of C extension.
859     rubygems load error when running script using evaluateFileAtPath:
522     URI.parse  insecure operation
584     BigMath.sqrt always returns NaN
766     macrake overrides /usr/bin/rake
586     """macgem build"" fails."
612     RegexpError: U_REGEX_BAD_ESCAPE_SEQUENCE
652     """alias"" keyword doesn't compile with symbolized-interpolated-strings"
877     rb_vm_struct_fake_set & rb_vm_resolve_const_value crash w/ NSOperation 
in Skreenics
695     Bitwise operations on Float results in Seg fault
685     inject doesn't work with Procs
650     Issues with passing procs/methods to #map
882     Bus error with catch / throw, Using 32bit arch.
767     Some minor issues with framework constants
825     Segfault occurs with Iconv#iconv and Iconv.iconv when calls that nil is 
specified for string.
699     While installing twt, failed compile in yajl
776     Segfault occurs with empty `case' clause and splat argument `when' 
clause.
803     remove_instance_variable bug
712     Feature Request: Add Support for C-Level Blocks
66      Death by Iconv
425     RSpec not working
775     Segfault occurs when calls Bignum#modulo
730     macrubyc is failing on trunk
618     Range#each problem with Infinity
675     Trying to do I/O on empty NSString crashes MacRuby
701     Hash: complex keys don't work correctly
725     rake should support CC and CXX flags
462     "Net::HTTP Gives ""Insecure Operation"" When Using HTTPS"
777     Segfault occurs when calls ENV#rassoc.
778     Segfault occurs when calls IO#syswrite
659     ER: Calling #== on an Obj-C object calls -isEqual:
703     Call AudioDeviceCreateIOProcID() cause assertion failed
729     rbconfig.rb does not honor ARCH_FLAG
779     Segfault occurs when use Struct which set Struct's instance to member.
857     ld: duplicate symbol _vm_ivar_get
862     [BUG] ERROR(VpDivd): space for remainder too small
707     raising an exception inside a rescue raises the rescued exception 
instead of the new exception
750     Net::HTTP.get fails
746     Net::HTTP assertion failed
340     "http.get failing with the error ""wrong chunk size line:  
(Net::HTTPBadResponse)"""
689     Net::HTTP.post_form() is broken.
680     String.crypt crashes when called with no arguments
430     MacRuby does not reap processes started with popen
686     security escalation bug via pretty_print & Dir.entries
692     Embedded MacRuby still tries to use ruby library from 
/Library/Frameworks
690     calling `!= nil' on an NSString raises a TypeError exception
815     Macrake crashes at initialization
843     Can't load the same files with MultiThread at the same time.
503     connect to udp socket: getaddrinfo: nodename nor servname provided, or 
not known (SocketError)
844     Assertion fails when use the same variable with more iterators, and use 
Thread.
838     "Assertion fails when use #hex on String converted into ""utf-16le""."
744     map on an array delivered by terminal app via scripting bridge gives an 
immutable error
847     Assertion fails when calls Mutex#unlock, after calls Mutex#try_lock 
several times.
866     String#strip shouldn't strip unicode whitespaces
711     MacRuby caught SIGSEGV when call Dispatch::Job#add many times
770     IO#gets is broken when specified limit.
780     Segfault occurs when calls Proc after GC was executed.
752     description -> to_s infinite loop
852     "IO#read should return """" in outbuf when calls the IO#read(length, 
outbuf) with position of Discriptor == EOF."
754     TCP socket is disconnected when used IO#gets and IO#puts.
735     Array#reduce on an Array from CalCalendarStore returns nil
722     Multiple Threads are causing Segmentation Faults
732     Ruby strings should have a to_data method
627     Obj-C exception raised within a rescue block are not catched
592     No such file to load -- ubygems (LoadError)
731     uninitialized constant IO::WaitReadable / IO::WaitWritable
573     Creating a void pointer causes abort()
549     Class variables are not initialised properly.
499     Order declaring class hierarchy gets MacRuby confused about instance 
variables
696     net/ftp doesn't work
590     Process.spawn not implemented
760     C-level blocks are not supported
758     Time objects should work with #to_plist and #load_plist
236     Array.pack bug
853     "File.extname('.....x') should return """"."
889     Bus error with OpenSSL::ASN1.decode.
858     """rake spec:ci"" crashes."
816     Assertion fails on multi-threaded code
869     Assertion failure when printing pathExtensions for an NSURL
809     Bus error doing cipher encryption with OpenSSL
867     Hash#to_a can't copy status of untrust.
810     MacRuby can't install the nokogiri of rubygems.
620     Yielding a block inside a loop in a thread crashes the VM
819     Getting references to Method instances leads to segfault
870     Array#flatten can't copy status of untrust.
753     An error occurs when access to Webrick's HTTPServer.
820     raising alternative Exception object in rescue block does not work.
811     Bus error encrypting/decrypting with OpenSSL
813     
/Library/Frameworks/MacRuby.framework/Versions/0.6/usr/lib/ruby/1.9.0/csv.rb:1817:in
 `block': Unclosed quoted field on line 1. (CSV::MalformedCSVError)
850     "File.basename is broken when calls the File.basename("".."", "".*"")."
893     Bus error with OpenSSL::ASN1::Sequence.to_der
804     Constant lookup fails in instance_eval of a singleton class
814     SegFault running CGI script from command line
727     re.h header missing
663     Kernel#sprintf formatting broken on trunk
502     Marshalling large integers returns the wrong value.
846     Can't load the file when the file and the directory of the same name 
exist in load-path.
757     NSProgressIndicator takes 100% CPU
873     ThreadGroup doesn't honor frozen state
763     rb_singleton_class() calls can't be interpreted
890     Bus error with OpenSSL::X509::Name.new.
905     "Can't install the rubygems that create a file in ""/usr/bin/""."
891     Bus error with OpenSSL::Netscape::SPKI.to_der.
912     macirb crash on launch
894     Bus error with OpenSSL::X509::Attribute.new
892     Bus error with OpenSSL::X509::CRL.issuer.to_der
897     Bus error with OpenSSL::PKey::EC#dsa_sign_asn1.
914     September 22nd nightly build fails trying to install mongrel
898     Bus error with OpenSSL::X509::Request#to_der
885     string formatter %-8s with symbol crashes
919     URI::HTTP path_query method is private in MacRuby but not in MRI
880     Bus error with Dispatch::Source, Using 32bit arch.
900     Assertion fails with OpenSSL::X509::Certificate.issuer.to_der
899     Bus error with OpenSSL::PKCS7#to_der
723     bug when calling the same variadic method multiple times with different 
arity

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

Reply via email to