[MacRuby-devel] MacRuby 0.7 release notes

Daniel Lopes danielvlopes at gmail.com
Sat Oct 2 04:18:07 PDT 2010


Awesome, thanks a lot.

Sent from my iPhone

On 02/10/2010, at 01:44, Laurent Sansonetti <lsansonetti at apple.com> wrote:

> 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 at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel


More information about the MacRuby-devel mailing list