diff options
Diffstat (limited to 'ruby_1_8_6/ToDo')
-rw-r--r-- | ruby_1_8_6/ToDo | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/ruby_1_8_6/ToDo b/ruby_1_8_6/ToDo new file mode 100644 index 0000000000..b55e399edf --- /dev/null +++ b/ruby_1_8_6/ToDo @@ -0,0 +1,126 @@ +Language Spec. + +- Class#allocate - basicNew +- class Foo::Bar<Baz .. end, module Boo::Bar .. end +* operator !! for rescue. ??? +* objectify characters +* ../... outside condition invokes operator method too. +* ... inside condition turns off just before right condition.??? +* package or access control for global variables?? +* named arguments like foo(nation:="german") or foo(nation: "german"). +* method to retrieve argument information (needs new C API) +* multiple return values, yield values. maybe incompatible ??? +* cascading method invocation ??? +* def Class#method .. end ?? +* def Foo::Bar::baz() .. end ?? +* I18N (or M17N) script/string/regexp +* Fixnum 0 as false ???? +* discourage use of symbol variables (e.g. $/, etc.) in manual +* discourage use of Perlish features by giving warnings. +* non confusing in-block local variable (is it possible?) + + remove scope by block + + variables appears within block may have independent values. +* Regexp: make /o thread safe. +* decide whether begin with rescue or ensure make do..while loop. +* a +1 to be a+1, not a(+1). +* unify == and eql? again +* to_i returns nil if str contains no digit. +* raise exception by `` error +* jar like combined library package. -> RubyGems? +* resumable Exception via Exception#resume. +* method combination, e.g. before, after, around, etc. +* .. or something like defadvice in Emacs. +* property - for methods, or for objects in general. +* "in" modifier, to annotate, or to encourage assertion. +* selector namespace - something like generic-flet in CLOS, to help RubyBehavior +* private instance variable (as in Python?) @_foo in class Foo => @_Foo_foo +* warn/error "bare word" method, like "foo", you should type "foo()" +* clarify evaluation order of operator argument (=~, .., ...) +* :symbol => value hash in the form of {symbol: value, ...} ?? + +Hacking Interpreter + +- generational GC +* non-blocking open (e.g. for named pipe) for thread +* avoid blocking with gethostbyname/gethostbyaddr (use fork ???) +* objectify interpreters ??? +* remove rb_eval() recursions +* syntax tree -> bytecode ??? +* scrambled script, or script filter +* setuid ruby +* performance tune for in-block (dynamic) local variables. +* give warnings to assign magic variables. +* export rb_io_{addstr,printf,puts,print} +* autoload should work with threads [ruby-talk:4589] +* remove stdio dependency from IOs. +* warn for inconsistent local variable usage (lv m and method m at the same time). +* MicroRuby +* Built-in Interactive Ruby. +* Parser API +* trap every method invocation, which can be enabled by e.g. trap_call :method. +* unify Errno exceptions of same errno, or new exception comparison scheme. +* 2.times{|i| if i==0 then a = 15 else puts eval("a") end} should print nil. +* Thread#max_stack_size attribute (possible??) + +Standard Libraries + +- Module#define_method which takes a name and a body (block, proc or method). +- Enume#inject +- Array#fetch +- IO::for_fd +- Process::waitall [ruby-talk:4557] +- Process::Status +- File::lchown, File::lchmod; xxx - still need work for non existing platforms +- move Time::times to Process. +- Enumerable#sort_by for Schwartzian transformation +- fork_and_kill_other_threads. +- signal list (Signal::trap, Signal::list). +- move NameError under StandardError. +- Integer#to_s(base) +- Hash::new{default} +- hash etc. should handle self referenceing array/hash +- Array#select(n1,n2...) works like Array#indexes(n1,n2...) +- use Mersenne Twister RNG for random. +- deprecate Array#indexes, and Array#indices. +- remove dependency on MAXPATHLEN. +* String#scanf(?) +* Object#fmt(?) +* Time::strptime +* Integer[num], Float[num]; Fixnum[num]? +* method to retrieve non-number trailer for to_i/to_f. +* Stream or Port, abstract superclass of IO ? +* String#{pred,prev}, String#downto +* optional stepsize argument for succ() +* Ruby module -- Ruby::Version, Ruby::Interpreter +* introduce Boolean class; super of TrueClass, FalseClass +* synchronized method - synchronized{...}, synchronized :foo, :bar +* Array#&, Array#| to allow duplication. ??? +* way to specify immortal (fork endurance) thread; +* or raise ForkException to every thread but fork caller. +* new user-defined marshal scheme. _dump(dumper), _load(restorer) +* library to load per-user profile seeking .ruby_profile or ruby.ini file. +* warning framework (warn, warning for Ruby level) +* marshal should not depend on sprintf (works bad with locale). +* ternary arg pow: a.pow(b,c) == a**b%c +* new caller(), e.g. call_stack; needs better name. +* pointer share mechanism similar to one in String for Array. +* require "1.6" etc. by /usr/lib/ruby/1.6/1.6.rb ;-) +* save both "feature names" and "normalized path" in $" +* implement Mutex_m (or MutexMixin) using Mutex. + +Extension Libraries + +* ptk.rb pTk wrapper that is compatible to tk.rb +* Berkeley DB extension +* BitVector +* thread-safe fcgi + +Ruby Libraries + +* urllib.rb, nttplib.rb, etc. +* format like perl's + +Tools + +* freeze or undump to bundle everything +* bundle using zlib |