forked from MacRuby/MacRuby
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTODO
109 lines (93 loc) · 3.55 KB
/
TODO
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)