Hey, awesome work on the Sandbox class!
I wrote a library to do something similar using FFI and MRI/REE.
I'll definitely be taking a look at that :-)
Congrats on 0.7, too!
Rob
On 2 Oct 2010, at 05:44, Laurent Sansonetti 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
> [email protected]
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________
MacRuby-devel mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel