[MacRuby-devel] MacRuby 0.7 release notes
lsansonetti at apple.com
Fri Oct 1 21:44:23 PDT 2010
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 :-)
* 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.
* 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.
* 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__.
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: 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
More information about the MacRuby-devel