Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 110 lines (93 sloc) 3.631 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
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 =~
[X] 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)
Something went wrong with that request. Please try again.