mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* eval.c (error_print): should no call "to_str" anymore use "message" method instead. * io.c (rb_f_open): Kernel#open() calls "to_open" if the first argument responds to it. [Ruby2] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6102 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			124 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
Language Spec.
 | 
						|
 | 
						|
- Class#allocate - basicNew
 | 
						|
- class Foo::Bar<Baz .. end, module Boo::Bar .. end
 | 
						|
- raise exception by `` error
 | 
						|
- a +1 to be a+1, not a(+1).
 | 
						|
- clarify evaluation order of operator argument (=~, .., ...)
 | 
						|
- :symbol => 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
 |