Skip to content
This repository
Fetching contributors…

Cannot retrieve contributors at this time

file 73 lines (57 sloc) 2.275 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
For 0.5 (must do):

[ ] fix irb Binding bugs
[ ] implement Enumerable::Enumerator
[ ] 32-bit should be back
[ ] Hash subclass for immediates
[ ] backtracing / symbolication
[ ] try/catch should use a C++ exception
[ ] rewrite load.c
[ ] fully implement FFI API
[ ] support for bigdecimal
[ ] support for json
[ ] support for zlib
[ ] sockets
[ ] merge stdlib from 1.9.2 trunk
[ ] rubygems should work (modulo C extensions)
[ ] most language/core/library specs should run (modulo a very few exceptions)
[/] port all rb_define_method() calls to rb_objc_define_method()
[/] 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()

For 0.5 (tentative):

[ ] write a pass manager to eliminate unnecessary arrays generated by massigns
[ ] vectorize bignums
[ ] block inlining
[ ] fast regexp =~
[ ] rakefile-ize instruby.rb
[ ] finish AOT compiler (only normal mode)
[ ] multithreaded JIT
[ ] debugger interface
[ ] sync with LLVM 2.6 once it's released

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.