diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-01-09 07:26:21 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-01-09 07:26:21 +0000 |
commit | 87beea44969367180d255f56c4001348cf41d210 (patch) | |
tree | 1c6ff993469e69370eaaf3116eefc1eab035dbac /ToDo | |
parent | 39711489a44a1c0ed02b0a605d3e83558b3b8dd3 (diff) | |
download | bundler-87beea44969367180d255f56c4001348cf41d210.tar.gz |
* enum.c (enum_inject): new method.
* gc.c (rb_gc_call_finalizer_at_exit): clear klass member of
terminating object.
* eval.c (rb_call): raise exception for terminated object.
* bignum.c (bigdivrem): t2 might be too big for signed long; do
not use rb_int2big(), but rb_uint2big().
* error.c (rb_load_fail): new func to report LoadError.
* ruby.c (load_file): use rb_load_fail.
* eval.c (ruby_finalize): should enclosed by PUSH_TAG/POP_TAG.
* gc.c (rb_gc_mark): link 2 of NODE_IFUNC should not be explicitly
marked. it may contain non object pointer.
* re.c (reg_s_last_match): Regexp::last_match(nth) returns nth
substring of the match (alternative for $& and $<digit>).
* eval.c (rb_mod_define_method): wrong comparison for blocks.
* gc.c (id2ref): should handle Symbol too.
* gc.c (id2ref): should print original ptr value
* eval.c (rb_iterate): NODE_CFUNC does not protect its data
(nd_tval), so create new node NODE_IFUNC for iteration C
function.
* eval.c (rb_yield_0): use NODE_IFUNC.
* gc.c (rb_gc_mark): support NODE_IFUNC.
* gc.c (mem_error): prohibit recursive mem_error().
(ruby-bugs-ja:PR#36)
* eval.c (rb_thread_fd_writable): should not switch context if
rb_thread_critical is set.
* eval.c (rb_thread_wait_fd): ditto.
* eval.c (rb_thread_wait_for): ditto.
* eval.c (rb_thread_select): ditto.
* eval.c (rb_thread_join): join during critical section causes
deadlock.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1090 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ToDo')
-rw-r--r-- | ToDo | 52 |
1 files changed, 7 insertions, 45 deletions
@@ -1,12 +1,5 @@ Language Spec. -- def foo; .. rescue .. end -- compile time string concatenation, "hello" "world" => "helloworld" -- rescue modifier; a rescue b => begin a rescue; b end -- %w(a\ b\ c abc) => ["a b c", "abc"] -- objectify symbols -- class variable (prefix @@) -- rescue RuntimeError => err * operator !! for rescue. ??? * objectify characters * ../... outside condition invokes operator method too. @@ -31,15 +24,11 @@ Language Spec. * 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 `` Hacking Interpreter -- use eban's fnmatch -- RUBYOPT environment variable -- alias $defout $> -- retrieve STACK_LEVEL_MAX from users' limit. -- remove end_proc registered out of require only -- all object made freezable +- generational GC * non-blocking open (e.g. for named pipe) for thread * avoid blocking with gethostbyname/gethostbyaddr (use fork ???) * objectify interpreters ??? @@ -48,41 +37,16 @@ Hacking Interpreter * scrambled script, or script filter * setuid ruby * performance tune for in-block (dynamic) local variables. -* generational GC * 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 Standard Libraries -- hash[key] = nil does not remove entry; hashes may have nil as the value. -- hash.fetch(key) raises exception if key is not found. -- Array#{first,last,at} -- Dir.glob(pat){|f|...} -- sprintf/printf's $ to specify argument order -- Dir.glob("**/*.c") ala zsh -- Remove Enumerable#{size,length} -- Array#slice, Array#slice! -- String#slice, String#slice! -- Marshal should handle generic instance variables. -- debugger for thread programming -- SyntaxError, NameError, LoadError and NotImplementedError are subclasses of - ScriptError<Exception, not StandardError. -- Thread::start gives arguments, not a thread object to the block -- regexp: (?>..), \G -- Struct::new([name,]member,...) -- IO#reopen accepts path as well -- Kernel#scan -- call initialize for builtin classes too -- performance tune for String's non-bang methods. -- 'w' template for pack/unpack -- alternative for interator? => block_given? -- regex - /p (made obsolete), /m (new) -- consistent /, %, divmod -- unbound method object -- integrate final.rb into the core. +- Module#define_method which takes a name and a body (block, proc or method). * Enumerable#sort_by for Schwartzian transformation * String#scanf(?) * Object#fmt(?) @@ -98,31 +62,29 @@ Standard Libraries * Process::waitall [ruby-talk:4557] * synchronized method - synchronized{...}, synchronized :foo, :bar * move Time::times to Process. -- Module#define_method which takes a name and a body (block, proc or method). * IO#for_fd in general * Array#&, Array#| to allow duplication. ??? -- fork_and_kill_other_threads. +* fork_and_kill_other_threads. * way to specify immortal (fork endurance) thread; * or raise ForkException to every thread but fork caller. * Array#fetch +* Hash::new{default} or recommend Hash#fetch? +* Enume#inject Extension Libraries -- FastCGI ruby * ptk.rb pTk wrapper that is compatible to tk.rb * Berkeley DB extension * BitVector Ruby Libraries -- net/http.rb * add uri.rb * urllib.rb, nttplib.rb, etc. * format like perl's Tools -- extension library maker using SWIG * freeze or undump to bundle everything Misc |