Fri Jan 16 00:43:43 1998 Yukihiro Matsumoto * ruby.h (CLONESETUP): copies its singleton classes too. * class.c (singleton_class_attached): saves binded object in the singleton classes. * eval.c (rb_eval): calls singleton_method_added even in the singleton class clauses. Fri Jan 15 23:22:43 1998 WATANABE Hirofumi * ruby.c (proc_options): -S does not recognize PATH. Thu Jan 15 02:03:12 1998 Yukihiro Matsumoto * eval.c (rb_clear_cache_by_id): clear only affected cache entries. Wed Jan 14 02:14:48 1998 Yukihiro Matsumoto * ext/socket/socket.c: new UDP/IP socket classes. Tue Jan 13 10:00:18 1998 Yukihiro Matsumoto * string.c (str_cmp): ignorecase($=) works wrong. Fri Jan 9 13:19:55 1998 Yukihiro Matsumoto * eval.c (f_missing): class name omitted from the error message. * error.c (exc_inspect): description changed. * string.c (Init_String): GlobalExit's superclass did not filled, since GlobalExit created earlier than String. Thu Jan 8 12:10:09 1998 Yukihiro Matsumoto * parse.y (aryset): expr in the brackets can be null. Wed Jan 7 21:13:56 1998 Yukihiro Matsumoto * io.c (io_reopen): keep stderr unclosed. * io.c (io_errset): keep stderr unclosed. Tue Jan 6 00:27:43 1998 Yukihiro Matsumoto * parse.y: syntax modified for `while expr do .. end' etc. * process.c (f_exec,f_system): can supply arbitrary name for the new process. Mon Jan 5 16:59:13 1998 WATANABE Hirofumi * file.c (file_s_basename): removes any extention by ".*". Sun Jan 4 19:36:22 1998 WATANABE Hirofumi * parse.y (yylex): needed to update lex_p (reading point). Sat Jan 3 19:14:14 1998 WATANABE Hirofumi * class.c,object.c: duplicate defines mKernel and cFinxnum. Fri Jan 2 20:38:59 1998 Yukihiro Matsumoto * ext/curses/curses.c (NUM2CHAR): uses the first character for string arguments. * array.c (ary_fill): did not extend array for ranges. * array.c (beg_len): did not return end pos bigger than size. Fri Jan 2 02:09:16 1998 WATANABE Hirofumi * dir.c (dir_s_chdir): bug in nil check. * array.c (ary_fill): bug in nil check. Tue Dec 30 11:46:23 1997 Yukihiro Matsumoto * hash.c (env_path_tainted): checks directories in PATH environment variable are not world writable. * ruby.c (load_file): invoke specified interpreter if the #! line does not contain the word `ruby'. Fri Dec 26 03:26:41 1997 Yukihiro Matsumoto * string.c (uscore_get): type information included in the error message. * variable.c (f_untrace_var): does not free trace-data within trace procedure. Thu Dec 25 02:50:29 1997 Yukihiro Matsumoto * version 1.1b3 released. * ruby.h: inlining some functions on gcc 2.x Tue Dec 23 02:47:33 1997 Yukihiro Matsumoto * eval.c (rb_eval): public/private information kept in the current scope, to remove undesired state from the class/module. * time.c (time_strftime): remove hidden limit of 100 bytes of result string, using malloc'ed buffer. * hash.c (hash_update): merges the contents of another hash, overriding existing keys. * regex.c (must_instr): totally re-written. * io.c (read_all): try to allocate proper sized buffer using fstat(2) for speedup. Sat Dec 20 00:27:28 1997 Yukihiro Matsumoto * regex.c (must_instr): need to skip 2 bytes for mbchars. Fri Dec 19 01:18:29 1997 Yukihiro Matsumoto * version 1.1b2 released. * eval.c (check_errat): check and convert (if necessary) traceback information before assigning to the variable $@. * eval.c (f_raise): optional third argument to specify traceback information. * io.c (f_open): prevent infinite recursive call. Thu Dec 18 19:33:47 1997 Yukihiro Matsumoto * string.c (str_rindex): now accepts regexp as index. Thu Dec 18 18:42:50 1997 WATANABE Hirofumi * ext/socket/extconf.rb: modified to detect win32 socket lib. Thu Dec 18 00:25:03 1997 Yukihiro Matsumoto * re.c (reg_equal): checks for source and casefold and kcode matching. * marshal.c: became built-in module. * ext/marshal/marshal.c (r_object): displays struct name for non-compatible struct. * string.c (str_index_method): now searches character (fixnum) in the string. * string.c (str_include): redefine `include?'. * regex.c (re_match): start_nowidth saves current stack position to stop_nowidth. * regex.c (re_compile_pattern): add space to stop_nowidth to save runtime stack position. Tue Dec 16 14:57:43 1997 Yukihiro Matsumoto * string.c (scan_once): wrong exception for regexp that match with null string (use substr instead of subseq). Sat Dec 13 00:13:32 1997 Yukihiro Matsumoto * parse.y (expr): remove bare assocs from expr rule. * rbconfig.rb: renamed from config.rb (it was too generic name). Fri Dec 12 00:50:25 1997 Yukihiro Matsumoto * parse.y (expr): warns if BEGIN or END appear in the method bodies. * string.c (str_match): calls y =~ x if y is neither String nor Regexp so that eregex.rb works. * eval.c (f_at_exit): to register end proc. * class.c (rb_define_module_function): define 'function' method for the Module, not private method. * class.c (rb_define_function): function to define `function' method. * eval.c (rb_eval): inherit visibility from superclass's method except when it is set to `function' * eval.c (rb_eval): new visibility status `function'. * parse.y (yycompile): do not clear eval_tree. thus enable multipe command line script by optn `-e'. * eval.c (rb_eval): END execute just once. * parse.y (expr): BEGIN/END built in the syntax. Thu Dec 11 13:14:35 1997 Yukihiro Matsumoto * object.c (mod_le): Module (or Class) comparison. * eval.c (rb_remove_method): raises NameError if named method does not exist. * ext/curses/curses.c: remove CHECK macro for BSD curses. Thu Dec 11 12:44:01 1997 WATANABE Hirofumi * pack.c: sun4 cc patch Wed Dec 10 15:21:36 1997 Yukihiro Matsumoto * ext/marshal/marshal.c (marshal_load): can supply evolution proc object as optional second argument. * re.c (reg_source): get source string of the regular expression. Tue Dec 9 10:05:17 1997 Yukihiro Matsumoto * version 1.1b1 released. * parse.y (tokadd): token buffer overrun. * ruby.c (ruby_prog_init): forgot to protect rb_argv0 from gc. * eval.c (ruby_run): call finalizers at process termination. * gc.c (gc_call_finalizer_at_exit): call free proc for every Data Wrapper, and finalizer for specified objects at termination. * version.c (show_version): version format changed. * regex.c (re_match): wrong match with non-greedy if they appear more than once in regular expressions. * sample/ruby-mode.el (ruby-expr-beg): forgot to handle modifiers. Mon Dec 8 19:00:15 1997 Yukihiro Matsumoto * io.c (io_puts): just put a newline if no argument given. * ext/tcltklib/tcltklib.c (lib_mainloop): thread-aware tk handle when $tk_thread_safe is set. * ext/tcltklib/tcltklib.c (lib_mainloop): use Tcl_DoOneEvent() instead of Tk_MainLoop(). Mon Dec 6 07:11:16 1997 MAEDA shugo * io.c (io_puts): core dumped without any argument. Fri Dec 5 18:17:17 1997 Yukihiro Matsumoto * eval.c (mod_remove_method): remove (not undef) a method from the class/module. * variable.c (obj_remove_instance_variable): method to remove instance variables. Thu Dec 4 13:50:29 1997 Yukihiro Matsumoto * version 1.1b0 released. * string.c (str_aref): called str_index for regexp. Mon Dec 1 15:24:41 1997 Yukihiro Matsumoto * compar.c (cmp_between): wrong comparison made. Wed Nov 26 18:18:05 1997 Yukihiro Matsumoto * lib/mkmf.rb: generate Makefile for extention modules out of ruby source tree. use like `ruby -r mkmf extconf.rb'. * numeric.c (fix2str): enlarge buffer to prevent overflow on some machines. * parse.y (here_document): wrong line number generated after here-doc. Fri Nov 21 13:17:12 1997 Yukihiro Matsumoto * parse.y (yylex): skip multibyte characters in comments. Wed Nov 19 17:19:20 1997 Yukihiro Matsumoto * object.c (nil_to_a): nil.to_a => []. * parse.y (call_args): wrong node generation. Tue Nov 18 10:13:08 1997 Yukihiro Matsumoto * array.c (Init_Array): Array#=== works as Array#include? * regex.c (re_compile_pattern): insert initialize code for jump_n, before entering loops. * re.c (reg_search): does not save registers unless $& etc appear in the script. Mon Nov 17 13:01:43 1997 Yukihiro Matsumoto * eval.c (is_defined): add defined? check for receivers and arguments for calls. * re.c (reg_search): cache last match object. * re.c (match_aref): $[0] etc. are available. Sat Nov 15 00:11:36 1997 WATANABE Hirofumi * io.c (io_s_popen): "rb" detection Fri Nov 14 18:28:40 1997 Yukihiro Matsumoto * string.c (scan_once): returns whole match if the pattern does not contain any parentheses. Thu Nov 13 14:39:06 1997 Yukihiro Matsumoto * string.c (str_sub): returns copy of the receiver string, even if any substitution occurred. * regex.c (re_compile_pattern): no-width match by (?=..), (?!..). Wed Nov 12 13:44:47 1997 Yukihiro Matsumoto * time.c: remove coerce from Time class. * regex.c (re_match): non-greedy match by ??, *? +?, {n,m}?. Mon Nov 10 11:24:51 1997 Yukihiro Matsumoto * regex.c (re_compile_pattern): non-resitering parens (?:..). * regex.c (re_compile_pattern): new meta character \< (wordbeg) and \> (wordend). * regex.c (re_compile_pattern): embedded comment for regular expression by (?#...). Fri Nov 7 16:58:24 1997 Yukihiro Matsumoto * regex.c (re_compile_pattern): perl5 regxp \A and \Z available. * regex.c (re_compile_pattern): can expand compile stack dynamically. * regex.c (PUSH_FAILURE_POINT): wrong compare condition. Wed Nov 2 16:00:00 1997 WATANABE Hirofumi * string.c (str_sub_s): "".sub! "", "" => "\000" Fri Oct 31 15:52:10 1997 Yukihiro Matsumoto * parse.y (assoc): keyword assoc like {fg->"black"}. Thu Oct 30 17:33:38 1997 Yukihiro Matsumoto * io.c (io_println): print with newline, which is not affected by the values of $/ and $\. Thu Oct 30 16:54:01 1997 WATANABE Hirofumi * string.c (str_chop_bang): "".chop caused SEGV. * string.c (str_chomp_bang): method to chop out last newline. Mon Oct 27 13:49:13 1997 Yukihiro Matsumoto * ext/extmk.rb.in: library may have pathname contains `.' * eval.c (rb_rescue): should not protect SystemError. Fri Oct 24 10:58:53 1997 Yukihiro Matsumoto * io.c (io_s_with_open_stream): ensures to close stream. Thu Oct 23 11:17:44 1997 Yukihiro Matsumoto * io.c (io_errset): value of $stderr can be changed (to any IO object). * io.c (next_argv): $< can be anything that responds to `write'. * file.c (file_s_with_open_file): ensures to close file. * error.c (exception): create error under the current class/module. * range.c (range_eqq): fixnum check for last needed too. Wed Oct 22 12:52:30 1997 Yukihiro Matsumoto * ext/socket/socket.c: Socket::Constants added. * file.c: File::Constants added for inclusion. * array.c (ary_join): call ary_join() recursively for the 1st array element. Mon Oct 20 12:18:29 1997 WATANABE Hirofumi * ruby.c (load_file): wrong condition for #! check with -x. * file.c (file_s_dirname): did return "" for "/a". Fri Oct 17 14:29:09 1997 Yukihiro Matsumoto * ruby.c: now works on alpha-linux. * bignum.c (bigadd): some undefined side effect order assumed. Wed Oct 15 17:49:24 1997 Yukihiro Matsumoto * intern.h: function prototypes added. Mon Oct 13 16:54:18 1997 Yukihiro Matsumoto * class.c (rb_define_class_id): call superclass's `inherited' method when making subclasses. * parse.y (nextc): clear lex_lastline at the end of file. * object.c (Init_Object): need to undef Class#append_features. * eval.c (rb_eval): no warning on extending classes or modules. Thu Oct 9 11:17:50 1997 Yukihiro Matsumoto * eval.c (error_print): the exception name follows after the error message. * eval.c (compile_error): error message slightly changed. * parse.y (nextc): script parsing will be terminated by __END__ at beginning of line. * eval.c (compile_error): `__END__' is no longer a keyword. * parse.y (nextc): protect lastline read from script stream. Tue Oct 7 14:06:06 1997 Yukihiro Matsumoto * version 1.1 alpha9 released. * eval.c (mod_append_features): renamed from extend_class. * eval.c (rb_eval): defining method calls `method_added'. * eval.c (ruby_options): exception while processing options must terminate the interpreter. * error.c (Init_Exception): wrong method configuration. `new' should have been a singleton method. Mon Oct 6 18:55:38 1997 Yukihiro Matsumoto * ext/kconv/kconv.c (kconv_guess): code to guess character code from string. Mon Oct 6 18:38:17 1997 WATANABE Hirofumi * pack.c: now encode/decode base64 by `m' template. Fri Oct 3 10:51:10 1997 Yukihiro Matsumoto * MANIFEST: needed to include lex.c in the distribution. * eval.c (ruby_options): f_require() called too early. * eval.c (rb_provide): module extentions should always be `.o'. Thu Oct 2 11:38:31 1997 Yukihiro Matsumoto * version 1.1 alpha8 released. * ext/marshal/marshal.c (r_object): remove temporal regist for structs. (caused problem if structs form cycles.) * parse.y (match_gen): static binding for match(=~) calls with regexp literals. Wed Oct 1 15:26:55 1997 Yukihiro Matsumoto * eval.c: protect retval in struct tag from GC for C_ALLOCA. * eval.c: no more pointer value from setjmp/longjmp. Wed Oct 1 14:01:49 1997 WATANABE Hirofumi * ext/marshal/marshal.c (w_byte): argument must be char. Wed Oct 1 10:30:22 1997 Yukihiro Matsumoto * variable.c (mod_const_at): global constants now belongs to the class Object. * object.c (Init_Object): new global constant NIL. * ext/marshal/marshal.c (marshal_dump): try to set binmode. * ext/marshal/marshal.c (r_object): forgot to re-regist structs in the object table. * eval.c (ruby_options): call Init_ext() before any require() calls by `-r'. Fri Sep 30 14:29:22 1997 WATANABE Hirofumi * ext/marshal/marshal.c (w_object): marshal dumped core. Tue Sep 30 10:27:39 1997 Yukihiro Matsumoto * sample/test.rb: bignum test suits added. * eval.c (rb_eval): new pseudo variable `true' and `false'. * parse.y: new keywords `true' and `false' added. Mon Sep 29 13:37:58 1997 Yukihiro Matsumoto * ruby.c (forbid_setid): forbid some options in suid mode. * ruby.h (NUM2DBL): new macro to convert into doubles. Mon Sep 27 09:53:48 1997 EGUCHI Osamu * bignum.c: modified for speeding. Fri Sep 26 18:27:59 1997 WATANABE Hirofumi * sample/from.rb: some extensions. Mon Sep 29 13:15:56 1997 Yukihiro Matsumoto * parse.y (lhs): no more syntax error on `obj.CONSTANT = value'. Fri Sep 26 14:41:46 1997 Yukihiro Matsumoto * eval.c (ruby_run): deferred calling Init_ext() just before eval_node. Fri Sep 26 13:27:24 1997 WATANABE Hirofumi * io.c (io_isatty): forgot to return TRUE value. Fri Sep 25 11:10:58 1997 EGUCHI Osamu * eval.c: use _setjmp/_longjmp instead of setjmp/longjmp on some platforms. Wed Sep 24 17:43:13 1997 Yukihiro Matsumoto * string.c (Init_String): String#taint and String#taint? added. * class.c (mod_ancestors): ancestors include the class itself. Wed Sep 24 00:57:00 1997 Katsuyuki Okabe * X68000 patch. Tue Sep 23 20:42:30 1997 EGUCHI Osamu * parse.y (node_newnode): SEGV on null node setup. Mon Sep 22 11:22:46 1997 Yukihiro Matsumoto * ruby.c (ruby_prog_init): wrong safe condition check. Sun Sep 21 14:46:02 1997 MAEDA shugo * error.c (exc_inspect): garbage added to classpath. Fri Sep 19 11:49:23 1997 Yukihiro Matsumoto * parse.y (newtok): forgot to adjust buffer size when shrinking the token buffer. * enum.c (enum_find): rb_eval_cmd() does not return value. * io.c (pipe_open): close fds on pipe exec. fcntl(fd, F_SETFD, 1) no longer used. Tue Sep 16 17:54:25 1997 Yukihiro Matsumoto * file.c (f_test): problem if wrong command specified. * ruby.c (ruby_prog_init): close stdaux and stdprn for MSDOS. * ruby.c (ruby_prog_init): should not add path from environment variable, if ruby is running under seuid. * process.c (init_ids): check suid check for setuid/seteuid etc. Mon Sep 15 00:42:04 1997 WATANABE Hirofumi * regex.c (re_compile_pattern): \w{3} and \W{3} did not work. Thu Sep 11 10:31:48 1997 Yukihiro Matsumoto * version 1.1 alpha7 released. * ext/socket/socket.c (sock_new): no setbuf() for NT. * io.c (rb_fopen,rb_fdopen): set close-on-exec for every fd. Wed Sep 10 15:55:31 1997 Yukihiro Matsumoto * ext/marshal/marshal.c (r_bytes0): extra big length check. Tue Sep 9 16:27:14 1997 Yukihiro Matsumoto * io.c (pipe_fptr_atexit): clean up popen()'ed fptr. * error.c (set_syserr): some system has error code that is bigger than sys_nerr. grrr. Mon Sep 8 18:33:33 1997 Yukihiro Matsumoto * io.c (io_s_new): dereferenced nil for optional mode. Fri Sep 5 10:26:03 1997 Yukihiro Matsumoto * class.c (class_instance_methods): do not include methods which are changed to private in subclasses. Thu Sep 4 12:38:53 1997 Yukihiro Matsumoto * variable.c (f_global_variables): list name of the global variables. * object.c (obj_id): returns unique integer. Wed Sep 3 14:05:16 1997 Yukihiro Matsumoto * version 1.1 alpha6 released. * eval.c (mod_s_constants): context sensitive constant list. * variable.c (mod_constants): no more `all' option. * variable.c (mod_const_of): the values for autoload classes are their name strings. * class.c (class_instance_methods): no special treatment for singleton classes. * object.c (obj_singleton_methods): returns list of singleton method names. * parse.y (yylex): no here document after `class' keyword. * eval.c (f_load): expand path if fname begins with `~'. Tue Sep 2 13:19:48 1997 Yukihiro Matsumoto * class.c (ins_methods_i): do not list undef'ed methods. Mon Sep 1 13:42:48 1997 Yukihiro Matsumoto * version 1.1 alpha5 released. * object.c (mod_attr_reader): create methods to define attribute reader/write/accessor. * class.c (rb_define_attr): always defines accessors. * eval.c (rb_call): alias occured in the module body caused SEGV. * parse.y: did not generate here document strings properly. Mon Sep 1 11:43:57 1997 WATANABE Hirofumi * parse.y (yylex): heredoc dropped an extra character. Fri Aug 29 11:10:21 1997 Yukihiro Matsumoto * class.c (class_instance_methods): same method names should not appear more than twice. * parse.y (yylex): spaces can follow =begin/=end. * variable.c (find_class_path): look for class_tbl also for unnamed fundamental classes, such as Object, String, etc. * variable.c (rb_name_class): can't name class before String class is initilialized. * inits.c (rb_call_inits): unrecognized dependency from GC to Array. * variable.c (find_class_path): could not find class if Object's iv_tbl is NULL. Thu Aug 28 13:12:05 1997 Yukihiro Matsumoto * version 1.1 alpha4 released. * variable.c (mod_constants): wrong condition for singleton class. * parse.y (yylex): revised `=begin' skip code. * parse.y (here_document): forgot to free(eos). * parse.y (yylex): spaces after `<<' prohibited for here documents to avoid confusing with operator `<<'. * eval.c (is_defined): separated from rb_eval(). Wed Aug 27 11:32:42 1997 Yukihiro Matsumoto * version 1.1 alpha3 released. * variable.c (mod_name): returns name of the class/module. * parse.y (here_document): finally here document available now. * variable.c (fc_i): some classes/modules does not have iv_tbl. * variable.c (find_class_path): avoid inifinite loop. Tue Aug 26 13:43:47 1997 Yukihiro Matsumoto * eval.c (rb_eval): undef'ing non-existing method will raise NameError exception. * object.c (class_s_new): needed to create metaclass too. * eval.c (error_print): no class name print for anonymous class. * eval.c (rb_longjmp): proper exception raised if raise() called without arguments, with $! or $@ set. * object.c (Init_Object): superclass()'s method argument setting was wrong again. * class.c (mod_anscestors): list superclasses and included modules in priority order. Mon Aug 25 11:53:11 1997 Yukihiro Matsumoto * version 1.1 alpha2 released. * sample/ruby-mode.el (ruby-parse-region): auto-indent now supports "\\" in the strings. * struct.c (struct_getmember): new API to get member value from C language side. Sat Aug 23 21:39:05 1997 Yukihiro Matsumoto * parse.y (asignable): remove unnecessary local variable initialize by nil. Fri Aug 22 14:26:40 1997 Yukihiro Matsumoto * eval.c (error_print): modified exception print format. Thu Aug 21 16:10:58 1997 Yukihiro Matsumoto * sample/ruby-mode.el (ruby-calculate-indent): wrong indent level calculated with keyword operators. Thu Aug 21 11:36:58 1997 WATANABE Hirofumi * parse.y (arg): ary[0] += 1 cause SEGV Wed Aug 20 17:28:50 1997 Yukihiro Matsumoto * ruby.c (ruby_process_options): require() all modules after processing all options * process.c (rb_proc_exec): more security checks added. * process.c (rb_proc_exec): insecure path on exec. * hash.c (f_getenv): PATH modification security check. Tue Aug 19 00:15:38 1997 Yukihiro Matsumoto * version 1.1 alpha1 released. * eval.c (mod_eval): work as normal eval() if second binding argument given. * eval.c (rb_call): did not raise ArgumentError if too many arguments more than optional arguments (without rest arg). * eval.c (rb_eval): did not work well for op_asgn2 (attribute self assignment). * eval.c (Init_Thread): returns main thread. Mon Aug 18 09:25:56 1997 Yukihiro Matsumoto * object.c (inspect_i): did not display T_DATA instance variables. * parse.y: provides more accurate line number information. * eval.c (thread_value): include value's backtrace information in the variable `$@'. * eval.c (f_abort): print backtrace and exit. Sat Aug 16 00:17:44 1997 Yukihiro Matsumoto * eval.c (class_new_instance): do not make instance from virtual classes. * object.c (class_s_new): do not make subclass of singleton class. Fri Aug 15 15:49:46 1997 Yukihiro Matsumoto * eval.c (call_trace_func): block context switch in the trace function. * eval.c (rb_eval): clear method cache at class extention. * object.c (obj_type): returns object's class even if it defines singleton methods. Fri Aug 15 19:40:43 1997 WATANABE Hirofumi * ext/socket/socket.c (Init_socket): small typo caused SEGV. Wed Aug 13 17:51:46 1997 Yukihiro Matsumoto * version 1.1 alpha0 released.