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

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

Reply via email to