Fri Jul 24 13:40:19 1998 Yukihiro Matsumoto * version 1.1c1 released. Fri Jul 24 02:10:22 1998 Yukihiro Matsumoto * marshal.c (r_bytes2): allocated buffer size was too short. * marshal.c (w_object): saves all options, not only casefold flag. * re.c (reg_clone): now copies options properly. * re.c (reg_get_kcode): code number was wrong. Thu Jul 23 13:11:32 1998 Yukihiro Matsumoto * eval.c (rb_attr): argument should be symbol or a string. Wed Jul 22 11:59:34 1998 Yukihiro Matsumoto * regex.c (calculate_must_string): wrong offset added. Wed Jul 22 11:59:59 1998 Yukihiro Matsumoto * st.c (rehash): still had a GC problem. fixed. Tue Jul 21 13:19:30 1998 Yukihiro Matsumoto * eval.c (gc_mark_threads): crashed on GC before thread allocation. * st.c (rehash): GC during rehash caused SEGV. Tue Jul 21 01:25:10 1998 Yukihiro Matsumoto * sprintf.c (f_sprintf): integer formatter totally re-written. * sprintf.c (remove_sign_bits): support uppercase hexadecimal. Sat Jul 18 00:14:13 1998 Yukihiro Matsumoto * sprintf.c (f_sprintf): proper sign position for %X and %O. Fri Jul 17 14:10:20 1998 Yukihiro Matsumoto * version 1.1c0 released. Fri Jul 17 08:01:49 1998 Tadayoshi Funaba * process.c (f_exec): Check_SafeStr() added. * process.c (f_system): Check_SafeStr() moved before fork(). Thu Jul 16 22:58:48 1998 Yukihiro Matsumoto * string.c (scan_once): substrings to the block should not be tainted. use reg_nth_match(), not str_substr(). * string.c (str_substr): needed to transfer taint. Thu Jul 16 16:15:57 1998 Yukihiro Matsumoto * gc.c (xmalloc): object allocation count added to GC trigger. * eval.c (thread_save_context): avoid marking uninitialized stack in thread_mark. GC may be triggered by REALLOC_N(). Wed Jul 15 15:11:57 1998 Yukihiro Matsumoto * experimental release 1.1b9_31. Wed Jul 15 15:05:27 1998 Yukihiro Matsumoto * eval.c (thread_create): exit() and abort() in threads now forwarded to main_thread. Tue Jul 14 14:03:47 1998 Yukihiro Matsumoto * variable.c (obj_instance_variables): list names that is not instance variables. * gc.c (GC_MALLOC_LIMIT): choose smaller limit value. Mon Jul 13 12:39:38 1998 Yukihiro Matsumoto * object.c (str2cstr): should not return NULL. Fri Jul 10 11:51:46 1998 Yukihiro Matsumoto * parse.y (gettable): needed to add dyna_in_block() check. Thu Jul 9 17:38:23 1998 Yukihiro Matsumoto * experimental release 1.1b9_30. Thu Jul 9 16:01:48 1998 Yukihiro Matsumoto * sprintf.c (fmt_setup): format specifier for long needed. * sprintf.c (f_sprintf): ditto. * numeric.c (fix2str): ditto. * eval.c (thread_create): no more ITIMER_REAL. * eval.c (thread_create): thread finalization needed before aborting thread if thread_abort is set. Wed Jul 8 18:17:33 1998 Yukihiro Matsumoto * bignum.c (big_pow): abandon power by bignum (too big). Tue Jul 7 13:58:43 1998 Yukihiro Matsumoto * eval.c (rb_catch): add C level catch/throw feature. Mon Jul 6 15:18:09 1998 Yukihiro Matsumoto * parse.y (arg): proper return values for `||=' and `&&='. Fri Jul 3 16:05:11 1998 Yukihiro Matsumoto * experimental release 1.1b9_29. Fri Jul 3 11:20:46 1998 Yukihiro Matsumoto * marshal.c (r_byte): byte should not extend sign bit. * numeric.c (fix_mul): use FIX2LONG() instead of FIX2INT() for 64bit architectures. * marshal.c (r_bytes): remove weird casting bwetween pointer and int. * process.c (proc_setsid): new method Process#setsid(). Thu Jul 2 12:49:21 1998 Yukihiro Matsumoto * marshal.c (w_object): remove `write_bignum' label for 64bit architectures. * marshal.c (r_bytes): needs int, not long. Wed Jul 1 14:21:06 1998 Yukihiro Matsumoto * numeric.c (flo_plus): should not allow addition with strings. Wed Jul 1 13:09:01 1998 Keiju ISHITSUKA * numeric.c (num_uminus): wrong coerce direction. Tue Jun 30 10:13:44 1998 Yukihiro Matsumoto * io.c (f_p): accepts arbitrary number of arguments. * eval.c (rb_yield_0): there's some case that iterator_p() returns true even if the_block was not set. check added. Tue Jun 30 01:05:20 1998 Yukihiro Matsumoto * eval.c (BEGIN_CALLARGS): adjust the_block before evaluating the receiver's value and the arguments. Fri Jun 26 18:02:50 1998 Yukihiro Matsumoto * experimental release 1.1b9_28. Fri Jun 26 11:01:26 1998 WATANABE Hirofumi * string.c (str_aset_method): needed to convert to string. Thu Jun 25 02:05:50 1998 Yukihiro Matsumoto * regex.c (re_search): optimize for `.*' at beginning of the pattern. * regex.c (re_search): optimize for character class repeat at beginning of the pattern. * regex.c (re_compile_pattern): detect optimization potential for the compiled patterns. Thu Jun 25 00:02:26 1998 WATANABE Hirofumi * re.c (reg_s_new): flag value was wrong. Wed Jun 24 23:45:06 1998 Yukihiro Matsumoto * regex.c (re_search): wrong anchor handling for reverse search. Wed Jun 24 02:18:57 1998 Yukihiro Matsumoto * parse.y (mlhs): `((a,b)),c = [[1,2]],3' assigns a=1,b=2,c=3. Tue Jun 23 11:46:16 1998 Yukihiro Matsumoto * parse.y (yylex): `&&=' and `||=' added. Sat Jun 20 02:53:50 1998 Yukihiro Matsumoto * parse.y (assignable): nesting local variables should have higher priority than normal local variables for assignment too. Fri Jun 19 18:28:19 1998 Yukihiro Matsumoto * experimental release 1.1b9_27. Fri Jun 19 14:34:49 1998 Yukihiro Matsumoto * eval.c (assign): support hack for nested multiple assignment. * parse.y (mlhs): nested multiple assignment. * eval.c (rb_eval): in-block variables now honors static scope. * configure.in: RSHIFT check moved to configure. Thu Jun 18 16:46:04 1998 Yukihiro Matsumoto * experimental release 1.1b9_26. Thu Jun 18 13:37:19 1998 Yukihiro Matsumoto * file.c (file_s_ftype): uses lstat(2) instead of stat(2). * dir.c (dir_s_glob): there can be buffer overrun, check added. * eval.c (f_binding): handles in-block variables declared after binding's generation. * numeric.c (flo_floor): floor, ceil, round added to Float. Wed Jun 17 11:20:00 1998 Yukihiro Matsumoto * parse.y (gettable): nesting local variables should have higher priority than normal local variables. Tue Jun 16 12:30:46 1998 Yukihiro Matsumoto * bignum.c (str2inum): handles `+ddd'. * struct.c (make_struct): name parameter can be nil for unnamed structures. Mon Jun 15 16:30:10 1998 Yukihiro Matsumoto * object.c (class_s_inherited): prohibiting to make subclass of class Class. * object.c (module_s_new): support for making subclass of Module. * parse.y (yycompile): clear eval_tree before compiling. Fri Jun 12 17:58:18 1998 Yukihiro Matsumoto * eval.c (eval): write back the_dyna_var into the block. Thu Jun 11 18:19:18 1998 Yukihiro Matsumoto * experimental release 1.1b9_25. * eval.c (dvar_add_compiling): register dyna_var at compile time. * regex.c (re_compile_pattern): RE_DUP_MAX iteration is too big. Wed Jun 10 15:12:04 1998 Yukihiro Matsumoto * io.c (io_eof): do not block other threads. * signal.c (trap): reserve SIGALRM for thread. * eval.c (thread_create): use ITIMER_REAL also to avoid system call blocking. * io.c (f_syscall): add TRAP_BEG, TRAP_END around system calls. * io.c (io_ctl): add TRAP_BEG, TRAP_END around system calls. * enum.c (enum_collect): did not collect false values. * array.c (ary_new2): forgot to initialize capa field. Tue Jun 9 18:36:15 1998 WATANABE Hirofumi * string.c (str_split_method): split dumped core for "\xff". Tue Jun 9 16:22:12 1998 Yukihiro Matsumoto * experimental release 1.1b9_24. Tue Jun 9 16:04:07 1998 WATANABE Hirofumi * ext/kconv/kconv.c (kconv_guess): more precise decision for EUC, using jless algorithm (3 sequential EUC hiragana characters). Tue Jun 9 15:12:44 1998 Yukihiro Matsumoto * ext/kconv/kconv.c (kconv_guess): wrong guess for EUC as SJIS in some cases (0xe0 - 0xef). * gc.c (xmalloc): insert size check for big (negative in signed) allocation size. Tue Jun 9 02:54:51 1998 Yukihiro Matsumoto * lib/parsedate.rb: wday moved to the last in the return values. Mon Jun 8 10:40:16 1998 Yukihiro Matsumoto * string.c (str_split_method): split dumped core for "\0". Sat Jun 6 22:50:52 1998 Yukihiro Matsumoto * regex.c (calculate_must_string): wrong condition for {start,stop}_nowidth. * regex.c (re_match): various features imported from GNU regex.c 0.12, such as nested grouping, avoiding infinite loop with empty match, etc. * regex.c (register_info_type): now use union. * regex.c (re_search): more precise anchor(^) check. Wed Jun 3 18:07:54 1998 Yukihiro Matsumoto * re.c (reg_raise): check rb_in_compile, not rb_in_eval. Mon Jun 1 05:26:06 1998 WATANABE Tetsuya * string.c (trnext): casting to signed char* needed. Tue Jun 2 16:00:12 1998 Yukihiro Matsumoto * ext/socket/socket.c (udp_addrsetup): error check enhanced. * ext/socket/socket.c (sock_s_getservbyaname): use strtoul(), if possible. Sat May 30 07:10:02 1998 Yukihiro Matsumoto * re.c (reg_prepare_re): no more needless regular expression recompile on casefold conditions. Thu May 28 18:02:55 1998 Yukihiro Matsumoto * object.c (nil_plus): no more `+' method for nil. Wed May 27 17:33:46 1998 Yukihiro Matsumoto * hash.c (hash_fetch): new method. * regex.c (re_search): check whether translate table is set. Tue May 26 11:39:50 1998 Yukihiro Matsumoto * experimental release 1.1b9_23. * parse.y (yylex): no UPLUS/UMINUS for 1st argument if parenthesises are omitted. Tue May 26 01:09:55 1998 Yukihiro Matsumoto * regex.c (re_compile_pattern): (?XI) for turns off the corresponding option. Mon May 25 12:38:56 1998 Yukihiro Matsumoto * regex.c (re_compile_pattern): inline i option (?i). * regex.c (re_compile_pattern): inline x option (?x). * regex.c (re_compile_pattern): x option for regexp. * dir.c (dir_s_open): returns block's evaluated value. * io.c (f_open): returns block's evaluated value. * ext/curses/curses.c (curses_addstr): nil argument caused SEGV. Fri May 22 11:52:45 1998 Yukihiro Matsumoto * regex.c (re_compile_pattern): push mark on (?:), so that laststart check for {a,b} can be done. Thu May 21 17:31:16 1998 Yukihiro Matsumoto * regex.c (re_match): wrong match (too non-greedy) for `{a,b}?'. * io.c (io_lineno): new method IO#lineno, IO#lineno=. Wed May 20 06:04:43 1998 MAEDA shugo * BeOS patch. Wed May 20 16:32:19 1998 Yukihiro Matsumoto * bignum.c (BIGDN): use RSHIFT(), instead of mere `>>'. Tue May 19 16:36:26 1998 Yukihiro Matsumoto * experimental release 1.1b9_22. Tue May 19 16:31:57 1998 Yukihiro Matsumoto * parse.y (assignable): specification changed for in-block variable definition. * eval.c (dyna_var_asgn): error in in-block variables' compile time definition. * parse.y (str_extend): wrong nesting detection. Tue May 19 09:47:55 1998 WATANABE Hirofumi * numeric.c (num2int): re-defined (extensions may use this). Mon May 18 16:40:50 1998 MAEDA shugo * error.c (get_syserr): BeOS support. * configure.in: modified for BeOS. * string.c (str_dump): do not call isascii(). * sprintf.c (remove_sign_bits): forgot to initialize end pointer. * glob.c: #include added. Mon May 18 14:52:21 1998 Yukihiro Matsumoto * experimental release 1.1b9_21. Mon May 18 03:27:57 1998 MAEDA shugo * file.c (file_s_expand_path): optional second argument `default_directory' added. Sat May 16 22:06:52 1998 WATANABE Hirofumi * error.c (RAISE_ERROR): wrong error message Fri May 15 14:43:25 1998 Yukihiro Matsumoto * experimental release 1.1b9_20. Thu May 14 14:44:21 1998 WATANABE Hirofumi * sun4 cc patches for intern.h and regex.h. Thu May 14 14:03:16 1998 Yukihiro Matsumoto * random.c (RANDOM_MAX): guessing proper maximum value for random numbers. * random.c (f_rand): use drand48 if possible. Wed May 13 19:05:20 1998 1998 MAEDA shugo * BeOS patches for io.c, error.c and config.guess. Wed May 13 14:56:23 1998 Yukihiro Matsumoto * experimental release 1.1b9_19. * most of the Mac and BeOS patches merged, except path separators. * error.c (err_append): generated SyntaxError was String. * ruby.h: xxx2INT, xxx2UINT checks values as int, not long. * ruby.h: remove typedef's. INT, UINT, UCHAR, USHORT. Tue May 12 17:38:00 1998 Yukihiro Matsumoto * experimental release 1.1b9_18. Tue May 12 11:38:08 1998 Yukihiro Matsumoto * error.c (syserr_errno): returns errno of the SystemCallError. * error.c (rb_sys_fail): saves errno in the Exception. * error.c (set_syserr): no need to protect syserr_list. * error.c (rb_sys_fail): no more bufsize limit. * error.c (set_syserr): integer value of errno can be accessed by Errno::EXXX::Errno. Sun May 10 03:10:33 1998 WATANABE Tetsuya * io.c (io_tell etc.): moved from File class to IO class. Fri May 8 12:26:37 1998 Yukihiro Matsumoto * pack.c (pack_unpack): should be unsigned int (was signed int). Thu May 7 16:34:10 1998 Yukihiro Matsumoto * pack.c (pack_pack): `V', `N' uses newly created NUM2UINT(). * ruby.h (NUM2UINT): new macro. * bignum.c (big2uint): try to convert bignum into UINT. * re.c (reg_match): needed to return false for match with nil. * gc.c (obj_free): wrong condition to free string. Wed May 6 21:08:08 1998 WATANABE Hirofumi * ruby.c (ruby_process_options): modified for DJGPP. Wed May 6 15:48:03 1998 Yukihiro Matsumoto * experimental release 1.1b9_17. Wed May 6 01:37:39 1998 Yukihiro Matsumoto * eval.c: remove global variable `errat'. * eval.c (rb_longjmp): embed error position information in the exception object. Sat May 2 12:20:02 1998 Yukihiro Matsumoto * re.c (reg_search): supports reverse search. * string.c (str_index_method): does update $~ etc. * eval.c (f_load): needed to clear the_dyna_vars. * eval.c (dyna_var_asgn): do not push dyna_var, which is id == 0. * error.c (Init_Exception): NotImplementError is no longer StandardError, which is not handled by default rescue. Fri May 1 00:35:51 1998 Yukihiro Matsumoto * ruby.c (proc_options): `-d' turns on verbose flag too. * error.c (exception): last argument may be the superclass of the defining exception(s). * io.c (Init_IO): EOFError is now subclass of the IOError. * io.c (Init_IO): forgot to define IOError. * error.c (Init_Exception): old Exception class renamed to StandardError. Exception now replaces old GlobalExit. * error.c (Init_Exception): Exception is now the root of the Global Exits. There's no longer GlobalExit class. * util.c (ruby_mktemp): check TMP, TMPDIR first. Thu Apr 30 01:08:35 1998 Yukihiro Matsumoto * lib/tk.rb: call 'unknown', if proc not defined. * eval.c (handle_rescue): default rescue handles `Exceptional' not only the instance of the `Exception's. * eval.c (f_raise): exception can be any object. * time.c (time_gm_or_local): call time_gmtime or time_localtime. * eval.c (f_raise): raises TypeError if the class which is not a subclass of String is specified (checked in exc_new()). * error.c (exc_new): need to check whether invalid class (not a subclass of String) is specified. Wed Apr 29 21:05:44 1998 WATANABE Hirofumi * ruby.c (proc_options): option '-e' via tempfile. Tue Apr 28 15:27:58 1998 Yukihiro Matsumoto * experimental release 1.1b9_16. Tue Apr 28 00:07:38 1998 Yukihiro Matsumoto * eval.c (obj_is_proc): type check predicate. * eval.c (obj_is_block): ditto. Mon Apr 27 16:59:17 1998 Yukihiro Matsumoto * ext/gtk/gtk.c (Init_gtk): use timeout, not idle to avoid comsuming CPU too much. * lib/tk.rb: use tcltklib#_invoke instead of `_eval'. Mon Apr 27 16:59:17 1998 Yukihiro Matsumoto * array.c (ary_sort): use dup, not clone. Mon Apr 27 13:46:27 1998 Tadahiro Maebashi * ext/tcltklib/tcltklib.c (ip_invoke): invoke tcl command directly. need not worry about escaping tcl characters. Mon Apr 27 12:04:43 1998 Yukihiro Matsumoto * random.c (f_rand): do not call srand() implicitly. Fri Apr 24 14:35:45 1998 Yukihiro Matsumoto * experimental release 1.1b9_15. * parse.y (assignable): dyna_var_asgn actually defines nested local variables in outer context. * random.c (f_rand): call srand(), if it has not called yet. * random.c (f_srand): use tv_usec as the default seed. * eval.c (rb_eval): values of nested local variables should be independent. * eval.c (rb_yield_0): local variables wrong nested conditions. Wed Apr 22 23:27:17 1998 Yukihiro Matsumoto * io.c (select_get_io): get IO object by `to_io'. * io.c (io_to_io): method to retrieve IO object, from delegating object for example. Wed Apr 22 16:52:37 1998 Yukihiro Matsumoto * experimental release 1.1b9_14. * string.c (str_modify): check for embedded pointer reference. * gc.c (obj_free): ditto. * pack.c (pack_pack): p/P template to embed pointers. Wed Apr 22 00:07:10 1998 Tadayoshi Funaba * array.c (ary_rindex): embarrassing typo. Tue Apr 21 12:31:48 1998 Yukihiro Matsumoto * experimental release 1.1b9_13. * configure.in (RUBY_LIB): supports --program-{prefix,suffix}. * array.c (ary_rindex): new method. * io.c (io_binmode): should return self. Tue Apr 21 08:23:04 1998 Tadayoshi Funaba * parse.y (here_document): calling parse_string with wrong arguments. * struct.c (struct_aset): problem member assignment with name. Mon Apr 20 14:47:49 1998 Yukihiro Matsumoto * experimental release 1.1b9_12. * time.c (time_arg): args may be string (support for reduced implicit type conversion). * lib/base64.rb: changed to use pack/unpack with `m' template. Mon Apr 20 06:23:20 1998 Yukihiro Matsumoto * variable.c (mod_remove_const): new method. Sat Apr 18 03:53:27 1998 Yukihiro Matsumoto * hash.c (hash_each_with_index): removed. use Enumerable's each_with_index instead. * class.c (rb_include_module): check for super modules, since module's included modules may be changed. Fri Apr 17 21:50:47 1998 WATANABE Hirofumi * marshal.c (r_long): r_byte() may return signed byte. Fri Apr 17 11:58:30 1998 NAGAI Hidetoshi * ext/tcltklib/tcltklib.c (lib_mainloop): thread and interrupt check. Fri Apr 17 11:06:30 1998 Yukihiro Matsumoto * eval.c (find_file): try to fopen() to check whether file exists. * ruby.c (load_file): ditto. * struct.c (struct_aset): struct member can be set by member name. Fri Apr 17 00:47:19 1998 WATANABE Hirofumi * ext/extmk.rb.in: added m68k-human support * file.c (LOCK_SH): defines moved. * array.c (ary_flatten_bang): simplified loop. Thu Apr 16 16:52:01 1998 Yukihiro Matsumoto * experimental release 1.1b9_11. * lib/tk.rb: thread support (experimental - maybe slow). * eval.c (rb_longjmp): trace event on exception in raising context, just before raising exception. * struct.c (struct_s_members): forgot to check singletons. * struct.c (struct_aref): members can be accessed by names too. * array.c (ary_flatten): new method. * eval.c (rb_longjmp): prints exception information with `-d'. * object.c (any_to_s): remove class name restriction. Thu Apr 16 01:38:02 1998 Yukihiro Matsumoto * file.c (thread_flock): do not block other threads. * eval.c (thread_trap_eval): signals are now delivered to the current thread again. In case that the current thread is dead, signals are forwarded to the main thread. * string.c (str_new4): need not to duplicate frozen strings. Wed Apr 15 08:33:47 1998 Tadayoshi Funaba * struct.c (struct_inspect): remove restriction for struct names. Wed Apr 15 02:55:02 1998 Kazuya 'Sharl' Masuda * x68 patches to config.sub, ext/extmk.rb.in Wed Apr 15 01:22:56 1998 Yukihiro Matsumoto * string.c (str_dup_frozen): do not duplicate frozen strings. * parse.y (yylex): allow nested parenthesises. * io.c (obj_displayln): prints newline after `display'ing the receiver. * io.c (io_puts): avoid generating "\n" each time. use RS_default instead. * io.c (f_p): ditto. Tue Apr 14 22:18:17 1998 Tadayoshi Funaba * struct.c (struct_aref): should not subtract negative index. Tue Apr 14 11:34:50 1998 Yukihiro Matsumoto * experimental release 1.1b9_10. * parse.y: token names prefixed by `t'. * struct.c (struct_s_def): supports subclassing of Struct. * io.c (io_s_new): supports subclassing of IO. Mon Apr 13 11:07:39 1998 Yukihiro Matsumoto * eval.c (f_binding): need to restore method name. * eval.c (rb_call0): raises SystemStackError, not Fatal. * io.c (obj_display): same as `print self'. * io.c (f_p): can now be called in the method form. * re.c (reg_regsub): needed to be mbchar aware. Mon Apr 13 13:18:32 1998 Yukihiro Matsumoto * eval.c (thread_trap_eval): all signals delivered to main_thread. Mon Apr 13 12:47:03 1998 TAKAHASHI Masayoshi * re.c (kcode_set_option): did not set SJIS on SJIS condition. Sun Apr 12 22:14:07 1998 Kazunori NISHI * array.c (ary_uniq_bang): should be `==', not `='. embarrassing. Sat Apr 11 02:13:30 1998 Yukihiro Matsumoto * array.c (ary_subseq): SEGVed for `[][1,1]'. Fri Apr 10 21:29:06 1998 Tadayoshi Funaba * array.c (ary_subseq): add check for beg larger than array length. Wed Apr 8 17:24:11 1998 MAEDA shugo * dir.c (dir_s_open): can be called with block (like IO#open). * dir.c (dir_s_chdir): print directory path on error. * dir.c (dir_s_chroot): ditto * dir.c (Init_Dir): needed to override `new'. Thu Apr 9 18:24:58 1998 Yukihiro Matsumoto * experimental release 1.1b9_09. * string.c (str_cmp): do not depend on sentinel at the end of the strings. * string.c (str_chomp_bang): forgot to set the sentinel. Wed Apr 8 00:59:13 1998 Yukihiro Matsumoto * bignum.c (big2int): converted int may be too big to fit in signed int. * parse.y (arg): `foo += 1' should not cause an error. * variable.c (rb_const_defined): returned false even if the constant is defined at the top level. * eval.c (f_local_variables): dyna_var->id may be null. should have checked before calling str_new2(). Tue Apr 7 01:15:15 1998 Kaneko Naoshi * re.c (reg_regsub): need to check string boundary. Tue Apr 7 19:19:12 1998 Yukihiro Matsumoto * string.c (str_cmp): returns either 1, 0, -1. * array.c (ary_cmp): should check array length, too Tue Apr 7 18:50:16 1998 Yukihiro Matsumoto * experimental release 1.1b9_08. Tue Apr 7 18:31:27 1998 WATANABE Hirofumi * instruby.rb (mandir): dll installation for cygwin32 Tue Apr 7 01:16:45 1998 Yukihiro Matsumoto * config.sub (maybe_os): TOWNS support? * config.guess: too strict check for libc versions on linuxes. * experimental release 1.1b9_07. * array.c (ary_cmp): compare each element using `<=>'. * hash.c (hash_each_with_index): yields [value, key] pair. * class.c (class_protected_instance_methods): list protected method names. * class.c (ins_methods_i): exclude protected methods. * eval.c (PUSH_BLOCK): dynamic variables can be accessed from eval() with bindings. Mon Apr 6 14:49:06 1998 Yukihiro Matsumoto * eval.c (thread_yield): must return evaluated value. Fri Apr 3 13:07:29 1998 Yukihiro Matsumoto * eval.c (thread_schedule): context switch bypassed on wrong conditions. * variable.c (rb_name_class): set classname by id before String class is initialized (1.0 behavior restored). Fri Apr 3 11:25:45 1998 Yukihiro Matsumoto * numeric.c (num2int): no implicit conversion from string. * numeric.c (num2int): check whether `to_i' returns an Integer. * numeric.c (num_zero_p): new method. * numeric.c (num_nonzero_p): new method. returns the receiver if it's not zero. * eval.c (obj_instance_eval): the_class should be the object's singleton class. * error.c (exc_s_new): message is converted into a string. Thu Apr 2 18:31:46 1998 Yukihiro Matsumoto * eval.c (obj_call_init): every object call `initialize'. Wed Apr 1 08:51:53 1998 Tadayoshi Funaba * parse.y (stmt): UNTIL_MOD should be for stmt, not only for expr. Wed Apr 1 01:20:31 1998 Yukihiro Matsumoto * object.c (true_and): boolean operators &, | and ^. Tue Mar 31 13:23:58 1998 Yukihiro Matsumoto * array.c (ary_compact_bang): returns nil, if it does not modify the array like String's bang methods. * array.c (ary_uniq_bang): new method to remove duplicate items. * eval.c (bind_s_new): new method. * numeric.c (num2int): raise exception if Fixnums too big to convert into `int' in case that sizeof(int) < sizeof(INT). * string.c (str_center): SEGV on negative width. * eval.c (eval): forgot to set sourcefile. Mon Mar 30 11:12:29 1998 Yukihiro Matsumoto * file.c (f_test): raises exception for unkown command. * eval.c (Init_eval): `class_eval': alias to the module_eval. Mon Mar 30 18:50:42 1998 Tadayoshi Funaba * string.c (str_capitalize_bang): did not check string modification. * string.c (str_delete_bang): wrong conversion. * string.c (str_intern): typo in error message. Mon Mar 30 01:44:13 1998 Yukihiro Matsumoto * eval.c (obj_instance_eval): accepts block as evaluation body. No compilation needed each time. * eval.c (mod_module_eval): ditto * file.c (file_s_umask): umask did not return old values, if no argument given. Sun Mar 29 00:54:23 1998 Yukihiro Matsumoto * eval.c (f_throw): nil returned always. Sat Mar 28 20:40:12 1998 Yukihiro Matsumoto * experimental release 1.1b9_06. Sat Mar 28 16:07:11 1998 WATANABE Hirofumi * io.c (io_closed): should not cause exception fot closed IO. * string.c (str_tr): returned nil for success. Sat Mar 28 00:47:19 1998 Yukihiro Matsumoto * eval.c (f_local_variables): new method to return an array of local variable names. * variable.c (obj_instance_variables): now returns an array of variable names, as described in the reference. * eval.c (rb_attr): honors default method visibility of the current scope. Fri Mar 27 13:49:27 1998 Yukihiro Matsumoto * experimental release 1.1b9_05. * ruby.c (ruby_prog_init): `site_ruby' added to load_path. * ruby.c (ruby_prog_init): load-path order changed. Paths in the RUBYLIB environment variable comes first in non-tainted mode. Thu Mar 26 11:51:09 1998 Yukihiro Matsumoto * eval.c (rb_call): new feature: `protected' methods. * string.c (str_dump): new method. * eval.c (block_pass): block argument can be nil, which means no block is supplied for the method. Wed Mar 25 21:20:13 1998 Tadayoshi Funaba * string.c (str_reverse_bang): string copied to wrong place. Wed Mar 25 08:12:07 1998 Yukihiro Matsumoto * numeric.c (flo_modulo): caused SEGV if left operand is not a float value. * eval.c (f_eval): optional third and fourth argument to specify file-name and line-number. * eval.c (eval): file-name and line-number set properly. * parse.y (assign_in_cond): literal assignment is now warning, not compile error. * error.c (Warn): Warn() always print message, OTOH Waring() prints when verbose flag is set. Tue Mar 24 12:50:06 1998 Yukihiro Matsumoto * ruby.c (ruby_prog_init): `.' should come last in the load-path. * eval.c (Init_eval): `__send__', alias for `send'. Mon Mar 23 12:44:12 1998 Yukihiro Matsumoto * string.c (str_chomp_bang): now takes `rs' as an argument. * eval.c (thread_free): main_thread should not be freed. Fri Mar 20 16:40:34 1998 Yukihiro Matsumoto * string.c (str_chomp_bang): chomp! (and other ! methods) returns nil if it does not modify the string. * string.c (str_sub_iter_s): should check last pattern since it may be matched to null. Thu Mar 19 13:48:55 1998 Yukihiro Matsumoto * experimental release 1.1b9_04. * parse.y (yylex): `10e0.9' should cause syntax error. Wed Mar 18 17:46:31 1998 Yukihiro Matsumoto * ruby.c (load_file): new file object constant DATA. Only available for the script from the file. * regex.c (re_match): forwading failure point popped too much. Tue Mar 17 18:23:06 1998 Yukihiro Matsumoto * math.c (math_frexp): newly added. * math.c (math_ldexp): ditto. * bignum.c (bigdivmod): calculates modulo. * numeric.c (fix_remainder): returns reminder, formerly introduced as modulo. * numeric.c (fix_modulo): calculates proper `modulo'. * bignum.c (bigdivmod): wrong sign for reminder. Mon Mar 16 17:07:28 1998 Yukihiro Matsumoto * experimental release 1.1b9_03. Mon Mar 16 16:33:53 1998 WATANABE Hirofumi * io.c (pipe_finalize): needed to add pipe_finalize to pipes on cygwin32. Mon Mar 16 14:11:06 1998 Yukihiro Matsumoto * class.c (ins_methods_i): needed to consider NOEX_UNDEF. Mon Mar 16 13:23:53 1998 WATANABE Hirofumi * io.c (io_check_closed): check for `fptr->f2 == NULL'. * io.c (io_fptr_close): ditto. Mon Mar 16 11:49:25 1998 Yukihiro Matsumoto * io.c (pipe_atexit): free()ing referencing pipe_list. * range.c (range_length): returns zero, if the first is greater than the last. * signal.c (trap_restore_mask): restore signal mask before raising exceptions and throws. Fri Mar 13 13:49:24 1998 Yukihiro Matsumoto * experimental release 1.1b9_02. * object.c (mod_clone): need to dups constants and instance variables. * eval.c (rb_eval): forgot to initialize body for NODE_DEFS. * eval.c (rb_eval): retrieve self from calling frame, since self changes sometimes. * env.h (FRAME): need to save self in the calling frame. * io.c (f_gets_method): rs should be initialized by RS. Thu Mar 12 15:33:57 1998 Yukihiro Matsumoto * experimental release 1.1b9_01. * range.c (range_s_new): check values by `first <= last'. * parse.y (lastline_set): fixed offset for $_ and $~ in the local variable space. Wed Mar 11 02:14:17 1998 Yukihiro Matsumoto * io.c (io_gets): handle normal case specially for speed. * eval.c (rb_disable_super): function to disable superclass's method explicitly. * eval.c (rb_eval): inherits previous method definition's NOEX_UNDEF-ness, if exists. * class.c (rb_define_method): disables superclass's overriding method by default. Wed Mar 11 01:40:48 1998 MAEDA shugo * numeric.c (flo_gt,etc.): do not depend on `<=>', to handle NaN. Tue Mar 10 00:03:24 1998 Yukihiro Matsumoto * ruby.c (load_file): understands multiple options in #! line. * regex.c (re_compile_pattern): support for [:alpha:] etc. Mon Mar 9 16:53:51 1998 Yukihiro Matsumoto * io.h (GetOpenFile): embed io_check_closed in GetOpenFile. * sprintf.c (f_sprintf): zero padding failed for negative integers. * sprintf.c (remove_sign_bits): failed to remove some bits. Sat Mar 7 21:51:46 1998 MAEDA shugo * class.c (ins_methods_i): body may be NULL for some case. Fri Mar 6 17:23:07 1998 Yukihiro Matsumoto * regex.c (mbcinit): table driven mbchar detection. * object.c (obj_alloc): check for allocating instance for the primitive classes (mostly perfect). * ext/curses/curses.c (curses_finalize): restore original state at interpreter temination. * ext/curses/curses.c (curses_addstr): forgot to check argument type (caused SEGV). now uses STR2CSTR() macro. Thu Mar 5 13:47:39 1998 Yukihiro Matsumoto * eval.c (block_pass): accepts method object as block args. * eval.c (f_missing): use any_to_s() for stringify. Wed Mar 4 01:39:52 1998 Yukihiro Matsumoto * parse.y (block_arg): new syntax - block argument in the calling arglist. * eval.c (rb_call): no module search. simplified a lot. * eval.c (rb_eval): block arg support. * parse.y (f_block_arg): new syntax - block argument in the formal arglist. Tue Mar 3 14:20:15 1998 Yukihiro Matsumoto * eval.c (obj_method): returns bound method object. * eval.c (rb_call): argument check for empty methods. * ruby.h (NUM2CHR): new macro, originally from curses module. Tue Mar 3 13:03:35 1998 MAEDA shugo * io.c (io_putc): new method. Tue Mar 3 11:21:28 1998 Yukihiro Matsumoto * string.c (str_inspect): more strict charcode detection. * eval.c (thread_stop): stopping only thread raises ThreadError exception. Tue Mar 3 08:04:56 1998 Tadayoshi Funaba * struct.c (struct_alloc): imcomplete struct initialization made GC to access unallocated addresses. Mon Mar 2 16:28:27 1998 Yukihiro Matsumoto * eval.c (thread_stop_method): remove Thread#stop. Fri Feb 27 18:16:26 1998 Yukihiro Matsumoto * version 1.1b9 released. Fri Feb 27 09:36:35 1998 Yukihiro Matsumoto * hash.c (hash_delete_nil): needed to compare value to nil, since nil is the valid key for hashes. * hash.c (hash_foreach_iter): rehashing causes IndexError. * hash.c (hash_foreach_iter): rehash check by pointer comparison. Thu Feb 26 17:22:13 1998 Yukihiro Matsumoto * parse.y (fname): convert reswords into symbols. * parse.y (reswords): reserved words are now embedded in the syntax (sigh). * parse.y: now reserved words can be method names safely. Wed Feb 25 15:50:07 1998 Yukihiro Matsumoto * eval.c (mod_module_eval): clear the_scope's PRIVATE flag before calling eval(). * gc.c (gc_call_finalizer_at_exit): run finalizers before any data object being freed. * eval.c (rb_eval): needed to keep prot_tag->retval before evaluating the ensure clause. Tue Feb 24 11:16:32 1998 Yukihiro Matsumoto * parse.y (yylex): reserved words can be appear as method names at right after 'def' and `.'(dot), like foo.next. * eval.c (return_check): checks for return out of thread (formerly done in return_value). * eval.c (POP_TAG): copy retval to outer level. * eval.c (return_value): just set retval, no check, no unwinding. * parse.y (nextc): line continuation by backslash at end of line. * regex.c (re_compile_pattern): forgot to clear pending_exact on closing parentheses. * parse.y (assignable): should not assign dyna_var to true, if it is already defined. Mon Feb 23 14:35:03 1998 Yukihiro Matsumoto * object.c (obj_is_kind_of): no longer accepts true/false/nil. * object.c ({true,false,nil}_to_i): can be converted into integers. Mon Feb 23 12:11:51 1998 Yukihiro Matsumoto * re.c (reg_s_quote): needed to be mbchar aware. * eval.c (proc_s_new): wrong iter mark. Sat Feb 21 22:59:30 1998 MAEDA shugo * io.c (f_syscall): no argument check. Fri Feb 20 10:17:51 1998 Yukihiro Matsumoto * version 1.1b8 released. * ext/kconv/kconv.c (kconv_kconv): default output code now be determined according to the value of $KCODE. * re.c (rb_get_kcode): can retrieve $KCODE from C code. * parse.y (stmt): if/unless modifiers returns nil, if condition is not established. Thu Feb 19 11:06:47 1998 Yukihiro Matsumoto * ext/kconv/kconv.c (kconv_kconv): charcode can be specified by code name (JIS, SJIS, EUC like value of $KCODE). * regex.c (re_compile_pattern): forgot to fixup_jump for (?:..). * regex.c (re_compile_pattern): needed to clear pending_exact on non-registering grouping (?:...). Wed Feb 18 19:54:21 1998 Yukihiro Matsumoto * parse.y (here_document): needed to set lex_state to EXPR_END. Wed Feb 18 18:45:10 1998 WATANABE Hirofumi * patches for cygwin32 applied. Wed Feb 18 00:41:31 1998 Yukihiro Matsumoto * string.c (str_sub_s): needed to be mbchar aware to increment one character. * regex.c (re_match): \Z matches newline just before the end of the string. Tue Feb 17 00:04:32 1998 Yukihiro Matsumoto * time.c (time_arg): Time.gm and Time.local now understands Time#to_a format. * string.c (str_sub_s): replace happened twice for null pattern. * regex.c (re_search): null pattern should not match after newline at the end of string. * time.c (time_isdst): now returns boolean value. * error.c (rb_check_type): treat special constants in messages. * parse.y (yylex): new form `::Const' to see toplevel constants. * parse.y (cond): SEGV on `if ()'. * gc.c (obj_free): some data needed explicit free(). Mon Feb 16 23:55:40 1998 Yukihiro Matsumoto * eval.c (blk_free): release duplicated block informations. * eval.c (blk_copy_prev): duplicate outer block information into the heap, when proc/binding created. Mon Feb 16 14:38:25 1998 Yukihiro Matsumoto * time.c (time_mon): now 1 for January and so on. * time.c (time_year): year in 19xx (no + 1900 needed anymore). Mon Feb 16 13:28:33 1998 Yukihiro Matsumoto * regex.c (re_compile_pattern): need to fetch mbchar's second byte without translation. Mon Feb 16 12:29:27 1998 MAEDA shugo * eval.c (f_pass_block): pass iterator block to other method. Fri Feb 13 08:16:11 1998 Yukihiro Matsumoto * parse.y (parse_regx): handle \s before read_escape(). * parse.y (read_escape): `\s' in strings as space. Tue Feb 10 17:29:08 1998 Yukihiro Matsumoto * version 1.1b7 released. * string.c (str_aset): string insertion by `str[n] = str2'. * string.c (str_oct): does recognize `0x'. * sprintf.c (f_sprintf): use baes 10 for conversion from string to integer. Mon Feb 9 14:51:56 1998 Yukihiro Matsumoto * numeric.c (do_coerce): proper error message. * string.c (str_sum): bug - masked by wrong value. (sigh..) Sat Feb 7 15:11:14 1998 Yukihiro Matsumoto * string.c (str_empty): new method Fri Feb 6 01:42:15 1998 Yukihiro Matsumoto * time.c (time_asctime): use asctime(3), not strftime(3). Thu Feb 5 18:58:46 1998 Yukihiro Matsumoto * io.c (io_fptr_close): do not free path on close(). * array.c (ary_filter): new method. * enum.c (enum_each_with_index): new method. Thu Feb 5 14:10:35 1998 Yukihiro Matsumoto * parse.y (primary): singleton class def can be appeared inside method bodies. * hash.c (hash_replace): replace content. * string.c (str_replace_method): replace content. * array.c (ary_replace_method): replace elements. * string.c (str_succ_bang): String#succ! Thu Feb 5 18:20:30 1998 WATANABE Hirofumi * string.c (str_upcase_bang): multi byte character support. Wed Feb 4 13:55:26 1998 Yukihiro Matsumoto * array.c (ary_reverse): SEGV on empty array reverse. Tue Feb 3 12:24:07 1998 Yukihiro Matsumoto * re.c (match_to_a): non matching element should be nil. * ruby.c (ruby_load_script): load script after all initialization. * bignum.c (str2inum): need to interpret prefix `0' of `0x'. Tue Feb 3 10:00:18 1998 WATANABE Hirofumi * numeric.c (fix_rshift): use `sizeof(INT)*8' instead of 32. Mon Feb 2 14:09:24 1998 Yukihiro Matsumoto * ruby.c (set_arg0): grab environment region too. Thu Jan 29 18:36:25 1998 WATANABE Hirofumi * process.c (rb_proc_exec): check `sh' to be exist. Thu Jan 29 18:18:19 1998 Yukihiro Matsumoto * io.c (io_stdio_set): assignment to $stdin or $stdout does reopen() as well as $stderr. Thu Jan 29 14:18:40 1998 Yukihiro Matsumoto * class.c (mod_ancestors): should not include singleton classes. * object.c (obj_type): should not return internal class. * io.c (io_reopen): unwillingly closes stdio streams. Thu Jan 29 11:50:35 1998 Toshihiko SHIMOKAWA * ext/socket/socket.c (udp_addrsetup): forgot to use htons(). Tue Jan 27 23:15:24 1998 Yukihiro Matsumoto * keywords: __FILE__, __LINE__ are available again. Fri Jan 23 14:19:28 1998 Yukihiro Matsumoto * version 1.1b6 released. * object.c (mod_to_s): need to duplicate classpath. * error.c (exc_inspect): need to duplicate classpath. Thu Jan 22 00:37:47 1998 Yukihiro Matsumoto * ruby.h (STR2CSTR): new macro to retrieve char*. * class.c (rb_define_method): `initialize' should always be private, even if it defined by C extensions. * eval.c (rb_eval): `initialize' should always be private. Thu Jan 22 16:21:08 1998 Yukihiro Matsumoto * eval.c (rb_eval): some singleton class def cause SEGV. * eval.c (TMP_ALLOC): replace ALLOCA_N, where thread context switch may happen. Wed Jan 21 01:43:42 1998 Yukihiro Matsumoto * eval.c (PUSH_FRAME): do not use ALLOCA_N(). crash on some platforms that use missing/alloca.c. * regex.c (re_compile_pattern): too many pops for non register subexpr. * parse.y (yylex): open parentheses after identifiers are argument list, even if whitespaces have seen. Tue Jan 20 15:19:59 1998 Yukihiro Matsumoto * parse.y (terms): quoted word list by %w(a b c). * ext/tcltklib/extconf.rb: more accurate check for tcl/tk libs. * file.c (rb_stat): most of the FileTest methods (and function `test') accept File objects as the argument. Tue Jan 19 18:19:24 1998 WATANABE Hirofumi * ext/extmk.rb.in (install): there should be no newline after install: * re.c (MIN): renamed from min(). there's a local variable named min in the file, so that some cpp will raise an error. Mon Jan 19 16:30:05 1998 Yukihiro Matsumoto * version 1.1b5 released. * process.c (rb_syswait): no exception raised. 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 * version 1.1b4 released. * 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.