(linenum→info "unix/slp.c:2238")

ruby/1.9.0/ToDo

    1: Language Spec.
    2: 
    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()"
   38: 
   39: Hacking Interpreter
   40: 
   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??)
   62: 
   63: Standard Libraries
   64: 
   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.
  108: 
  109: Extension Libraries
  110: 
  111: * ptk.rb pTk wrapper that is compatible to tk.rb
  112: * Berkeley DB extension
  113: * BitVector
  114: * thread-safe fcgi
  115: 
  116: Ruby Libraries
  117: 
  118: - urllib.rb, nttplib.rb, etc.
  119: * format like perl's
  120: 
  121: Tools
  122: 
  123: * freeze or undump to bundle everything
  124: * bundle using zlib
Syntax (Markdown)