For 0.6: [X] new Hash class, insertion ordering support, optimized for immediate types [X] new String and Symbol classes, support for 1.9 encoding semantics [X] new Regexp class, thread-safe, ICU-based [X] refactor Foundation bridging models [X] NSDictionary [X] NSArray [X] NSString [X] NSNumber [X] debugger [X] command-line tool [/] MRI C extensions support [X] implement missing API (use nokogiri as test bed) [/] cleanup public headers [ ] define an export file for the linker [ ] GC support [/] rails [X] project creation should work [/] development web server [/] hello world should work [ ] support Mocha [ ] support RSpec [/] 90% (min.) of rubyspecs should pass Historical: [ ] `macgem build' doesn't seem to work [ ] Hash subclass for immediates [ ] honor BridgeSupport printf_format attribute [/] support for bigdecimal (implemented but some specs are failing, need to sync with upstream) [/] support for json (implemented, do we have specs?) [/] support for yaml [ ] pass remaining specs [/] support for openssl [ ] finish porting to the new runtime APIs [ ] check every RSTRING_PTR call to see if they are not f*cking up the data [ ] pass specs (do we have some?) [/] support for zlib [ ] merge stdlib from 1.9.2 trunk [/] most language/core/library specs should run (modulo a very few exceptions) [/] port all rb_funcall() calls to rb_vm_call() [/] port all rb_num_coerce_bin() calls to rb_objc_num_coerce_bin() [/] port all rb_obj_respond_to() calls to rb_vm_respond_to() [/] ri should work [ ] pager problem (apparent bug of IO.popen) [ ] some annotations are not available (`macri -T Array' misses a lot), maybe a YAML merging bug [ ] leaks [ ] fix exception leak [/] thread issues [ ] method cache is not thread safe [ ] blocks are not reentrant ex: b=Proc.new{}; 100.times{Thread.new{100.times{b.call}}}; sleep 1 [ ] exceptions not properly handled by the default EH in GCD blocks called from a different thread ex: g=Dispatch::Group.new; g.dispatch(Dispatch::Queue.concurrent) { raise('hey') }; g.wait [ ] implement Enumerable::Enumerator [ ] write a pass manager to eliminate unnecessary arrays generated by massigns [ ] vectorize bignums [ ] block inlining [ ] fast regexp =~ [ ] rakefile-ize instruby.rb [ ] multithreaded JIT [ ] debugger interface [ ] fully implement FFI API [ ] add support for encodings in strings Porting from rb_define_method() to rb_objc_define_method(): Replace calls to rb_define_method() with a call to rb_objc_define_method() and rewrite the function to conform to the following signatures: // if arity -2 VALUE foo(VALUE recv, SEL sel, VALUE args); // if arity -1 VALUE foo(VALUE recv, SEL sel, int argc, VALUE *argv); // if arity 0 VALUE foo(VALUE recv, SEL sel); // if arity 1 VALUE foo(VALUE recv, SEL sel, VALUE arg1); // if arity 2 VALUE foo(VALUE recv, SEL sel, VALUE arg1, VALUE arg2); // etc. In the case of rb_define_global_function(), replace it with rb_objc_define_method(rb_mKernel, ...) In the case of rb_define_singleton_method() for defining class functions and module-level functions, replace it with rb_objc_define_method(*(VALUE *)klass, ...) In the case of rb_define_singleton_method() for defining methods on individual instances of objects, replace it with rb_objc_define_method(rb_singleton_class(obj), ...) In the case of rb_define_module_function(), replace it with rb_objc_define_module_function() In the case of rb_define_alloc_func(), replace it with rb_objc_define_method(*(VALUE *)klass, "alloc", ..., 0)