mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	time. previous behavior (search ".rb", then ".so") has a security risk (ruby-bugs#PR140). * array.c (rb_ary_to_ary): new function to replace internal rb_Array(), which never calls to_a, but to_ary (rb_Array() might call both). [new] * regex.c (PUSH_FAILURE_POINT): push option status again. * regex.c (re_compile_pattern): avoid pushing unnecessary option_set. * eval.c (rb_load): tainted string is OK if wrapped *and* $SAFE >= 4. * eval.c (rb_thread_start_0): should not nail down higher blocks before preserving original context (i.e. should not alter original context). * eval.c (proc_yield): new method equivalent to Proc#call but no check for number of arguments. [new] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			108 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
Language Spec.
 | 
						|
 | 
						|
* 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 ??
 | 
						|
* class Foo::Bar<Baz .. end, module Boo::Bar .. 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.
 | 
						|
 | 
						|
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.
 | 
						|
* 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.
 | 
						|
* signal list (Signal::trap, Signal::list??).
 | 
						|
* 2.times{|i| if i==0 then a = 15 else puts eval("a") end} should print nil.
 | 
						|
 | 
						|
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
 | 
						|
* String#scanf(?)
 | 
						|
* Object#fmt(?)
 | 
						|
* Integer#{bin,oct,hex,heX}
 | 
						|
* 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. ???
 | 
						|
* fork_and_kill_other_threads.
 | 
						|
* way to specify immortal (fork endurance) thread;
 | 
						|
* or raise ForkException to every thread but fork caller.
 | 
						|
* Hash::new{default} or recommend Hash#fetch?
 | 
						|
* new user-defined marshal scheme. _dump(dumper), _load(restorer)
 | 
						|
* warn, warning for Ruby level
 | 
						|
* hash etc. should handle self referenceing array/hash
 | 
						|
* move NameError under StandardError.
 | 
						|
* library to load per-user profile seeking .ruby_profile or ruby.ini file.
 | 
						|
* warning framework
 | 
						|
 | 
						|
Extension Libraries
 | 
						|
 | 
						|
* ptk.rb pTk wrapper that is compatible to tk.rb
 | 
						|
* Berkeley DB extension
 | 
						|
* BitVector
 | 
						|
* thread-safe fcgi
 | 
						|
 | 
						|
Ruby Libraries
 | 
						|
 | 
						|
* add uri.rb
 | 
						|
* urllib.rb, nttplib.rb, etc.
 | 
						|
* format like perl's
 | 
						|
 | 
						|
Tools
 | 
						|
 | 
						|
* freeze or undump to bundle everything
 | 
						|
 | 
						|
Misc
 | 
						|
 | 
						|
- publish Ruby books
 | 
						|
- publish Ruby books in English
 |