* transcode.c (econv_init): accept Encoding object as source_encoding
[ruby-svn.git] / ToDo
blob7e5ef523a8028f69791cbc97acd36944cc472fe0
1 Language Spec.
3 - Class#allocate - basicNew
4 - class Foo::Bar<Baz .. end, module Boo::Bar .. end
5 - raise exception by `` error
6 - a +1 to be a+1, not a(+1).
7 - clarify evaluation order of operator argument (=~, .., ...)
8 - :symbol => value hash in the form of {symbol: value, ...} ??
9 * operator !! for rescue. ???
10 * objectify characters
11 * ../... outside condition invokes operator method too.
12 * ... inside condition turns off just before right condition.???
13 * package or access control for global variables??
14 * named arguments like foo(nation:="german") or foo(nation: "german").
15 * method to retrieve argument information (needs new C API)
16 * multiple return values, yield values.  maybe incompatible ???
17 * cascading method invocation ???
18 * def Class#method .. end ??
19 * def Foo::Bar::baz() .. end ??
20 * I18N (or M17N) script/string/regexp
21 * discourage use of symbol variables (e.g. $/, etc.) in manual
22 * discourage use of Perlish features by giving warnings.
23 * non confusing in-block local variable (is it possible?)
24   + remove scope by block
25   + variables appears within block may have independent values.
26 * Regexp: make /o thread safe.
27 * decide whether begin with rescue or ensure make do..while loop.
28 * unify == and eql? again
29 * to_i returns nil if str contains no digit.
30 * jar like combined library package. -> RubyGems?
31 * method combination, e.g. before, after, around, etc.
32 * .. or something like defadvice in Emacs.
33 * property - for methods, or for objects in general.
34 * "in" modifier, to annotate, or to encourage assertion.
35 * selector namespace - something like generic-flet in CLOS, to help RubyBehavior
36 * private instance variable (as in Python?) @_foo in class Foo => @_Foo_foo
37 * warn/error "bare word" method, like "foo",  you should type "foo()"
39 Hacking Interpreter
41 - generational GC
42 * non-blocking open (e.g. for named pipe) for thread
43 * avoid blocking with gethostbyname/gethostbyaddr (use fork ???)
44 * objectify interpreters ???
45 * remove rb_eval() recursions
46 * syntax tree -> bytecode ???
47 * scrambled script, or script filter
48 * setuid ruby
49 * performance tune for in-block (dynamic) local variables.
50 * give warnings to assign magic variables.
51 * export rb_io_{addstr,printf,puts,print}
52 * autoload should work with threads [ruby-talk:4589]
53 * remove stdio dependency from IOs.
54 * warn for inconsistent local variable usage (lv m and method m at the same time). 
55 * MicroRuby
56 * Built-in Interactive Ruby.
57 * Parser API
58 * trap every method invocation, which can be enabled by e.g. trap_call :method.
59 * unify Errno exceptions of same errno, or new exception comparison scheme.
60 * 2.times{|i| if i==0 then a = 15 else puts eval("a") end} should print nil.
61 * Thread#max_stack_size attribute (possible??)
63 Standard Libraries
65 - Module#define_method which takes a name and a body (block, proc or method).
66 - Enume#inject
67 - Array#fetch
68 - IO::for_fd
69 - Process::waitall [ruby-talk:4557]
70 - Process::Status
71 - File::lchown, File::lchmod; xxx - still need work for non existing platforms
72 - move Time::times to Process.
73 - Enumerable#sort_by for Schwartzian transformation
74 - fork_and_kill_other_threads.
75 - signal list (Signal::trap, Signal::list).
76 - move NameError under StandardError.
77 - Integer#to_s(base)
78 - Hash::new{default}
79 - hash etc. should handle self referenceing array/hash
80 - Array#select(n1,n2...) works like Array#indexes(n1,n2...)
81 - use Mersenne Twister RNG for random.
82 - deprecate Array#indexes, and Array#indices.
83 - remove dependency on MAXPATHLEN.
84 - String#scanf(?)
85 * Object#fmt(?)
86 * Time::strptime
87 * Integer[num], Float[num];  Fixnum[num]?
88 * method to retrieve non-number trailer for to_i/to_f.
89 * Stream or Port, abstract superclass of IO ?
90 * String#{pred,prev}, String#downto
91 * optional stepsize argument for succ()
92 * Ruby module -- Ruby::Version, Ruby::Interpreter
93 * introduce Boolean class; super of TrueClass, FalseClass
94 * synchronized method - synchronized{...}, synchronized :foo, :bar
95 * Array#&, Array#| to allow duplication. ???
96 * way to specify immortal (fork endurance) thread;
97 * or raise ForkException to every thread but fork caller.
98 * new user-defined marshal scheme. _dump(dumper), _load(restorer)
99 * library to load per-user profile seeking .ruby_profile or ruby.ini file.
100 * warning framework (warn, warning for Ruby level)
101 * marshal should not depend on sprintf (works bad with locale).
102 * ternary arg pow: a.pow(b,c) == a**b%c
103 * new caller(), e.g. call_stack; needs better name.
104 * pointer share mechanism similar to one in String for Array.
105 * require "1.6" etc. by /usr/lib/ruby/1.6/1.6.rb ;-)
106 * save both "feature names" and "normalized path" in $"
107 * implement Mutex_m (or MutexMixin) using Mutex.
109 Extension Libraries
111 * ptk.rb pTk wrapper that is compatible to tk.rb
112 * Berkeley DB extension
113 * BitVector
114 * thread-safe fcgi
116 Ruby Libraries
118 - urllib.rb, nttplib.rb, etc.
119 * format like perl's
121 Tools
123 * freeze or undump to bundle everything
124 * bundle using zlib