Language Spec. - Class#allocate - basicNew - class Foo::Bar value hash in the form of {symbol: value, ...} ?? * 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 * 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. * unify == and eql? again * to_i returns nil if str contains no digit. * jar like combined library package. -> RubyGems? * 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()" 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