# ChangeLog-0.60_to_1.1¶ ↑

## 1997-08-12¶ ↑

### Tue Aug 12 16:02:18 1997 Yukihiro Matsumoto <matz@netlab.co.jp>¶ ↑

variable.c

  option variables: $-0, $-p(readonly), $-v, $-I(load_path), $-a(readonly), $-K, $-d, $-F, $-i, $-l.

parse.y (yylex)

  ignore rd (ruby document) in the code.

## 1997-08-11¶ ↑

### Mon Aug 11 12:37:58 1997 Yukihiro Matsumoto <matz@netlab.co.jp>¶ ↑

re.c (Init_Regexp)

  $-K as alias to the $KCODE.

io.c (Init_IO)

  new virtual variable $-i for the value of -i option.

enum.c (Init_Enumerable)

  include? as alias of member?

## 1997-08-08¶ ↑

### Fri Aug 8 11:16:50 1997 Yukihiro Matsumoto <matz@netlab.co.jp>¶ ↑

io.c (io_foreach)

  now the record separator can be specified.

io.c (io_s_readlines)

  new method to read in whole file (or command output) from path.

ext/socket/socket.c (Init_socket)

  recvfrom did not work.

ext/socket/socket.c (sock_send)

  forgot to check nil for false value.

## 1997-08-07¶ ↑

### Thu Aug 7 11:40:01 1997 Yukihiro Matsumoto <matz@netlab.co.jp>¶ ↑

variable.c (mod_constants)

  lists constants defiend in the modules/classes.

variable.c (rb_const_set)

  no longer warns about constant overriding by subclasses.

eval.c (mod_eval)

  does eval() on module's context. local variables are shared with outer scope.

object.c (Init_Object)

  remove private_attr/public_attr.

## 1997-08-06¶ ↑

### Wed Aug 6 14:21:36 1997 Yukihiro Matsumoto <matz@netlab.co.jp>¶ ↑

object.c (mod_attr)

  forgot to check nil for false value.

## 1997-08-04¶ ↑

### Mon Aug 4 11:50:28 1997 Yukihiro Matsumoto <matz@netlab.co.jp>¶ ↑

object.c (class_s_new)

  need not to specify names to create classes (or modules) dynamically.

variable.c (rb_class_path)

  scan class constants for anonymous classes/modules to make up pathes.

## 1997-07-30¶ ↑

### Wed Jul 30 08:45:12 1997 Yukihiro Matsumoto <matz@netlab.co.jp>¶ ↑

eval.c (rb_eval)

  stop to cache const value in nodes.

## 1997-07-26¶ ↑

### Sat Jul 26 03:17:22 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>¶ ↑

numeric.c (flo_to_s)

  wrong .0 at end.

### Sat Jul 26 00:36:36 1997 Yukihiro Matsumoto <matz@netlab.co.jp>¶ ↑

eval.c (error_print)

  always print exception type in the toplevel exception handler.

string.c (str_hash)

  wrong hash value.

## 1997-07-24¶ ↑

### Thu Jul 24 11:05:51 1997 Yukihiro Matsumoto <matz@netlab.co.jp>¶ ↑

string.c (uscore_get)

  proper error message for unset $_.

## 1997-07-23¶ ↑

### Wed Jul 23 09:56:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

object.c (obj_methods)

  returns list of method names of the specified object.

class.c (mod_instance_methods)

  returns list of method names of the class instnace.

## 1997-07-11¶ ↑

### Fri Jul 11 22:38:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

object.c (class_superclass)

  returns class's superclass itself. (1.1)

object.c (obj_type)

  returns object's class itself. (1.1)

class.c (mod_included_modules)

  list included modules.

object.c (class_superclass)

  raises error for `Object`.

## 1997-07-03¶ ↑

### Thu Jul 3 09:54:02 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (SETUP_ARGS)

  save source position, remove nd_line().

eval.c (rb_call)

  replace modulo by bit-masking.

eval.c (POP_SCOPE)

  force recycle scope object to reduce gc rate.

gc.c (obj_free)

  aboid calling run_final() when no finalizer is set.

eval.c (PUSH_VARS)

  do not allocate the dynamic scope's end-mark object.

## 1997-07-02¶ ↑

### Wed Jul 2 14:25:07 1997 KIMURA Koichi <kkimura@pure.cpdc.canon.co.jp>¶ ↑

## 1997-07-01¶ ↑

### Tue Jul 1 09:59:00 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (mrhs)

  allow rest-star(*) in right hand side.

## 1997-06-24¶ ↑

### Tue Jun 24 19:04:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1997-06-20¶ ↑

### Sat Jun 20 22:22:51 1997 Michio “Karl” Jinbo <karl@marcer.nagaokaut.ac.jp>¶ ↑

eval.c

  freebsd 3.0 <sys/select.h> support.

### Fri Jun 20 01:24:45 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

gc.c

  eliminate uninitilalized field of `Hash`, Array etc., to avoid dumping core.

## 1997-06-19¶ ↑

### Thu Jun 19 01:29:44 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_split_method)

  wrong limit.

## 1997-06-14¶ ↑

### Sat Jun 14 01:54:16 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

class.c (rb_singleton_class)

  no singleton for special constants (now raises exception).

eval.c (ruby_init)

  cbase in TOPLEVEL_BINDING need to be initialized.

### Sat Jun 14 01:01:16 1997 maeda shugo <shugo@po.aianet.ne.jp>¶ ↑

array.c (sort_2)

  wrong comparison.

### Sat Jun 14 00:53:44 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

hash.c (hash_foreach)

  safe iteration.

## 1997-06-13¶ ↑

### Fri Jun 13 14:04:56 1997 Michio “Karl” Jinbo <karl@marcer.nagaokaut.ac.jp>¶ ↑

configure.in

  -Bshareable option for netbsd.

### Fri Jun 13 01:16:22 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>¶ ↑

io.c (pipe_open)

  call io_unbuffered() only for writable pipes.

## 1997-06-12¶ ↑

### Thu Jun 12 01:14:15 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/socket/socket.c (sock_new)

  use io_unbuffered().

ext/marshal/marshal.c (w_long)

  compact long format, which supports 64 bit architectures (unless longs are >32 bit size).

ext/marshal/marshal.c

  allows recursive data for marshaling.

parse.y (rb_intern)

  raise exception for non-internable string.

ext/marshal/marshal.c (marshal_load)

  allows direct loading from strings.

ext/marshal/marshal.c (marshal_dump)

  allows direct dump to strings.

ext/marshal/marshal.c (marshal_dump)

  interface changed.

## 1997-06-11¶ ↑

### Wed Jun 11 18:26:00 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

gc.c (rb_newobj)

  remove needless memset().

## 1997-06-09¶ ↑

### Mon Jun 9 13:03:43 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_eval)

  reduce condition checks from while/until loop.

eval.c (rb_eval)

  wrong jump point for `next'.

## 1997-06-06¶ ↑

### Fri Jun 6 11:47:39 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby.c (ruby_set_argv)

  initialize dln_argv0 for dln_a_out.

ext/socket/socket.c (open_unix)

  display path name for exceptions.

ruby.c (proc_options)

  option -S did not work well.

## 1997-05-30¶ ↑

### Fri May 30 02:14:44 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (eval)

  set $! properly if exception raised in eval().

io.c (io_write)

  now handles non T_FILE object.

io.c (io_defset)

  $< can be anything which has `write' method.

## 1997-05-29¶ ↑

### Thu May 29 15:40:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (eval)

  $@ is always an array (not string).

pack.c (pack_unpack)

  avoid corrupting memory for unexpected input strings.

## 1997-05-28¶ ↑

### Wed May 28 12:46:13 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

process.c (rb_waitpid)

  do not block other threads.

## 1997-05-27¶ ↑

### Tue May 27 12:02:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (ruby_init)

  split initialize and processing command line options.

ruby.c (ruby_options)

  ruby_init(0, 0, envp) dumps core.

## 1997-05-20¶ ↑

### Tue May 20 18:59:45 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

variable.c (rb_ivar_set)

  invalid instance variable access for built-in object raises `TypeError`.

## 1997-05-16¶ ↑

### Fri May 16 17:32:21 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

dir.c (push_globs)

  was freeing non heap pointer.

gc.c

  remove some duplicated prototypes.

ext/kconv/kconv.c

  fix prototypes.

## 1997-05-09¶ ↑

### Fri May 9 11:38:59 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

gc.c (obj_free)

  avoid free(NULL).

eval.c (rb_check_safe_str)

  argument missing for TypeError().

## 1997-05-08¶ ↑

### Thu May 8 01:14:28 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

file.c (file_s_dirname)

  need to return “.” for path without slashes.

## 1997-05-07¶ ↑

### Wed May 7 19:18:48 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

process.c (f_fork)

  child processe does not inherit parent's itimer setting on linux. call setitimer() again in the child process.

## 1997-05-03¶ ↑

### Sat May 3 02:49:43 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/curses/curses.c

  modified for portability and add to the standard distribution.

## 1997-04-30¶ ↑

### Wed Apr 30 00:34:00 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

file.c (file_s_size)

  returns 0 for empty files (not FALSE).

## 1997-04-25¶ ↑

### Fri Apr 25 02:17:50 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (f_load)

  free unused name-table.

eval.c (f_load)

  copy local variable name-table.

gc.c (obj_free)

  avoid free(NULL).

eval.c (rb_eval)

  forgot to make link from the scope object to NODE_SCOPE. It may crash the interpreter.

## 1997-04-24¶ ↑

### Thu Apr 24 00:35:09 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

random.c (f_srand)

  save old seed anyway. srand() returns no value on some systems.

gc.c (obj_free)

  avoid double free of the local variable name table.

parse.y (top_local_setup)

  modify realloc to handle offset.

## 1997-04-22¶ ↑

### Tue Apr 22 12:58:26 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1997-04-17¶ ↑

### Thu Apr 17 00:40:51 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

configure.in (rb_cv_bsdpgrp)

  proper check for BSD setpgrp/setpgrp.

## 1997-04-16¶ ↑

### Wed Apr 16 16:14:02 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (proc_call)

  proc called in other thread must be orphan.

## 1997-04-15¶ ↑

### Tue Apr 15 10:46:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

gc.c (obj_free)

  NODE_SCOPE marked from SCOPE object.

gc.c (gc_mark)

  some nodes marked wrong.

process.c (proc_getpgrp)

  wrong argument

## 1997-04-14¶ ↑

### Fri Apr 14 18:32:42 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1997-04-12¶ ↑

### Fri Apr 12 01:20:12 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby.h

  String pointer changed to unsigned char.

## 1997-04-11¶ ↑

### Fri Apr 11 10:27:29 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

Makefile.in

  create libruby.a before linking ruby.

string.c (str_strip_bang)

  >0x80 characters for isspace().

eval.c (proc_call)

  set safe-level temporally

eval.c (proc_s_new)

  save safe-level in the proc context.

eval.c (rb_eval)

  no class/module extension in safe mode.

## 1997-04-10¶ ↑

### Thu Apr 10 02:10:41 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

gc.c (gc_mark)

  remove some pointer checks for speeding up.

ruby.c (ruby_options)

  set $0 temporally for -r option.

eval.c

  built-in security feature.

gc.c (gc_sweep)

  do not free nodes during compile.

parse.y (yycompile)

  set flag when compiling.

## 1997-04-09¶ ↑

### Wed Apr 9 10:19:02 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby.c

  forgot to include <ctype.h> for isspace().

file.c

  provide S_ISREG for some platforms.

io.c (Init_IO)

  added some $< operations.

lib/ping.rb

  check host upness using TCP echo.

## 1997-04-08¶ ↑

### Tue Apr 8 00:10:15 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

io.c (arg_read)

  bug with 0 length input.

## 1997-04-07¶ ↑

### Mon Apr 7 11:36:16 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/fcntl/fcntl.c

  module for fcntl constants.

eval.c (rb_alias)

  bug when original was an alias.

parse.y (primary)

  syntax to access singleton class.

eval.c (mod_public_method)

  method's to specify visibitily of the class methods. make_method_{public,private} removed.

## 1997-04-04¶ ↑

### Fri Apr 4 21:43:57 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

gc.c (obj_free)

  finalizer added for experiment.

## 1997-04-03¶ ↑

### Thu Apr 3 02:12:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_schedule)

  make Fatal rise on main_thread on deadlocks.

eval.c (thread_join)

  raise `ThreadError` instead of Fatal, in case of deadlock.

regex.c (re_compile_fastmap)

  uninitialized local variable.

parse.y (parse_regx)

  new option //[nes] to specify character code for regexp literals. Last specified code option is valid.

re.c (reg_s_new)

  additional 3rd argument to specify compiled regexp's character code.

re.c (reg_new_1)

  regexp character code can be specified for each regexp object.

## 1997-04-02¶ ↑

### Wed Apr 2 14:51:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_create)

  handle uncaught throw.

eval.c (thread_create)

  halt on some deadlock conditions.

regex.c (is_in_list)

  wrong result for non-mbc higher-byte characters.

regex.c (re_match)

  wrong skip for multi-byte characters.

regex.c (re_compile_fastmap)

  wrong fastmap in non-mbc mode.

hash.c (Init_Hash)

  hash compatible features added to `ENV`.

## 1997-04-01¶ ↑

### Tue Apr 1 15:24:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (obj_extend)

  remove `Object#extend` as an iterator which is in experimental state, since it unveils internal singleton classes.

## 1997-03-31¶ ↑

### Mon Mar 31 14:29:39 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1997-03-30¶ ↑

### Sun Mar 30 19:40:57 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>¶ ↑

parse.y (terms)

  avoided win32 gcc's optimization bug.

## 1997-03-29¶ ↑

### Sat Mar 29 11:21:58 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

struct.c (make_struct)

  St creates new structure.

## 1997-03-28¶ ↑

### Fri Mar 28 11:24:51 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (obj_make_private)

  new method make_method_{public,private} to change visibility of singleton methods.

regex.c (re_compile_pattern)

  enables numeric literal >= 0x80 in the character class.

regex.c (re_compile_pattern)

  enabled numeric literal >= 0x80, in multibyte mode.

regex.c (re_compile_fastmap)

  modified exantn and charset(_not) to set fastmap for higher bytes properly.

regex.c (is_in_list)

  now matches numeric literals.

## 1997-03-27¶ ↑

### Thu Mar 27 13:34:20 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>¶ ↑

pack.c (pack_unpack)

  extra null byte after unpacked string.

## 1997-03-26¶ ↑

### Wed Mar 26 15:20:34 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

regex.c (re_compile_pattern)

  register numbers must be fit in a byte (0 <= regnum <= 0xff).

regex.c (re_compile_fastmap)

  forgot to set mbchar map for charset_not if RE_MBCTYPE is on.

regex.c (re_compile_pattern)

  set list bits for multi-byte characters for W, S, D in range expression.

object.c (obj_is_kind_of)

  defined that nil itself is kind of nil. TRUE is kind of TRUE, FALSE is kind of FALSE likewise. This change makes `obj.kind_of?(eval(obj.type))' always true.

## 1997-03-25¶ ↑

### Tue Mar 25 14:08:43 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

lib/English.rb

  provides nicer `English` alias for the variables.

parse.y (expr)

  alias $var1 $var2 makes alias of the global variable.

## 1997-03-24¶ ↑

### Mon Mar 24 18:23:20 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1997-03-20¶ ↑

### Thu Mar 20 22:04:59 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (mod_modfunc)

  forget to clear method cache.

## 1997-03-19¶ ↑

### Wed Mar 19 17:06:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (program)

  set methods' default private/public status correctly under eval().

eval.c (eval)

  set the_class correctly while evaluating string.

## 1997-03-18¶ ↑

### Tue Mar 18 12:23:53 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (eval)

  yield can be called from eval().

parse.y (program)

  regexp in condition expression should do matching operation with $_.

re.c (reg_regsub)

  wrong substitution.

## 1997-03-14¶ ↑

### Fri Mar 14 14:36:28 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

hash.c (hash_invert)

  returns value to key mapping of the associative array.

ext/socket/extconf.rb

  set environment variable SOCKS_SERVER to compile with libsocks.a.

ext/socket/socket.c (socks_s_open)

  SOCKSsocket class to access internet via SOCKS library.

sprintf.c (f_sprintf)

  unsigned formats display leading double dots for imaginary sequence of signed bit to the left.

sprintf.c (f_sprintf)

  correct width and precision formatting for big integers.

parse.y (yylex)

  enables negative hex/octal numbers and `_' in non-decimal numbers.

sprintf.c (f_sprintf)

  %u added for unsigned decimal format.

## 1997-03-13¶ ↑

### Thu Mar 13 10:24:27 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sprintf.c (f_sprintf)

  wrong output for bignums.

array.c (ary_reverse_each)

  iterates in reverse order.

pack.c (pack_unpack)

  L unpacked signed long.

io.c (f_backquote)

  now returns an empty string for no output.

## 1997-03-12¶ ↑

### Wed Mar 12 10:20:30 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/socks/socks.c

  socket module with socks library.

## 1997-03-10¶ ↑

### Mon Mar 10 20:44:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

re.c (reg_regsub)

  & for substitution. `, ', and + are avaiable also.

## 1997-03-06¶ ↑

### Thu Mar 6 01:47:03 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/rubydb.el (gud)

  ruby debugger emacs interface

lib/debug.rb

  ruby debugger

parse.y (exprs)

  more accurate line number display.

## 1997-03-05¶ ↑

### Wed Mar 5 21:31:46 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1997-03-04¶ ↑

### Tue Mar 4 12:28:32 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby.c (proc_options)

  search through RUBYPATH and PATH for option -S.

## 1997-03-03¶ ↑

### Mon Mar 3 22:44:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_status)

  returns nil for exception terminated threads.

eval.c (thread_value)

  re-raise exceptions.

## 1997-03-01¶ ↑

### Sat Mar 1 00:59:47 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_eval)

  restore $! value after rescue clause, to re-raise exceptions correctly.

## 1997-02-28¶ ↑

### Fri Feb 28 16:43:38 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1997-02-27¶ ↑

### Thu Feb 27 11:23:41 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_yield_0)

  redo raises exception

eval.c (thread_schedule)

  bug in interrupt handling by rescue.

## 1997-02-26¶ ↑

### Wed Feb 26 00:55:36 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (eval)

  forgot to restore dynamic local variable bindings.

## 1997-02-25¶ ↑

### Tue Feb 25 11:22:08 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/aix_ld.rb

  AIX dynamic load support (not tested).

eval.c (rb_eval)

  wrong return value for defined? super.

error.c (exception)

  more error check.

re.c (reg_regsub)

  wrong substitution when sub expanded to null string.

## 1997-02-21¶ ↑

### Fri Feb 21 13:01:47 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (f_require)

  volatile added. register variable was recycled, so that `GC` did not mark that variable.

object.c (Init_Object)

  forget to mark main object (was mostly ok, but made trouble with early `GC`.)

## 1997-02-20¶ ↑

### Thu Feb 20 11:50:50 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

### Thu Feb 20 11:25:50 1997 Yasuo OHBA <jammy@shljapan.co.jp>¶ ↑

lib/date.rb

  update

### Thu Feb 20 08:25:57 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (yylex)

  forgot tokfix() before rb_intern().

lib/tk.rb (TkVariable)

  give up using trace_var.

## 1997-02-19¶ ↑

### Wed Feb 19 00:24:35 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

pack.c (pack_pack)

  packed by null for A specifier. must be space filled.

pack.c (pack_unpack)

  bug in skipping spaces

gc.c (xmalloc)

  garbage collect for every 4 Meg. allocation.

string.c (str_split_method)

  limit worked wrong way.

io.c (io_gets_method)

  misunderstand 0xff in binary files when $/ == nil.

re.c (reg_regsub)

  re-implement.

ext/socket/socket.c (thread_connect)

  remove O_NONBLOCK, which is not defined on some platform like NeXT.

## 1997-02-17¶ ↑

### Mon Feb 17 13:08:30 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

object.c (mod_eqq)

  === extended for subclass check (to use case as typecase).

## 1997-02-15¶ ↑

### Sat Feb 15 02:07:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

regex.c (re_compile_pattern)

  wrong match backref at end of pattern.

io.c (arg_read)

  now works beyond end of file.

## 1997-02-13¶ ↑

### Thu Feb 13 16:21:24 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (expr)

  return/yield now accept normal argument format.

parse.y (yylex)

  a star in `yield *x' must not be multiplication operator.

## 1997-02-12¶ ↑

### Wed Feb 12 15:06:44 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

time.c (time_plus)

  bug in simple addition.

eval.c (thread_raise)

  raise exceptions from outside.

eval.c (Init_Thread)

  `Thread#alive?` – alias for `Thread#status`.

## 1997-02-10¶ ↑

### Mon Feb 10 00:38:55 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby.h (Data_Make_Struct)

  rename macros.

## 1997-02-08¶ ↑

### Sun Feb 8 11:48:13 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

io.c (f_syscall)

  argument offset was wrong.

## 1997-02-07¶ ↑

### Fri Feb 7 18:01:17 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c

  add volatiles to avoid variable crobbering by longjmp().

eval.c (f_raise)

  1st argument can be the GlobalExit object now.

array.c (ary_unshift)

  no longer accept more than 2 args.

eval.c (f_raise)

  bug if 2nd argument is the exception.

## 1997-02-04¶ ↑

### Tue Feb 4 00:37:29 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (eval)

  check compile errors by nerrs.

eval.c (rb_eval)

  check syntax error by nerrs, not by the return value, which may be NULL.

eval.c (compile)

  Do not clear errinfo.

## 1997-02-03¶ ↑

### Mon Feb 3 10:13:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (obj_extend)

  move real inclusion to `Module#extend_object` to allow redfinition.

object.c (Init_Object)

  `Kernel` class is now `Module`. `Object` class became the true root class.

object.c (obj_inspect)

  remove useless buffer.

hash.c (any_cmp)

  disable interrupts and context switching.

st.c

  remove ALLOW_INTS to disable interrupt during operations.

## 1997-01-31¶ ↑

### Fri Jan 31 22:10:08 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

hash.c (hash_rehash)

  re-register all key-value.

## 1997-01-30¶ ↑

### Thu Jan 30 02:14:49 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

io.c (io_reopen)

  re-implement according to clone() way.

io.c (io_clone)

  copy `IO` object.

struct.c (struct_eql)

  compare elements by eql?.

io.c (io_mode_flags)

  detect “rb”, “wb” etc.

io.h (FMODE_BINMODE)

  added.

ext/socket/socket.c (Init_socket)

  undef `BasicSocket.new`

file.c (Init_File)

  `File.new(path`)

io.c (Init_IO)

  `IO.new(fd`)

eval.c (rb_method_boundp)

  forgot to enable priv argument.

object.c (Init_Object)

  remove `=~' from `Kernel` class.

ext/socket/socket.c (open_inet)

  initialize sockaddr before calling bind(2).

sample/ruby-mode.el (ruby-calculate-indent)

  skip comment lines

## 1997-01-29¶ ↑

### Wed Jan 29 18:43:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (Init_Thread)

  DEFER_INTS during initializing threads.

hash.c (Init_Hash)

  `Hash#eql?` checks for object identity.

eval.c (thread_set_critical)

  wrong value assigned.

## 1997-01-27¶ ↑

### Mon Jan 27 16:10:51 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

io.c (io_print)

  remove print_on().

eval.c (f_missing)

  proper error message for undefined method without argument

## 1997-01-25¶ ↑

### Sat Jan 25 23:32:32 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_sub_s)

  false alert - sub() does not modify string.

array.c (ary_times)

  negative multiplication detected

string.c (str_times)

  negative multiplication detected

## 1997-01-24¶ ↑

### Fri Jan 24 10:51:39 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

time.c (time_arg)

  month -> 0 == “jan” == “1” == “01”, little bit confusing but wanted to conform japanese style.

### Fri Jan 24 09:52:49 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>¶ ↑

util.c (_fixpath)

  supports SJIS filenames on DJGPP.

## 1997-01-23¶ ↑

### Thu Jan 23 16:52:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

README.EXT

  update. partially translated into `English`.

ext/extmk.rb.in

  inherit $LDFLAGS to the final link.

ext/socket/socket.c (Init_socket)

  add various constants.

### Mon Jan 23 11:40:59 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>¶ ↑

eval.c (Init_Thread)

  allocate main_thread first to avoid crash.

### Thu Jan 23 02:09:26 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

gc.c (`ObjectSpace`)

  API modified. each_object method will do all the iteration.

eval.c (proc_call)

  wrong return from nested lambda.

ext/GD/GD.c

  debugged.

## 1997-01-22¶ ↑

### Wed Jan 22 16:12:25 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

gc.c (gc_mark)

  forgot to mark match->str.

ext/GD/GD.c

  GD interface module.

eval.c (PUSH_BLOCK)

  wrong value pushed as the block level.

## 1997-01-20¶ ↑

### Mon Jan 20 14:01:31 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_run)

  no context switch in the critical section.

### Mon Jan 20 09:40:59 1997 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>¶ ↑

utils.c

  supports 8+3 filenames

## 1997-01-18¶ ↑

### Sat Jan 18 01:23:03 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

regex.c (PATFETCH)

  need cast to unsigned char.

io.c (io_ctl)

  bug in case when arg is not a string.

lib/tk.rb

  forgot that Kernel#type returns the class name now.

regex.c (re_search)

  “abcn” =~ “^$” should not match.

## 1997-01-17¶ ↑

### Fri Jan 17 12:31:37 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby.c (ruby_options)

  constant PLATFORM, which is in the {cpu}-{os} form, defined.

configure.in

  platform information embedded in the interpreter.

regex.c (re_search)

  /^$/ did not match to “” by wrong exit condition.

lib/thread.rb

  re-write Mutex/Queue based on Thread.critical.

eval.c (thread_set_critical)

  remove `Thread.exclusive`, add Thread.critical = TRUE/FALSE instead.

re.c (reg_search)

  re-compile pattern if needed

regex.c (PATFETCH)

  do translate at compile time

## 1997-01-16¶ ↑

### Thu Jan 16 00:49:10 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

gc.c (gc_mark_frame)

  forgot to mark frame->cbase.

regex.c (re_compile_pattern)

  /a$|b)/ causes error.

regex.c (re_compile_pattern)

  /(^|b)/ causes error.

re.c (Init_Regexp)

  set RE_CONTEXTUAL_INVALID_OPS flag.

## 1997-01-14¶ ↑

### Tue Jan 14 02:09:06 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (proc_call)

  `Proc#call`をイテレータとして呼んだ時に対応

configure.in

  nextstep対応？

eval.c (rb_eval)

  a=cで無駄な配列を割り当てない

eval.c (f_send)

  イテレータとして呼ばれたらイテレータとしてメソッ ドを呼ぶ．

string.c (str_new4)

  match共有用の生成関数

re.c (reg_search)

  matchの実体(文字列)をマッチを行った文字列と copy-on-writeで共有

string.c (str_hash)

  toupperをかける条件が違っていた

array.c (sort_2)

  FixnumとStringを特別扱いして高速化

## 1997-01-13¶ ↑

### Mon Jan 13 11:03:53 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_create)

  threadが生成されるまで割込みを設定しない

eval.c (Init_Thread)

  割込みタイミングを100msecに

## 1997-01-11¶ ↑

### Sat Jan 11 00:17:05 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

regex.c (re_search)

  マッチに失敗する場合があった(本当に直ったか？)

io.c (io_ioctl,io_fcntl)

  第2引数を省略可能に

io.c (io_ioctl,io_fcntl)

  戻り値がIOだった．整数(システムコール の戻り値)を返すようにした．

io.c (io_ctl)

  引数が整数の時に対応

io.c (io_fcntl)

  file.cから移動

## 1997-01-10¶ ↑

### Fri Jan 10 17:01:47 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/socket/socket.c (thread_connect)

  open(connect(2))で他の threadをブロックしないように

eval.c (thread_create)

  exitでないときにexitだと思い込む

## 1997-01-06¶ ↑

### Mon Jan 6 17:42:22 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_sub_s)

  文字列長より長いoffsetの検出

regex.c (re_search)

  空にマッチするパターン後の$で失敗

## 1997-01-02¶ ↑

### Thu Jan 2 16:36:23 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

file.c (file_reopen)

  Fileのreopen(pathまたはIOで指定)．

io.c (io_reopen)

  IOのreopen(IOで指定) – change classつき

## 1997-01-01¶ ↑

### Wed Jan 1 11:09:01 1997 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

io.c (f_select)

  timeoutでnilを返す

## 1996-12-27¶ ↑

### Fri Dec 27 13:06:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

file.c (file_s_open)

  サブクラスではそのクラスのインスタンスを返 すように．

### Fri Dec 27 08:58:27 1996 <ono@isl.nara.sharp.co.jp>¶ ↑

numeric.c (flo_to_s)

  index()を使わない．strstr()に．

## 1996-12-26¶ ↑

### Thu Dec 26 01:34:17 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

lib/tk.rb

  placeが使えるように

pack.c (endian)

  マクロDYNAMIC_ENDIANを指定すると実行時にendian を判定するように．

eval.c (thread_alloc)

  初期化忘れのメンバがあった．

## 1996-12-25¶ ↑

### Wed Dec 25 00:33:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

io.c (Init_IO)

  newを無効化

lib/tkthcore.rb

  tk_call “global $foo; set foo 5”などもできるように

eval.c (thread_restore_context)

  $~, $_でスタックを壊していた

process.c (rb_waitpid)

  threadに一応対応

## 1996-12-24¶ ↑

### Tue Dec 24 15:20:58 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

configure.in

  charがunsignedかどうかもチェック

regex.c (SIGN_EXTEND_CHAR)

  CHAR_UNSIGNEDにも対応

pack.c (pack_unpack)

  明示的にsigned charを指定．

## 1996-12-23¶ ↑

### Mon Dec 23 14:41:23 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby.c (load_file)

  標準入力からのスクリプトで一時ファイルを使わ ないように

object.c (f_integer)

  `0x', `0'などでbaseを解釈するように．

## 1996-12-20¶ ↑

### Fri Dec 20 01:44:39 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

Makefile.in (flock.o)

  flockに対応

## 1996-12-19¶ ↑

### Thu Dec 19 20:13:32 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1996-12-18¶ ↑

### Wed Dec 18 00:06:48 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

glob.c (glob_filename)

  strrchrがマクロの場合に対応

configure.in

  <sys/select.h>をチェック

ext/kconv/kconv.c

  1.62ベースに

ext/kconv/kconv.c

  Kconvモジュール

string.c (str_substr)

  lenが元の文字列より長い時に対応

parse.y (iterator)

  「$bar do .. end」などは許さないように

parse.y (iterator)

  FID(foo!,foo?)をdo形式のイテレータにできる．

missing/flock.c (flock)

  lockf()を使って代替

file.c (file_flock)

  flockを実装

## 1996-12-17¶ ↑

### Tue Dec 17 12:13:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1996-12-13¶ ↑

### Fri Dec 13 02:05:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

configure.in

  RUBYLIBのカレントを後回し(@mix/awk offline)

dln.c

  AIXに対応した？(@mix/awk offline)

eval.c (thread_schedule)

  critical sectionでも明示的なコンテキス トスイッチは起きないとまずい

re.c (reg_search)

  matchに失敗した時に$~をnilに．

re.c (reg_search)

  毎回matchを生成するように

## 1996-12-12¶ ↑

### Thu Dec 12 17:03:30 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

numeric.c (flo_to_s)

  2.0.to_s -> 2.0に

eval.c (thread_save_context)

  $_, $~をthread毎に保存

eval.c (thread_kill)

  main threadではexit(0)

string.c (str_split_method)

  間違った結果を返していた

### Thu Dec 12 15:32:48 1996 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>¶ ↑

dir.c

  CYGWIN32対応

ext/socket/socket.c

  CYGWIN32対応

io.c

  CYGWIN32対応

### Thu Dec 12 00:41:17 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (parse_string)

  “”“…”“”はやはり無くすことにした

parse.y (parse_regx)

  %r|…|でterminatorを \ でエスケープできる ように

signal.c (posix_signal)

  sigactionを使うsignal

configure.in

  posix signal/bsd signalの検出

## 1996-12-11¶ ↑

### Wed Dec 11 17:47:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_schedule)

  critical sectionではコンテキストスイッ チが起きないように

lib/thread.rb

  SharedMutexクラス

lib/jcode.rb

  `String#scan`を使うように

## 1996-12-10¶ ↑

### Tue Dec 10 12:21:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_split_method)

  正規表現に()を含む時にバグ

lib/jcode.rb

  ちょっとましになった

string.c (tr_setup_table)

  置換文字が短すぎる(2文字)のときのバグ

## 1996-12-09¶ ↑

### Mon Dec 9 11:38:04 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_scan)

  文字列のマッチを行う．イテレータとしても動 作する

regex.c (re_copy_registers)

  allocatedが初期化されていなかった

re.c (match_to_s)

  $~の文字列化

re.c (match_to_a)

  $~を配列化できるように

re.c (match_getter)

  レジスタが初期化されていなかった

## 1996-12-05¶ ↑

### Thu Dec 5 11:06:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_split_method)

  マッチしなかった括弧は空文字列を pushするべきではない

string.c (str_succ)

  アルファベットを含まない文字に対応

## 1996-12-04¶ ↑

### Wed Dec 4 10:48:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

io.c (io_binmode)

  DJGPPでのbinmode対応

sprintf.c (f_sprintf)

  intの範囲の数値は直接sprintfで変換する

sprintf.c (f_sprintf)

  “%02s”に頼らない

re.c (reg_search)

  indexでSEGV

## 1996-12-03¶ ↑

### Tue Dec 3 10:09:36 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/extmk.rb.in (install)

  INSTALL_DATAからINSTALLに変更

dln.c

  hpux対応

string.c (str_aset_method)

  負の値を含む範囲でも例外を起こさない

array.c (ary_replace)

  負の値を含む範囲でも例外を起こさない

array.c (beg_len)

  beg==endの時，長さ0に

## 1996-12-02¶ ↑

### Mon Dec 2 14:07:12 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

configure.in

  HP shl対応

string.c (str_upto)

  beg > endの時無限ループに落ちるのを止めた

range.c (range_each)

  `String#upto`が再定義された場合に対応

string.c (str_split_method)

  “ABC”.split(/(B)/)が誤動作

## 1996-11-30¶ ↑

### Sat Nov 30 01:43:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_eval)

  undefでSEGV

## 1996-11-29¶ ↑

### Fri Nov 29 12:17:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/ruby-mode.el (ruby-parse-region)

  %Q#..#などに対応．しか し，区切り文字が演算子で行末にある場合には対応できなかった．

re.c (reg_raise)

  例外でもスラッシュをエスケープ

re.c (reg_inspect)

  スラッシュをエスケープ

parse.y (parse_string)

  `%[QqXxRr](.)..1'なる文字列形式(テスト 採用)

parse.y (parse_qstring)

  '''…'''の形式

ext/dbm/dbm.c (Init_dbm)

  述語key?,value?の追加

ext/dbm/dbm.c (Init_dbm)

  includes->include?

hash.c (Init_Hash)

  述語key?,value?,include?の追加

eval.c (rb_eval)

  unlessでelse節が実行されない(うーん)

string.c (str_sub_iter_s)

  イテレータブロック内でマッチが行われ ると位置がずれる(時に無限ループに落ちる)

string.c (str_resize)

  lenが0の時sizeの調整が行われなかった

## 1996-11-28¶ ↑

### Thu Nov 28 00:59:54 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (parse_string)

  3-quote styleの文字列(例:“”“abc”d“e”“”)

configure.in (EXTSTATIC)

  extを静的にリンクする時にはrubyはdllを 使うように

io.c (Init_IO)

  getsの引数が間違っていた

string.c (str_each_line)

  RSを明示的に指定できるように

## 1996-11-27¶ ↑

### Wed Nov 27 12:37:46 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_eval)

  iver defined? でselfを指定するのを忘れた

io.c

  gets等でRSを明示的に指定できるように

ext/extmk.rb.in (install)

  static linkに失敗

## 1996-11-26¶ ↑

### Tue Nov 26 10:33:04 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_sub_s)

  置換後の文字列長さが間違っていた

## 1996-11-25¶ ↑

### Mon Nov 25 09:11:22 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

numeric.c (fix_rshift)

  32以上の右シフトで0を返すように(Cの rshiftは(x>>(y%32))を返していた)．

string.c (str_gsub)

  置換が行われない場合があった

string.c (str_resize)

  本当に必要な時だけrealloc

## 1996-11-21¶ ↑

### Thu Nov 21 04:13:21 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

configure.in (EXTSTATIC)

  –with-static-linked-extで全てのモジュー ルを静的リンクするように

pack.c (pack_unpack)

  行末の改行がない時にもチェックサムをスキッ プするように

## 1996-11-20¶ ↑

### Wed Nov 20 21:42:51 1996 Yasuo OHBA <jammy@shljapan.co.jp>¶ ↑

configure.in

  freebsd対応

### Wed Nov 20 10:24:24 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/extmk.rb.in (install)

  通常リンク用のLDFLAGSとダイナミックリ ンク用のDLDFALGSを分離

ext/extmk.rb.in (install)

  コンパイルの成功したものを静的リンク のリストに追加する

eval.c (f_missing)

  オブジェクトの文字列表現が長すぎる時バッファ を書き潰していた

process.c (proc_exec_v)

  forkした後例外を発生させてはいけない

## 1996-11-19¶ ↑

### Tue Nov 19 13:28:15 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (mod_method_defined)

  `Module#method_defined?` の追加

parse.y (call_args)

  引数が唯一のコマンドコールである時のバグ(戻 り値が展開されてしまう)

## 1996-11-18¶ ↑

### Mon Nov 18 13:28:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_sub)

  失敗した時にnilを返していた

string.c (str_split_method)

  検索開始位置が移動してなかった

ext/socket/socket.c (sock_s_getservbyaname)

  まだ間違っていた

string.c (str_sub_s)

  元の文字列を置換するのを止めた

pack.c (encodes)

  領域外をアクセスしていた

## 1996-11-15¶ ↑

### Fri Nov 15 17:10:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

bignum.c (big_divmod)

  Bignumが引数の場合の対応忘れ

sample/ruby-mode.el (ruby-expr-beg)

  word?形式への対応が不完全

## 1996-11-13¶ ↑

### Wed Nov 13 15:42:40 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_tr_s_bang)

  tr_sでtrが行われていなかった

eval.c (rb_eval)

  autoloadクラスのチェック

string.c (f_sub)

  subがsub!と同じ動作になっていた

eval.c (thread_sleep)

  stopとsleepの分離

## 1996-11-11¶ ↑

### Mon Nov 11 13:53:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

numeric.c (fix_step)

  to, stepが整数以外の場合に対応

eval.c (rb_call)

  dynamic varがdynamic scopingになっていた(これ はまずい)

string.c (str_chop_bang)

  長さ0の文字列のchopで，領域外のアクセ スが発生していた．

parse.y (yyerror)

  割り当てた領域外をアクセスしていた

## 1996-11-08¶ ↑

### Fri Nov 8 11:54:46 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_yield)

  scopeをheapにコピー

## 1996-11-07¶ ↑

### Thu Nov 7 09:56:53 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

numeric.c (num_coerce)

  とりあえず両辺をFloatに変換することに

## 1996-11-06¶ ↑

### Wed Nov 6 10:45:13 1996 Yasuo OHBA <jammy@shljapan.co.jp>¶ ↑

lib/parsearg.rb

  第2引数を変更．

## 1996-11-05¶ ↑

### Tue Nov 5 14:21:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1996-11-02¶ ↑

### Sat Nov 2 01:11:40 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

bignum.c (big_pow)

  typo (dy -> dx)

bignum.c (big_divmod)

  知らない型はfloatに変換してみる

numeric.c (fix_lshift)

  境界条件のバグ(負になっていた)

bignum.c (big_pow)

  無駄なfloatへの変換をなくした

math.c (math_atan2)

  typo(x -> y)

## 1996-11-01¶ ↑

### Fri Nov 1 15:30:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/socket/socket.c (sock_gethostname)

  gethostnameがない時には unameを使ってホスト名を得る

ext/etc/etc.c (etc_getlogin)

  getloginがNULLを返しても環境変数を 調べるように

object.c (krn_clone)

  オブジェクトのフラグもコピー

hash.c (rb_cmp)

  ハッシュの比較を`=='でなく`eql?'に変更

math.c (Need_Float)

  Float()を使って変換する

compar.c (cmp_gt)

  以前の右辺を返す仕様の名残が残っていた

## 1996-10-31¶ ↑

### Thu Oct 31 12:55:51 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

numeric.c (Init_Numeric)

  typo

eval.c (error_print)

  長すぎるtrace backを途中省略する

regex.c (re_compile_pattern)

  全角のrangeに対応

## 1996-10-30¶ ↑

### Wed Oct 30 03:03:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

io.c (f_ungetc)

  関数を追加

eval.c (dyna_var_asgn)

  return値忘れ

## 1996-10-29¶ ↑

### Tue Oct 29 10:05:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (f_split)

  関数splitを追加

eval.c (rb_call)

  ネストした外側のクラス/モジュールの定数を参照 できるように

## 1996-10-28¶ ↑

### Mon Oct 28 09:51:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_sub)

  offsetが文字の末尾にある時のチェック

regex.c (re_match)

  割り当てるレジスタの数が1多かった

io.c (io_gets)

  $/ = “”の動作をperlに合わせる(awkとはちょっと違 うらしい)

io.c (io_gets)

  $/ = nilの時少し高速化

string.c (str_split_method)

  括弧がnullにマッチした時にも無視し ないように

string.c (str_split_method)

  括弧にマッチした分はlimitの数に含め ないように．

numeric.c (num_coerce_bin)

  coerceの定義を変更，2要素の配列 [x,y]を返すように

sample/ruby-mode.el (ruby-calculate-indent)

  “do |aa|”の対応を改 善した．

## 1996-10-26¶ ↑

### Sat Oct 26 01:43:51 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/marshal/marshal.c (w_object)

  ビルトインクラスのサブクラスを 正しく復旧できるように

ext/marshal/marshal.c (w_object)

  ユーザ定義dumpの優先

numeric.c (flo_coerce)

  Float()を使って定義

numeric.c (Init_Numeric)

  Numericのnewのundefはまずい

ext/marshal/marshal.c (w_symbol)

  シンボルの内容(文字列)は一度し かファイルに書き出さない．

sample/ruby-mode.el (ruby-parse-region)

  if/while修飾子に対応し なくなっていた

bignum.c (Init_Bignum)

  Bignum.newを除く

eval.c (rb_eval)

  引数評価後にファイル名と行番号を再設定

numeric.c (flo_div)

  typo

sample/ruby-mode.el (ruby-parse-region)

  def /, def `に対応

## 1996-10-25¶ ↑

### Fri Oct 25 09:26:29 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/ruby-mode.el (ruby-calculate-indent)

  “do |aa|”に対応

array.c (ary_aset)

  indexがfixnumの場合ちょっと高速化

eval.c (thread_fd_writable)

  書き込み前のselectチェック

array.c (ary_assoc)

  無限ループに落ちた

eval.c (thread_wait_for)

  selectがエラー終了した時，linux以外で の動作が正しくなかった．

## 1996-10-24¶ ↑

### Thu Oct 24 08:26:48 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (backtrace)

  `$@'を文字列から配列に変更した．

eval.c (eval)

  eval中の例外発生位置を保存する

bignum.c (bigsub)

  オペランドの大小比較の失敗

re.c (reg_search)

  直接参照がない時にも`$~'がセットされるように

## 1996-10-23¶ ↑

### Wed Oct 23 10:40:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/marshal/marshal.c (r_bytes)

  mallocをやめ，allocaを使う

sample/ruby-mode.el (ruby-calculate-indent)

  括弧の対応を変更．

## 1996-10-22¶ ↑

### Tue Oct 22 12:59:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

hash.c (hash_s_new)

  sizeを指定できるように

ext/marshal/marshal.c (w_object)

  dumpする深さ制限を指定できるよ うに

array.c (ary_s_new)

  sizeを指定した時の初期化忘れ

object.c (f_float)

  big2dblの宣言忘れ．

bignum.c (bigsub)

  大きさの近いBignum同士の演算で結果が負になる 場合に間違いがあった．

array.c (ary_aset)

  置換先と置換元が同じ長さの時内容を shift(memmove)しないように．

ext/marshal/marshal.c (marshal_dump)

  ファイルフォーマットにバー ジョンを埋め込むように

ext/marshal/marshal.c (tmpnam)

  linux-aout-dln用に定義

## 1996-10-21¶ ↑

### Mon Oct 21 08:40:20 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/socket/socket.c (sock_s_gethostbyname)

  hostent構造体の情報 を返す

(sock_s_gethostbyaddr)

  IPアドレスからhostent構造体を得る

(sock_s_getservbyaname)

  getservbyname(3)

## 1996-10-18¶ ↑

### Fri Oct 18 10:37:36 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/ruby-mode.el (ruby-indent-to)

  移動先カラムが負になるバグ

eval.c (compile)

  evalで元ソースの行番号でエラーを表示する

## 1996-10-17¶ ↑

### Thu Oct 17 09:52:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (eval)

  evalで文法エラーがあった時にSEGV

lib/safe.rb

  Restricted.evalの中だけ制限を加える．

eval.c (error_print)

  バックトレースの出力．callerで例外発生位置 を調整した時に問題が出る(そんなことをしなければ良いのだが…)

eval.c (make_backtrace)

  バックトレースの生成

## 1996-10-16¶ ↑

### Wed Oct 16 12:56:22 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby-man-0.99.2-jp/index.html

  日本語版ドキュメントの完成(長かった…)

re.c (reg_regcomp)

  $=がnilの時の処理

string.c (f_chop)

  $_に対するchop

## 1996-10-15¶ ↑

### Tue Oct 15 11:04:23 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1996-10-14¶ ↑

### Mon Oct 14 18:22:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_schedule)

  BOW対応．selectが-1を返した時にバグ(実 はdo .. whileがcontinueで先頭にジャンプすると思い込んでいた．条 件の直前だったのね ^^);;;;;

sample/ruby-mode.el (ruby-mode-syntax-table)

  ?のsyntaxが“/”では まずいらしい

hash.c (rb_hash)

  name conflict

## 1996-10-11¶ ↑

### Fri Oct 11 00:23:05 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/marshal/marshal.c (w_object)

  結局動いていなかった循環オブジェ クト対応を外した．

hash.c (rb_hash)

  Fixnumと文字列の高速化

ext/marshal/marshal.c (w_object)

  無駄なデータの削除(フォーマッ トの非互換性)

io.c (io_readline)

  戻り値の不備

ext/marshal/marshal.c (marshal_dumps)

  MSDOS対応

ruby.c (load_file)

  MSDOS対応

## 1996-10-09¶ ↑

### Wed Oct 9 17:46:27 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/extmk.rb.in (install)

  無駄なコピーを避ける

string.c (str_sub_method)

  マッチがなかった時のString#subの値が 違っていた．

eval.c (obj_extend)

  extendした時にobject_extendedを呼ぶように

## 1996-10-08¶ ↑

### Tue Oct 8 00:55:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_alloc)

  割当の平均化

eval.c (thread_schedule)

  joinのバグを修正

eval.c (thread_wait_for)

  selectへの割込みなどに対応

eval.c (thread_select)

  linuxのselectの挙動に対応(timeoutが変化 する)

## 1996-10-07¶ ↑

### Mon Oct 7 09:47:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (PUSH_BLOCK)

  the_classの保存を忘れていた．

ext/dbm/dbm.c (fdbm_store)

  sizeの保存する場所が間違っていた

ext/socket/socket.c (s_accept)

  thread対応していなかった

## 1996-10-05¶ ↑

### Sat Oct 5 01:32:27 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

io.c (io_readchar)

  EOFで例外を発生させる

## 1996-10-04¶ ↑

### Fri Oct 4 11:59:54 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/marshal/marshal.c (w_object)

  HashとObjectの復旧に必要なハッ シュテーブルが渡されていなかった．

variable.c (rb_path2class)

  ユーザ定義クラスの復旧に失敗していた

variable.c (rb_path2class)

  クラスが存在しない時のエラーをFatal からNameErrorへ．

range.c (range_s_new)

  first,lastが両方Numericの時エラーになって いた．

range.c

  start->first, end->last

## 1996-10-02¶ ↑

### Wed Oct 2 02:02:46 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

file.c

  DJGPPでchmod,chownを使えるように(ってDOSにchownがあるのか?)

class.c (rb_singleton_class)

  ビルトインクラスもextendしたり特異 メソッドを追加したりできるように

variable.c (rb_set_class_path)

  ユーザ定義のトップレベルクラスに pathを設定しない

eval.c (eval)

  例外がRuntimeErrorに化けていた

eval.c (eval)

  eval中の例外の表現の改善

eval.c (eval)

  eval_with_bindingとの一本化

eval.c (rb_eval)

  クラス/モジュール定義の中から定義中のクラス/モ ジュールが参照できるように

## 1996-10-01¶ ↑

### Tue Oct 1 01:40:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y

  cur_crefが2度宣言されていた

signal.c (trap)

  SIGSEGV，SIGBUSのない機種に対応

io.c (Init_IO)

  引数タイプの指定間違い

## 1996-09-30¶ ↑

### Mon Sep 30 15:28:00 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

config.guess,config.sub

  $host_osが正しく設定されない

eval.c (rb_eval)

  yieldで正しくないselfが設定されていた

eval.c (ruby_run)

  toplevelの例外処理のバグ

### Mon Sep 30 09:13:26 1996 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>¶ ↑

## 1996-09-28¶ ↑

### Sat Sep 28 02:45:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/ruby-mode.el (ruby-beginning-of-block)

  ブロックの先頭に 移動(正しくインデントしていないと動作しない)

(ruby-end-of-block)

  同上

eval.c (class_s_new)

  `Class#new`がイテレータとして呼ばれた時は initializeもイテレータとして呼ばれるように

signal.c (sigsegv)

  SEGVでbacktraceを表示するように

## 1996-09-27¶ ↑

### Fri Sep 27 09:51:07 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (error_print)

  引数のないraiseでメッセージが正しく表示さ れるように．

eval.c (rb_longjmp)

  mesgがnilの時RuntimeErrorを生成する．

eval.c (f_raise)

  引数がない時に対応

eval.c (thread_mark)

  stack上にないデータのアドレス変換を行って いた．

eval.c (Init_Thread)

  割込みの間隔が1秒と長すぎた．

## 1996-09-26¶ ↑

### Thu Sep 26 16:02:45 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_schedule)

  一度ペンディングになるとフラグがクリア されていなかった．

process.c (rb_proc_exec)

  system/execの引数が空文字列であった場 合，例外を発生すべきだった．

config.sub/config.guess

  新しいものに置き換え

### Thu Sep 26 15:41:35 1996 WATANABE Hirofumi <watanabe@ase.ptg.sony.co.jp>¶ ↑

io.c (next_argv)

  -i.bakをBOWとDOSに対応．

### Thu Sep 26 01:31:43 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

io.c (io_sysread)

  EOFで例外

io.c (f_readline)

  EOFで例外を発生するように．getsは互換性のため nilを返すままにする

eval.c (proc_call)

  lambdaからのreturnでIN_BLOCKフラグが立ったま まだった

eval.c (PUSH_BLOCK2)

  threadに対応するためBlockを一度stackにコピー

## 1996-09-25¶ ↑

### Wed Sep 25 11:54:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (method_call)

  Const::method()形式を使えるようにしてみた． 引数括弧は省略できない．

sample/test.rb

  `Process.kill`の存在を確かめてからテストを行う

eval.c (eval_with_binding)

  第2引数としてbinding(またはlambda)を 与えるとその環境でevalを実行するようにした

eval.c (f_binding)

  現在のbindingを返す関数

eval.c

  block構造体にthe_classを保存するメンバを追加

process.c (Init_process)

  kill,wait,waitpidをProcessに移動

## 1996-09-24¶ ↑

### Tue Sep 24 02:44:43 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/ruby-mode.el

  いろいろ問題が多いので以前の高速化は破棄． 別のアプローチを使った．

lib/tk.rb (Tk.pack)

  複数のウィンドウを受け付けるpack

## 1996-09-21¶ ↑

### Sat Sep 21 11:08:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (exprs)

  空文も受け付けるように文法を変更．今までは改行 の連続だけが許されていた．

## 1996-09-20¶ ↑

### Fri Sep 20 11:39:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

re.c (Init_Regexp)

  名前つき例外を導入．

eval.c (f_missing)

  Objectはinspectしない．

object.c (inspect_i)

  `Object#inspect`でloopに対応．

regex.c (re_search)

  /^$/が“”にマッチしなかった．

## 1996-09-19¶ ↑

### Thu Sep 19 19:25:12 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

regex.c (re_search)

  /^$/が非空行にマッチしていた．

## 1996-09-17¶ ↑

### Tue Sep 17 10:28:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1996-09-16¶ ↑

### Mon Sep 16 10:47:56 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/ruby-mode.el (ruby-calculate-indent)

  演算子継続の場合の 文字列の判定のバグ

sample/ruby-mode.el (ruby-calculate-indent)

  elseなどの次の行の インデント計算を正しく．

## 1996-09-14¶ ↑

### Sat Sep 14 08:37:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1996-09-13¶ ↑

### Fri Sep 13 08:06:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/socket/socket.c (tcpaddr)

  port番号にntohsをつけ忘れ

dln.c (link_undef)

  テーブルの種類が間違っていた．

bignum.c (bigadd)

  引き算が発生する時に計算違いが起きていた．

parse.y (iter_do_block)

  do..endでもdynamic variableを．

bignum.c (big_pow)

  より正確な計算を(整数同士ではfloatに変換しな い)．

## 1996-09-12¶ ↑

### Thu Sep 12 13:11:55 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

variable.c (rb_set_class_path)

  Stringクラスが初期化される前に Stringを作っていた．組込みクラスにはpathはいらない

parse.y (yylex)

  0.1が0になっていた

parse.y (yylex)

  行番号の不整合

gc.c (oblist_live_obj)

  今「生きている」全部のオブジェクトを返す イテレータ．そのクラス(またはサブクラス)の全部のインスタンスを返 すeach_object_ofも定義した．

class.c (rb_define_class_id)

  無駄なクラスを割り当てていた．結果 として未初期化のクラスオブジェクトが存在していた．

## 1996-09-11¶ ↑

### Wed Sep 11 00:56:23 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (yylex)

  octalの定数の検出をより正確に(090はエラーとか)．

bignum.c (big_minus)

  yがxより大きい場合にエラー．

parse.y (yylex)

  エラー行番号の表示をより正確に

sample/ruby-mode.el (ruby-expr-beg)

  変数名が1文字の時誤動作して いた．

sample/ruby-mode.el (ruby-calculate-indent)

  ?/でループに落ちい たバグを修正．

enum.c (enum_min,enum_max)

  sortのようにイテレータとしても動作す るように．

enum.c (enum_find_all)

  typo

## 1996-09-10¶ ↑

### Tue Sep 10 12:07:12 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

node.h (nd_line)

  NODEのlineをflagsに押し込めてオブジェクトサイ ズを小さくした．制限:32bit intのマシンの場合，ファイルの行数が 32767を越えると正常に表示されない．

st.c

  hashとcompareの関数メンバを構造体にパック，クラス的な使い 方を行う．1 tableあたり4 byteの節約．

## 1996-09-09¶ ↑

### Mon Sep 9 16:35:54 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

file.c (file_truncate)

  提供されない時には特別な例外を発生するよ うに．

eval.c (Init_Proc)

  不適切な位置のlocal-jumpを例外に．

## 1996-09-07¶ ↑

### Sat Sep 7 17:06:15 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (proc_call)

  まだスコープがスタック上にある時には局所脱出 を有効にする．これで，procを生成してcallすることは，スコープを脱 出しない限り，yieldと同じ意味を持つことになる．

## 1996-09-06¶ ↑

### Fri Sep 6 13:30:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/ruby-mode.el (ruby-indent-to)

  インデントが変わらない時に はバッファを変更しない．

(ruby-calculate-indent)

  まず文字列の内部か判断してから，前の行 からパーズを行う．defunが大きくなった時の高速化．

(ruby-in-string-p)

  文字列の内部かどうかを判断する関数(以前の parseから分離)

(ruby-parse-region)

  文字列に対する処理をはずす．

(ruby-beginning-of-block)

  ブロックの先頭に

(ruby-end-of-block)

  ブロックの末尾に(遅い…)

## 1996-09-05¶ ↑

### Thu Sep 5 14:23:07 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

file.c (file_s_split)

  [dirname,basename]にsplitする．

eval.c (rb_eval)

  evalの中でも定数の値が正しくなるように．これで 定数に関しては静的なスコープが保証されるようになった．

st.c (rehash)

  ハッシュ拡大の系数を2から1.79に．割算がより良い値 を返すように．

### Thu Sep 5 00:32:07 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1996-09-04¶ ↑

### Wed Sep 4 16:54:56 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

random.c (f_rand)

  Bignumやlongの範囲を越えるFloatに対する乱数も 発生できるように．

struct.c (struct_alloc)

  Fatalではなく例外を発生させるように(通 常の使用で発生しうる)．

struct.c (struct_s_members)

  Structの特異メソッドではなく，生成 されたStructクラスの特異メソッドにした．

st.c (st_init_table)

  ruby専用にパラメタを固定にした(サイ ズが減った)

## 1996-09-02¶ ↑

### Mon Sep 2 11:37:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

array.c (ary_shift)

  capaがあまりにも大きい時には領域をREALLOC

(ary_pop)

  同上

string.c (str_inspect)

  multibyte character 対応にミス．

(str_inspect)

  unsigned charにしないと符号展開されてしまう

parse.y (primary)

  `::'をprimaryに移動 Foo::Bar.Bazがエラーにな らないように．

parse.y (primary)

  オペレータ形式の特異メソッドが定義できない

random.c (f_rand)

  maxが0の時に対応

io.c (io_printf)

  関数を定義していたがインタプリタに登録していな かった．

file.c (file_s_basename)

  第2引数が無い時にエラー．

## 1996-08-29¶ ↑

### Thu Aug 29 10:49:40 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (expr)

  イテレータの新形式に「method do .. end」形式を採 用した．もちろん昔の形式も有効．

sample/ruby-mode.el (ruby-calculate-indent)

  endの数の方が多い場 合にもエラーを起こさないように．

## 1996-08-28¶ ↑

### Wed Aug 28 09:41:36 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

numeric.c (upto,downto,step,times)

  対象がfixnumの範囲を越えても 動作するように．

## 1996-08-26¶ ↑

### Mon Aug 26 10:04:37 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

missing/setenv.c (envix)

  typo(missing `== 0' for memcmp)

dir.c (dir_foreach)

  foreach(dir open -> read loop -> closeまで)

io.c (io_foreach)

  foreach(file open -> read loop -> closeまで)

## 1996-08-24¶ ↑

### Sat Aug 24 23:56:37 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

bignum.c (bigdivmod)

  FIX2INT -> INT2FIX 大間違い

## 1996-08-23¶ ↑

### Fri Aug 23 18:13:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

regex.c (re_free_registers)

  allocateしていない時には当然 free してはいけない．

## 1996-08-22¶ ↑

### Thu Aug 22 01:20:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_create)

  外側から強制終了させられたthreadは cleanupする必要が無い．

## 1996-08-21¶ ↑

### Wed Aug 21 09:57:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_create)

  threadを終了させた大域脱出の情報を main_threadに渡すように．

parse.y (call_args)

  最終引数に括弧を省略したメソッド呼出しを置 けるように(例: print foo bar, baz == print(foo(bar,baz)))

## 1996-08-20¶ ↑

### Tue Aug 20 13:37:16 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (masign)

  多重代入とrest引数の動作を合わせて空の配列を代 入するように．

parse.y (arg)

  defined?の強度をもうちょっと強く

eval.c (error_print)

  -wで例外名も表示するように

eval.c (rb_eval)

  新構文に対応

(handle_rescue)

  捕捉する例外を kind_of? で同定

parse.y (primary)

  rescueの構文を変更(同定引数の追加，複数rescue)

eval.c (thread_interrupt)

  Interrupt(今はnon-local jump)は main-threadに送られるように．

eval.c (rb_longjmp)

  $! の内容を文字列から例外クラスに変更

(rb_raise)

  rb_fail から名称変更

(rb_interrupt)

  例外化

(rb_exit)

  例外化

error.c (Init_Exception)

  例外クラスの新設(文字列のサブクラス)

## 1996-08-19¶ ↑

### Mon Aug 19 19:40:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

signal.c (trap)

  古いハンドラを返すように．

## 1996-08-14¶ ↑

### Wed Aug 14 00:07:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_trap_eval)

  ハンドラのためにthreadをforkすることを止 めた．

eval.c (thread_mark)

  thread毎の $!, $@ をマークし忘れ

ext/dbm/dbm.c (fdbm_delete)

  イテレータとして呼ばれた場合，要素 が無ければブロックを評価する．

hash.c (hash_delete)

  イテレータとして呼ばれた場合，要素が無けれ ばブロックを評価する．

array.c (ary_delete)

  イテレータとして呼ばれた場合，要素が無けれ ばブロックを評価する．

eval.c (rb_interrupt)

  SIGINTのデフォルトをexitから特別な大域脱 出に．やはり割り込まれた位置の表示が無いのは寂しいので．

## 1996-08-13¶ ↑

### Tue Aug 13 01:34:00 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_exit)

  sub-thread内でのexitもstatusを保存するように

(thread_create)

  自thread内のexitに対応

signal.c (sighandle)

  SIGINTのデフォルトハンドラはexitするように

string.c (str_aset)

  文字列の置換の対象が部分文字列でなかった時， 例外を発生させないように

eval.c (proc_call)

  Procの中からbreak/nextは通し，他のものは通さ ないように

## 1996-08-12¶ ↑

### Mon Aug 12 14:15:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

object.c (krn_type)

  文字列を返す

eval.c (thread_create)

  sub-thread内でのexitに対応

numeric.c (fix_type)

  文字列を返す

io.c (f_p)

  デバッグ用データ表示メソッド

eval.c (f_missing)

  nil/TRUE/FALSEを特別扱い

string.c (str_inspect)

  長い文字列を短縮表示．inspectの働きを human readable stringの生成に統一(re-generatable string は正式に 無くなった)．

## 1996-08-10¶ ↑

### Sat Aug 10 16:54:21 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

object.c (Init_Object)

  kernel/nil/false/trueのクラス名を変更(小 文字に)，rubyスクリプトからアクセスできないように．

eval.c (rb_eval)

  CONSTANTのアクセス先を単純化．crefを使わない．

eval.c (f_eval)

  特異メソッド内でも定数の値が正しくなるように

## 1996-08-09¶ ↑

### Fri Aug 9 12:23:17 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

array.c (ary_concat)

  append -> concat Stringに合わせた

parse.y (yylex)

  `$;'が使えなかった．

array.c (ary_push_method)

  複数引数を受け付けるように．

(ary_unshift)

  複数引数を受け付けるように．

io.c (io_popen)

  `IO.popen`でcommand pipeが開けるように．

object.c (Init_Object)

  KernelとNilをruby scriptからアクセスでき ないように．

## 1996-08-08¶ ↑

### Thu Aug 8 01:21:47 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

object.c (f_integer)

  整数への変換関数

(f_float)

  実数への変換関数

(f_string)

  文字列への変換関数

(f_array)

  配列への変換関数

bignum.c (big_to_i)

  FIXNUMの範囲でない時はBignumのまま返すよう に変更．

## 1996-08-07¶ ↑

### Wed Aug 7 09:28:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (mlhs)

  「*foo = 1,2,3」タイプの多重代入も可能に．

object.c (Init_Object)

  クラスTrue/Falseをruby scriptからアクセ スできないように．

object.c (nil_inspect)

  inspect表現は“nil”に

io.c (io_print)

  nilのprintをnilに．

object.c (nil_to_s)

  nilの文字列表現を“”に．

## 1996-08-06¶ ↑

### Tue Aug 6 01:12:32 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

dir.c (dir_s_open)

  file descripterが足りない時にはgcしてからも う一度openしてみる．

io.c (rb_fopen)

  すべてのfopen()についてfile descripterが足りな い時にはgcしてからもう一度openしてみる．

ext/socket/socket.c (Init_socket)

  定数の追加．

sample/ruby-mode.el (ruby-indent-to)

  インデント後のカーソル位置 の調整を正しく．

gc.c (gc)

  割込みチェックを行わない(Cコードの中で安心して malloc()が使えなくなるので)．

st.c (call_hash_func)

  signalとthreadによる割込みに対応．

sig.h (DEFER_INTS)

  割込み禁止区間の指定

eval.c (f_require)

  threadによるrequireの競合に対応(最初の requireが終了するまで他のthreadは待つ)．

bignum.c (str2inum)

  0x80000000の値が負になっていた

sprintf.c (f_sprintf)

  文字列末尾，行末の単独の`%'に対応

bignum.c (big_cmp)

  比較の結果が逆になる時があった．

## 1996-08-05¶ ↑

### Mon Aug 5 10:58:13 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

process.c (proc_exec_v)

  例外のメッセージを分かりやすく．

ext/dbm/dbm.c (fdbm_store)

  nilを格納すると要素の削除になる

ext/dbm/dbm.c

  サイズをキャッシュ．

## 1996-08-03¶ ↑

### Sat Aug 3 01:52:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_fail)

  `fail'が引数無しで呼ばれた時だけ以前の`$@'を保 存するように．

eval.c (f_fail)

  frameの調整

## 1996-08-02¶ ↑

### Fri Aug 2 11:26:21 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/socket/socket.c (bsock_setopt)

  valとしてTRUE/FALSE/Fixnumも 受け付けるように．

ext/socket/socket.c (Init_socket)

  SO_REUSEADDR等の定数の追加

ext/md5/md5init.c

  md5モジュール(初の複数ファイルからなるモジュー ルでもある)

ruby.h (Make_Data_Struct)

  Data: objectのinstance変数に格納 -> Data型のObjectに(`Dir`,Time,Proc,Thread,DBM)

## 1996-08-01¶ ↑

### Thu Aug 1 11:38:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/dbm/dbm.c (fdbm_store)

  valueが文字で無い時に対応

## 1996-07-31¶ ↑

### Wed Jul 31 10:53:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/socket/socket.c (open_inet)

  htonsが必要であった

(tcpaddr)

  ntohlで変換した

process.c (rb_proc_exec)

  execvp -> execv

## 1996-07-30¶ ↑

### Tue Jul 30 17:48:33 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c

  `$?'をthread localに

Makefile.in (install)

  install時にstripを行う

configure.in

  install時のstripの検出

configure.in

  NEXTSTEP対応

### Tue Jul 30 16:40:35 1996 SHIROYAMA Takayuki <psi@fortune.nest.or.jp>¶ ↑

dln.c (dln_load)

  NeXT dln(mach-o)対応．configureは未対応

### Tue Jul 30 09:46:51 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

process.c (f_system)

  複数引数もとれるように

process.c (f_exec)

  複数引数もとれるように

array.c (ary_append)

  配列(またはEnum)の要素を破壊的に追加

array.c (ary_plus)

  Enumはその要素を追加

file.c (file_s_open)

  `File.open`を追加

struct.c (struct_new)

  FIX2INTを忘れていた

file.c (Init_File)

  exists? -> exist?

object.c (obj_is_kind_of)

  is_kind_of? -> kind_of?, is_a?

object.c (obj_is_instance_of)

  is_instance_of? -> instance_of?

## 1996-07-29¶ ↑

### Mon Jul 29 16:40:02 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (parse_regx)

  式展開を行った場合，casefoldの設定ができて いなかった．

object.c (true_type)

  TRUE/FALSEにtypeを実装．

parse.y (read_escape)

  3文字以内のoctalに対応(0とか)

## 1996-07-26¶ ↑

### Fri Jul 26 00:31:45 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

array.c (ary_reverse_bang)

  in-placeで配列を反転させる

(ary_sort_bang)

  in-placeでsortする

(ary_sort)

  sortした配列を返すように

(ary_delete_at)

  指定した位置の要素を削除する

eval.c (rb_call)

  stack深さチェックを毎回は行わないように

error.c (`Warning`)

  実行中のwarningが表示されていなかった

eval.c (compile)

  例外発生を分離．

eval.c (f_eval)

  変数rb_in_evalを正しく管理するように

ext/dbm/dbm.c (fdbm_store)

  格納するkeyを文字列に変換

eval.c (rb_call)

  無限再帰のチェックを大域脱出を行うC methodにも 対応させた．threadのstack深さチェックルーチンを流用．

parse.y (yylex)

  第1引数のunary -/+の判定が間違っていた．

parse.y (yylex)

  unary +で数字を余計に読んでいた(ex. +5 -> 55)

## 1996-07-25¶ ↑

### Thu Jul 25 12:15:04 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (yylex)

  曖昧でない引数に対して警告を出していた．

eval.c (iterator_p)

  引数で呼んでも正しい結果を返すように．

parse.y

  break/next/redo/retryのメソッド化．

sample/ruby-mode.el (ruby-calculate-indent)

  nestのチェックミス

sample/ruby-mode.el (ruby-parse-region)

  予約語のチェックを強化

parse.y (primary)

  unless/untilの復活

## 1996-07-23¶ ↑

### Tue Jul 23 18:50:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

array.c (`Array#empty?`), Hash.c (`Hash#empty?`), ext/dbm/dbm.c (`DBM#empty?`)

  空の判定述語

eval.c (f_unless)

  ifの逆をするイテレータ

eval.c (f_until)

  whileの逆をするイテレータ

parse.y

  notの優先順位をand/orより高く

parse.y (expr)

  `!'を引数括弧を省略したcallでも有効に

## 1996-07-22¶ ↑

### Mon Jul 22 10:15:38 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

array.c (ary_print_on)

  OFSのNILチェックが不完全

ruby.c (load_file)

  標準入力からのスクリプトが空の時に対応．

ruby.c (proc_options)

  -wでは引数無しの時には標準入力からスクリ プトをとる(-vではたんに終了する)．

array.c (ary_compact)

  nilの要素を取り除くメソッド

array.c (ary_nitems)

  nilでない要素を数えるメソッド

## 1996-07-20¶ ↑

### Sun Jul 20 00:51:53 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby.c (proc_options)

  -w optionを追加

parse.y

  {}が閉じていない時には展開しない文字列を

## 1996-07-19¶ ↑

### Fri Jul 19 16:16:05 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

lib/find.rb

  石塚版(pruneの拡張付き)

file.c (test_l)

  lstatで調べないとね．

eval.c (f_throw)

  第2引数を省略可能に．

parse.y (str_extend)

  {}のネストに対応

## 1996-07-18¶ ↑

### Thu Jul 18 18:25:46 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (str_extend)

  文字列中の式展開に " ' ` / を含む事ができ るように．

## 1996-07-16¶ ↑

### Tue Jul 16 15:55:31 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/ruby-mode.el (ruby-parse-region)

  正規表現内のエスケープ に対応

## 1996-07-12¶ ↑

### Fri Jul 12 10:06:19 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

io.c (f_select)

  引数のclose check.

ruby.c (load_file)

  #!行の引数チェックを第1引数に限定(実をいうと DOS改行対策)

## 1996-07-10¶ ↑

### Wed Jul 10 17:18:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

time.c (time_s_timegm/time_s_timelocal)

  時間を生成するメソッド

## 1996-06-17¶ ↑

### Mon Jun 17 15:59:20 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (yyerror)

  エラー表示の簡略化．

## 1996-06-12¶ ↑

### Wed Jun 12 14:11:01 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

signal.c (rb_trap_exit)

  trap 0はthreadを生成せずに処理する．

## 1996-06-07¶ ↑

### Fri Jun 7 10:17:01 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

array.c/hash.c (indexes)

  配列1引数のパターンを無くした．配列の 場合は`*ary'を使ってもらおう．

eval.c (thread_wait_threads)

  main_threadが終了する前に他の threadを待つ(強制的には終了させない)．

(ruby_run)

  他のthreadを待っている間にシグナルが来たら，全thread を強制終了させる．

eval.c (rb_fail)

  メソッド名を`$!'に埋め込む．

eval.c (thread_create)

  main_threadのコンテクストがセーブされな い場合があった．

process.c (f_sleep)

  時間を指定せず，threadがひとつしかない状況 にも対応．

eval.c (thread_create)

  create後，fnを呼び出す前にcontext switch が起きると違うcontextでfnが実行されてしまうバグ．

## 1996-06-03¶ ↑

### Mon Jun 3 08:03:17 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

struct.c (struct_s_def)

  メンバの指定を文字列，シンボル(FIXNUM) 双方で可能にした．

ext/etc/etc.c (Init_etc)

  構造体オブジェクトをGCから保護した．

error.c (rb_sys_fail)

  nil/FALSEを引数として受け付けるように．

## 1996-06-01¶ ↑

### Thu Dec 12 14:43:51 1996 Jun Kuroda <j_kuro@pluto.ai.kutech.ac.jp>¶ ↑

lib/tk.rb

  wish4.2も探索候補に含める

config.guess

  JCC対応

## 1996-05-30¶ ↑

### Thu May 30 16:19:08 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_select)

  EINTRに対応．

## 1996-05-29¶ ↑

### Wed May 29 11:04:51 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (f_catch)

  catch/throwを実装した．

## 1996-05-28¶ ↑

### Tue May 28 13:30:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_cleanup)

  main threadが終了すると他のthreadも終了 することの明確化．

signal.c (trap)

  SIGINTのデフォルトの設定ミス(本当にSIG_DFLでは まずかった)．rubyではちゃんとハンドルしないと．

eval.c (thread_interrupt)

  SIGINTはmain_threadに例外を発生させる ように．

## 1996-05-27¶ ↑

### Mon May 27 15:13:31 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_status)

  threadの状態を返すメソッド．threadの終了 を待たない．

eval.c (thread_value)

  一種のpromiseを実装するためのメソッド．

eval.c (thread_join)

  待っているthreadが例外を起こした時には， joinがその例外を発生するように．

eval.c (thread_create)

  threadでの例外をpropagateしないように．

## 1996-05-24¶ ↑

### Fri May 24 10:47:53 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

enum.c (Init_Enumerable)

  `size' as alias to the `length'

eval.c (thread_save_context)

  `$@', `$!'をスレッド毎にセーブ．

eval.c (superclass)

  エラー表示をより親切に．

## 1996-05-23¶ ↑

### Thu May 23 10:38:41 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (superclass)

  エラー時にスーパークラス名を(分かれば)表示 するように．

## 1996-05-22¶ ↑

### Wed May 22 19:48:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (superclass)

  スーパークラスの指定子を`:'から`<'に変更．

## 1996-05-21¶ ↑

### Tue May 21 09:27:59 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

lib/thread.rb

  threadをサポートするクラス(Mutex, `Queue`)．

## 1996-05-20¶ ↑

### Mon May 20 09:39:49 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

time.c (time_cmp)

  浮動小数点数も扱えるように．

(time_minus)

  `Time` - Timeが浮動小数点数を返すように．

## 1996-05-17¶ ↑

### Fri May 17 15:40:10 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

process.c (rb_proc_exec)

  Thread対応時にexecの直前に ITIMER_VIRTUALをリセットする．

## 1996-05-14¶ ↑

### Tue May 14 02:12:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

signal.c (sighandle)

  SIGINTに対してデフォルトで例外を発生させる のをやめ，status 130でexitするようにした．

eval.c (thread_schedule)

  Threadのバグはほとんどとれたようだ．

## 1996-05-10¶ ↑

### Fri May 10 11:21:08 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (thread_schedule)

  ユーザレベルThread機能．効率はともかく 移植性はある．今後，thread間の通信機能を実装する予定．

## 1996-05-02¶ ↑

### Thu May 2 21:22:31 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

time.c (time_timeval)

  struct timevalを直接返すように(static変数 を使わない)．

## 1996-05-01¶ ↑

### Wed May 1 17:27:32 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

process.c (f_sleep)

  整数以外のtimeを指定できるように．

## 1996-04-25¶ ↑

### Thu Apr 25 08:19:15 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

file.c (file_s_dirname)

  ファイル名が“/”を含まない時，“.”を返す ように(GNU dirnameの仕様)．

file.c (file_s_basename)

  まだnilと0を混同しているソースが残って いた．

parse.y (exprs)

  エラーリカバリを追加．

## 1996-04-24¶ ↑

### Wed Apr 24 15:51:05 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_chop_bang)

  CRLFの場合2 bytesをchop!するように．

ext/socket/socket.c (tcp_svr_s_open)

  まだnilと0を混同しているソー スが残っていた．

## 1996-04-23¶ ↑

### Tue Apr 23 18:14:25 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

pack.c (pack_pack)

  “A/a”のバグ．余計なpaddingが入っていた．

## 1996-04-18¶ ↑

### Thu Apr 18 13:02:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

configure.in

  アーキテクチャ依存部を別ディレクトリにインストール するように．

parse.y (yyerror)

  エラー発生時にエラー行とその位置を表示するよ うに．

## 1996-04-17¶ ↑

### Wed Apr 17 14:22:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

defines.h

  SAFE_SIGHANDLEを無くし，危険な選択はできないように．

io.c (io_ungetc)

  新機能．

ruby.c (load_file)

  ファイルからの読み込み方式が変わったのに対応．

parse.y (compile_file)

  ファイルからの入力を一度全部読み込むのを 止めて，getsを使うことにした．

## 1996-04-10¶ ↑

### Wed Apr 10 17:40:11 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1996-04-09¶ ↑

### Tue Apr 9 09:54:30 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (iter_block)

  イテレータブロックの指定をメソッド呼び出し に限定．文法の明確化．

eval.c (rb_eval)

  条件式の正規表現の比較をinline化．

eval.c (rb_eval)

  defined? の 定義情報(種別)を文字列で返す．

node.h

  NODE_BEGIN -> NODE_RESCUE, NODE_ENSUREに分離．

eval.c (rb_eval)

  option -n/-pのトップレベルループのinline展開．

parse.y (cond0)

  条件式中の文字列は比較の対象としない

## 1996-03-27¶ ↑

### Wed Mar 27 12:33:54 1996 Tairo Nomura <tairo@hucom.tp.titech.ac.jp>¶ ↑

defines.h

  NeXT対応

### Wed Mar 27 10:02:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y

  予約語の変更 continue -> next

## 1996-03-25¶ ↑

### Mon Mar 25 07:34:37 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (parse_regx)

  o(once)オプションを追加．

## 1996-03-22¶ ↑

### Fri Mar 22 14:25:35 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (dyna_var_defined)

  動的ローカル変数の定義チェック用ルー チン．

parse.y (gettable)

  eval()の中での動的ローカル変数(既に値を持っ ているもの)の検出に失敗していた．

## 1996-03-19¶ ↑

### Tue Mar 19 10:46:47 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

re.c (reg_s_new)

  compile時にsegmentation fault．

parse.y (str_extend)

  いつもevalするように．

## 1996-03-13¶ ↑

### Wed Mar 13 11:00:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (str_extend)

  文字列中の式展開の不備を無くした．

parse.y

  下手なエラーリカバリを外した．

## 1996-03-12¶ ↑

### Tue Mar 12 12:30:20 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rescue)

  間違ってensureでも例外を捕捉していた．

## 1996-03-06¶ ↑

### Wed Mar 6 12:11:03 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (var_extend)

  変数展開“#{}”で，任意の式を書けるようにし た，これで「変数」展開では無くなっちゃったなあ．

regex.c (init_syntax_once)

  `_'をwordに追加．

regex.c (re_compile_pattern)

  `w',`W'の判定をsyntax tableを使 うように．

## 1996-02-27¶ ↑

### Tue Feb 27 10:15:32 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

object.c (obj_inspect)

  表示するインスタンス変数が無い時には， to_sを使う．

configure.in

  dlnの検出を自動的に．

## 1996-02-26¶ ↑

### Mon Feb 26 19:55:33 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby.c (readin)

  read(2)で一度にファイルが読み込めない場合に対応．

## 1996-02-24¶ ↑

### Sat Feb 24 14:47:18 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1996-02-23¶ ↑

### Fri Feb 23 11:26:02 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

class.c (rb_define_module)

  C言語で定義されたモジュールのPATHの 設定忘れ．文字列化でcore dump．

eval.c (mod_include)

  戻り値をnilに．

## 1996-02-22¶ ↑

### Thu Feb 22 21:03:42 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

array.c (ary_times)

  「配列*文字列」がjoinと同じ働きをするように．

## 1996-02-21¶ ↑

### Wed Feb 21 11:18:09 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

configure.in

  fileCountをcache．

configure.in

  LinuxでELF環境を自動的に検出できるよう．

## 1996-02-20¶ ↑

### Tue Feb 20 11:18:09 1996 Mitsuhide Satou <mit-sato@aries.bekkoame.or.jp>¶ ↑

## 1996-02-16¶ ↑

### Fri Feb 16 08:50:01 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

object.c (obj_inspect)

  インスタンス変数を持たないオブジェクトも 正しく表示されるように．

## 1996-02-14¶ ↑

### Wed Feb 14 16:56:44 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_eval)

  条件式の`2..2'など左辺成立直後に右辺が成立する パターンにバグ．

## 1996-02-13¶ ↑

### Tue Feb 13 18:22:22 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1996-02-09¶ ↑

### Fri Feb 9 21:32:55 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

lib/tkscrollbox.rb

  スクロールでtclの設定を行い，ruby<->wishの不 要な通信を無くした．

## 1996-02-07¶ ↑

### Wed Feb 7 10:26:52 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_aref)

  indexをunsigned intでとっていた．

string.c (str_aref)

  範囲外のindexに対してnilを返す．

parse.y (special_local_set)

  `$_'が宣言無しに使われた場合に対応． 関数をvariable.cから移動．

string.c (str_sub)

  置換開始位置が間違っていた．

## 1996-02-06¶ ↑

### Tue Feb 6 16:17:31 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/ruby-mode.el (ruby-parse-region)

  コメントの読み飛ばしの バグ．

## 1996-02-02¶ ↑

### Fri Feb 2 18:35:28 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

variable.c (lastline_get)

  `$_'を`$~'と同じようにSCOPEローカルな 変数にした．

## 1996-02-01¶ ↑

### Thu Feb 1 14:14:07 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

file.c

  statのcacheをやめた．

## 1996-01-31¶ ↑

### Wed Jan 31 07:13:08 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (proc_s_new)

  procの中でyieldを呼ばれた時にcore dumpして いた．とりあえず例外を発生させる．

variable.c (rb_class2path)

  singleton classに対応．

ext/etc/etc.c (Init_etc)

  struct_defineのターミネータがnilだった

ext/marshal/marshal.c

  TRUE/FALSEを吐き出せるように．

eval.c (rb_get_method_body)

  キャッシュのalias対応，いままでは aliasはキャッシュに入っていなかった．

## 1996-01-30¶ ↑

### Tue Jan 30 09:55:13 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_eval)

  NODE_BLOCK - tail recursive(というほどでもない が)．

io.c (io_pipe)

  pipe(2)を実装した．

eval.c (rb_eval)

  Qselfをなくした．thread対応への第一歩．先は遠 いが…．

eval.c (proc_call)

  procの中でのreturnはprocの終了を意味するよう に．ただし，procからのyieldの中でのreturnは例外を発生する．

## 1996-01-24¶ ↑

### Wed Jan 24 11:33:48 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

dir.c (dir_each)

  `$_'の値を変更するのをやめた．

io.c (f_readlines)

  nilとFALSEの分離のあおりで無限ループに落ちて いた．

ruby.c (ruby_options)

  $0の設定ミス．

## 1996-01-23¶ ↑

### Tue Jan 23 15:28:21 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_eval)

  “は文字列を引数とするメソッド(`)呼び出しのシ ンタックスシュガーであるとした．

ruby.c (addpath)

  `-I'オプションでディレクトリが「前に」追加され るように変更．

## 1996-01-19¶ ↑

### Fri Jan 19 11:23:12 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

dln.c (load_1)

  N_INDR対応(出来たような気がする)．

## 1996-01-18¶ ↑

### Thu Jan 18 18:14:20 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby.texi

  FALSEとnilの分離を反映した．

## 1996-01-16¶ ↑

### Tue Jan 16 17:39:23 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1996-01-10¶ ↑

### Wed Jan 10 15:31:48 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

re.c (reg_match)

  マッチしなかった時の戻り値はFALSE．

object.c (rb_equal)

  `0 == nil'がTRUEになるバグ．

## 1996-01-09¶ ↑

### Tue Jan 9 00:44:58 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

struct.c (struct_new)

  引数を0で終る必要が無くなった．

object.c (inspect_i)

  オブジェクトのチェックのバグ(Fixnumでcore dumpしていた)．

range.c (range_to_s)

  Rangeの表示を改善．

object.c (true_inspect)

  TRUEの表示を`TRUE'に．

## 1996-01-08¶ ↑

### Mon Jan 8 15:02:33 1996 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

numeric.c (fix_mul)

  divide by zero errorが発生した(オーバーフロー 検出のバグ)

## 1995-12-31¶ ↑

### Sun Dec 31 00:08:49 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_eval)

  `::'では，そのクラスで定義された定数を参照する ように変更．

string.c (Init_String)

  eachをeach_lineに戻した．

## 1995-12-28¶ ↑

### Thu Dec 28 12:31:55 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_eval)

  caseの演算子を`=~'から`==='に．

variable.c (rb_const_set)

  クラス定数の再定義を許す(同じクラスで は不可)．警告は出す．

## 1995-12-27¶ ↑

### Wed Dec 27 13:27:52 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/tkutil/tkutil.c

  wishがあってもなくても一応コンパイルだけは するように．

lib/tk.rb

  環境変数PATHから{wish|wish4.0}を探すように．

## 1995-12-26¶ ↑

### Tue Dec 26 01:03:42 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/ruby-mode.el (ruby-parse-region)

  正規表現の検出強化．

numeric.c (fix_mul)

  乗算のオーバーフロー検出アルゴリズムのバグ．

ext/extmk.rb.in

  ./install-shを使う場合のPATHを調整．

Makefile.in (install)

  lib/*.rbを一つずつインストール．

io.c (io_each_line)

  イテレータの戻り値をnilで統一．

## 1995-12-22¶ ↑

### Fri Dec 22 10:34:32 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

variable.c (f_untrace_var)

  第2引数を指定すると特定のtraceを削除 できるように．

variable.c (f_trace_var)

  第2引数がnilの時，traceを削除する．

lib/tk.rb (file_readable/file_writable)

  第2引数をnilにすること によるevent handlerの削除．

parse.y (variable)

  ドキュメントに`__FILE__'と`__LINE__'が残って いた．`caller(0)'で代用したはずだったのに．

eval.c (f_eval)

  $!のリセット．

error.c (err_sprintf)

  勝手に“n”を付加するのを止めた．

parse.y (f_arglist)

  引数リスト直後のif/whileの読み間違い． lex_stateの値が設定されていなかった．

## 1995-12-21¶ ↑

### Thu Dec 21 00:56:57 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

lib/tkscrollbox.rb

  パッケージに入ってなかった．

configure.in

  FILE structureのチェックにバグ．

Makefile.in (clean)

  ext以下をinstallしていた．

ext/socket/extconf.rb

  Solarisにおける-lnlsのチェック．

array.c (beg_len)

  バグがあった…．悲しい．

eval.c (rb_eval)

  rescueのロジックをrb_rescue()に一元化．

## 1995-12-20¶ ↑

### Wed Dec 20 19:30:58 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

Makefile.in

  不要なコンパイルの回避(より完全に)．

class.c (singleton_class_new)

  `single'->`singleton'

## 1995-12-19¶ ↑

### Tue Dec 19 07:14:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

io.c (closed?)

  IOがcloseされているかどうかを知る述語．

parse.y (primary)

  特異メソッドの引数のlex_stateが不適切．

lib/tk.rb

  tcl->rubyの変換関数の用意．

ext/extmk.rb.in (install)

  installの2重コンパイルの回避．

array.c (range_beg_len)

  range指定の不適切なエラーを訂正．

string.c (str_aref)

  range指定のバグを削除．

lib/tk.rb (tk_split_list)

  Tclのリストに対応．

## 1995-12-18¶ ↑

### Mon Dec 18 09:58:12 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

dln.c (dln_load)

  HP対応(未確認)

eval.c (Init_Proc)

  BlockをProcに改名．

## 1995-12-16¶ ↑

### Sat Dec 16 13:46:14 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_eval)

  retryでイテレータの再実行ができるように．

## 1995-12-15¶ ↑

### Fri Dec 15 17:14:30 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c

  proc:lambdaの親しみやすい別名

## 1995-12-14¶ ↑

### Thu Dec 14 17:21:55 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (dyna_var_asgn)

  イテレータブロック内で最初に初期化された ローカル変数の有効範囲をそのブロック内に限定．これでlambdaと呼べ ないことはない．

## 1995-12-13¶ ↑

### Wed Dec 13 02:30:58 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

gc.c

  autoloadのマークミス．

lib/tk.rb

  wishからの複数行の戻り値に対応

lib/tkcomposite.rb

  複合widget

variable.c (rb_class2path)

  ICLASSに対応してなかった．

eval.c (ruby_run)

  exit(0)のバグ

## 1995-12-09¶ ↑

### Sat Dec 9 01:21:24 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/marshal/marshal.c (dumps|load)

  文字列に対する入出力を可能に した(ただし実はファイル経由なのだ)．

## 1995-12-08¶ ↑

### Fri Dec 8 18:29:11 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/marshal/marshal.c

  シンボルを一度だけ初期化する．

## 1995-12-07¶ ↑

### Thu Dec 7 07:58:50 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (yylex)

  第1引数の正規表現の認識にエラーがあった．同時に 状態数を減らした．

string.c (str_sub)

  置換でスキップ幅が大きすぎた．

## 1995-12-06¶ ↑

### Wed Dec 6 15:14:23 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_sub_method)

  sub/gsub(!なし)は置換が行なわれなかっ た時，置換前の文字列を返す．

## 1995-12-05¶ ↑

### Tue Dec 5 00:55:15 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (yylex)

  括弧を省略した時の引数展開の`*'に対応．

eval.c (ruby_run)

  EXITハンドラ内での例外に対応．

bignum.c (big_cmp)

  BignumとFixnumの比較で落ちる．

## 1995-12-04¶ ↑

### Mon Dec 4 14:21:18 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (call_op)

  コンパイル時の定数式の展開をやめた．労多くし て益少ないと判断したので．

## 1995-11-30¶ ↑

### Thu Nov 30 01:35:15 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

lib/tk.rb

  {Radio,Check}Buttonのvariableの実装．

eval.c (rb_yield_0)

  Block.callがネストした時のバグ．

io.c (f_select)

  常に配列3つをふくむ配列を返すように

lib/tk.rb

  fileeventをruby側で実装．

## 1995-11-29¶ ↑

### Wed Nov 29 17:53:23 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

variable.c (rb_ivar_get)

  selfを常に指定するように．

## 1995-11-14¶ ↑

### Tue Nov 14 00:07:29 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

lib/tk.rb

  Tk4.0対応

## 1995-11-13¶ ↑

### Mon Nov 13 16:23:32 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1995-11-09¶ ↑

### Thu Nov 9 23:26:01 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

gc.c (gc_mark)

  モジュールのMixinのマーク忘れ．

parse.y (f_arglist)

  メソッド定義の引数を括弧で括らなくても良い ようにした．

## 1995-11-08¶ ↑

### Wed Nov 8 00:17:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_yield_0)

  未初期化のローカル変数があった．

eval.c (rb_eval)

  pendig signalのチェックをeval実行後に行うよう にした．でないとシグナルの発生と検出が遠く離れてしまう事がある．

parse.y

  class文のsuperclass部を定数から式に拡張した．

lib/tk.rb

  Tkのほぼ全ウィンドウクラスに対応．キャンバスとテキス ト上のオブジェクトが残っている．

## 1995-11-07¶ ↑

### Tue Nov 7 08:18:37 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

signal.c (trap)

  ブロックを指定できるように．

## 1995-11-06¶ ↑

### Mon Nov 6 16:44:00 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (f_caller)

  呼出元の情報を得る．

ext/tkutil/tkutil.c

  wishのstderr出力を監視することで，エラー処 理を行う．

ext/tkutil/tkutil.c

  wishとの通信部をCで記述．

## 1995-11-04¶ ↑

### Sat Nov 4 01:12:59 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/ruby-mode.el (ruby-calculate-indent)

  インデントの計算を もう少しスマートにした(正規表現のチェック，継続行のチェック)．

eval.c (rb_call)

  無限再帰を避けるため，関数のネストレベルの制限 を行なう．

lib/tk.rb

  Tkインターフェース．まだ不完全だが．

eval.c (rb_yield_0)

  空のBlockのバグ．

sample/ruby-mode.el (ruby-calculate-indent)

  行末の演算子による 行継続に対応．

## 1995-11-03¶ ↑

### Fri Nov 3 12:56:21 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_call)

  本体が空の関数の実行にバグ．

parse.y (var_extend)

  文字列の末尾の変数展開のバグ．

variable.c (rb_gvar_set)

  traceの評価時にに変数値を与えるように．

eval.c (f_require)

  ruby scriptのrequireにbug．

variable.c (rb_const_get)

  モジュールのinclude対策．

## 1995-10-19¶ ↑

### Thu Oct 19 13:56:06 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

dln.c (dln_load)

  HP対応でのtypo.

## 1995-10-18¶ ↑

### Wed Oct 18 17:39:39 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

object.c (krn_type)

  オブジェクトの動的な型を返すメソッド．

## 1995-10-17¶ ↑

### Tue Oct 17 00:48:18 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby.c (proc_options)

  -X オプション．chdirだけを行う．

re.c (reg_search)

  漢字コードを途中で変更できるように．コンパイ ル時のコードが変更された時にはマッチの直前に正規表現の再コンパイ ルを行う．定数KCODEから変数$KCODEへ．

parse.y

  ()のなかにcompexprを許す．

re.c (reg_search)

  メモリリークを直した．

## 1995-10-13¶ ↑

### Fri Oct 13 13:19:19 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (str_sub)

  文字列置換にバグ．

string.c (str_strip_bang)

  文字列の後ろの長さの調整が行われてい なかった．

re.c (reg_search)

  $&, $1…はローカルに束縛するようになった．呼 び出したメソッドでのマッチは現スコープの$&などの値に影響しない． マッチの情報をスコープ外で得たいときには$~を使って束縛情報を持ち 出す必要がある．

## 1995-10-12¶ ↑

### Thu Oct 12 00:33:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

re.c (reg_search)

  String:split, String:indexでは$&, $1…が変化 しないようにした．

io.c (rb_str_setter)

  setterの仕様が変更になっていた．

variable.c (f_trace_var)

  第2引数を省略してイテレータとして呼べ るように．

## 1995-10-11¶ ↑

### Wed Oct 11 11:50:59 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

variable.c (var_setter)

  引数が間違っていた．致命的バグ．

io.c (pipe_open)

  $stderrの値が変更されている時にはそちらを 子プロセスのstderrに設定する．

## 1995-10-09¶ ↑

### Mon Oct 9 13:06:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

object.c (mod_to_s)

  モジュール内のモジュールは`::'を使った表現 で表示されるように．

variable.c (rb_gvar_set)

  代入によるループが発生しないように， trace内での代入ではtraceを評価しない．

struct.c (struct_equal)

  structのequal判定にクラスの一致を含めた．

## 1995-10-07¶ ↑

### Sat Oct 7 00:18:32 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_eval)

  defined?の機能を拡張(yieldのチェック，superの 存在など)．

## 1995-10-06¶ ↑

### Fri Oct 6 12:06:47 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

st.c (st_foreach)

  要素を削除した時に要素数が変化していなかった．

hash.c (hash_values)

  バグ修正．keysを返していた…．

parse.y (call_op)

  defined? の引数では定数の畳み込みを行わない

## 1995-10-05¶ ↑

### Thu Oct 5 00:29:43 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

gc.c (looks_pointerp)

  ヒープチェックの高速化．

struct.c (Fstruct_aset)

  構造体に対する`[]='．

(struct_set)

  構造体メンバに対する代入．

## 1995-10-04¶ ↑

### Wed Oct 4 09:54:07 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (Frequire)

  ダイナミックロードのエラーチェックを厳しく．

struct.c

  structの構造を完全に書き換えた．以前は順序付きの id->valueの連想配列であったが，今度は構造体毎に新しいクラスを生 成するようにした．

parse.y

  `::'の意味をAssocの生成からクラス(モジュール)内の定数ア クセスへ変更．

assoc.c

  なくす．

## 1995-10-03¶ ↑

### Tue Oct 3 13:31:08 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

variable.c (Ftrace_var)

  trace_var, 大域変数への書き込みhookを設 定する．

variable.c

  global_entryの構成を書き換えた．これでtrace_varを実 装できる．

file.c (Ffile_stat)

  “&”で直前のfstatの結果も参照できるように．

## 1995-09-29¶ ↑

### Fri Sep 29 14:15:13 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

dln.c (dln_load)

  AIXとHPに対応したコードを入れた(動作は未確認)．

ext/extmk.rb.in

  必要に応じて，定数EXTLIBを定義するように．

dln.c (dln_load)

  dln独立に書き換える．将来の拡張用．

(load_1)

  dln_a_outにおいてソースコードでライブラリを明示的にロー ドする必要がないように変更した．

## 1995-09-28¶ ↑

### Thu Sep 28 13:31:37 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/ruby-mode.el

  もっとましなhilit19対応(正規表現)．

## 1995-09-27¶ ↑

### Wed Sep 27 04:12:44 1995 Takahasi Mamoru <taka@soum.co.jp>¶ ↑

sample/test.rb

  echoで-nを使わないように(SysV対策)．

ext/extmk.rb.in

  sub -> sub!

## 1995-09-26¶ ↑

### Tue Sep 26 19:12:42 1995 Yasuo OHBA <jammy@csg.mes.co.jp>¶ ↑

dln.c (dln_find_1)

  `.', `..'から始まるパスに対応した.

## 1995-09-25¶ ↑

### Mon Sep 25 12:33:03 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1995-09-23¶ ↑

### Sat Sep 23 10:00:18 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (Fmod_modfunc)

  メソッドをprivateにし，同時に特異メソッド も定義するメソッド．パッケージ的使い方のモジュール用．

## 1995-09-22¶ ↑

### Fri Sep 22 11:02:44 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

lib/find.rb

  findを提供するライブラリ

variable.c (rb_define_variable)

  hookの設定を分離．

(add_hook)

  1変数に対して複数のhookを設定できるように．

## 1995-09-21¶ ↑

### Thu Sep 21 00:22:11 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (Fstr_frozen)

  文字列が更新不可かどうかをチェックする述 語メソッド．

hash.c (Fhash_aset)

  keyが文字列の時，キーの内容が変化しないよう に，dupしてfreezeする．

## 1995-09-20¶ ↑

### Wed Sep 20 16:12:44 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/extmk.rb.in (have_header)

  キャッシュにバグ．

ext/extmk.rb.in (have_library)

  引数の順序が変わった．

## 1995-09-14¶ ↑

### Thu Sep 14 18:00:59 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

object.c (obj_is_instance_of)

  is_member_ofから名称変更． Wed Sep 13 15:44:35 1995 Yukihiro Matsumoto <matz@caelum.co.jp>

string.c (Fstr_tr_bang)

  範囲外の文字に対する変換バグ．

## 1995-09-12¶ ↑

### Tue Sep 12 14:27:58 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

file.c (Sfile_expand_path)

  expand_file_name -> expand_pathに名 称変更．

enum.c (Fenum_member)

  includes? -> member? に名称変更．

string.c (Fstr_each_byte)

  StringはByteArrayであるという基本に戻っ て，eachの定義をeach_byteに変更した．今までのeachはeach_lineでア クセスできる．

## 1995-09-11¶ ↑

### Mon Sep 11 18:31:17 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

file.c (cache_stat)

  ファイル名として“&”を指定すると直前の stat(2)の結果を再利用するように．

## 1995-09-08¶ ↑

### Fri Sep 8 14:18:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby.texi

  `!', `?'に対応してアップデート．

parse.y

  defined -> defined?

file.c

  FileOpの一文字メソッドをなくす．一文字テストはtestメソッ ドにまかせる．

parse.y (yylex)

  変数名の後ろに`?'も許す．述語メソッドの後ろに `?'を追加する．

## 1995-09-07¶ ↑

### Thu Sep 7 20:01:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c

  文字列の中身を更新するメソッドの名前の終りに`!'を付加． `!'の無いバージョンも用意した．

parse.y

  変数名の後ろに`!'を許す．

## 1995-09-06¶ ↑

### Wed Sep 6 14:12:19 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (Fstr_dup)

  文字列の複製を作る

(Fstr_freeze)

  文字列の更新不可属性を設定できるように．

(Fsub/Fgsub)

  $_の内容をdupしてから置換を行うように．

ruby.h (CLONESETUP)

  flagsの状態もコピー

## 1995-09-05¶ ↑

### Tue Sep 5 01:27:50 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sample/test.rb

  失敗の検出を厳しく．

## 1995-08-25¶ ↑

### Fri Aug 25 14:31:02 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

process.c (Ffork)

  イテレータとしても動作するように．

signal.c (sig_beg)

  ハンドラが設定されている時には再設定しない．

ext/extmk.rb.in (create_makefile)

  shared objectのリンクの際に `-l'オプションを指定するように．

signal.c (trap)

  `EXIT'で終了処理を行う設定が出来る．

## 1995-08-16¶ ↑

### Wed Aug 16 00:13:22 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

signal.c (sig_beg)

  デフォルトではbegin節の中でだけSIGINTを捕捉 するように変更．

io.c (io_ctl)

  fcntlを持たないシステムにも対応．

string.c (Sstr_new,str_sub,Fstr_crypt)

  引数を自動的に文字列に変 換するように．

## 1995-08-12¶ ↑

### Sat Aug 12 00:44:02 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

string.c (Fstr_crypt)

  PD cryptを用意した．

## 1995-08-11¶ ↑

### Fri Aug 11 14:37:03 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

assoc.c (Fassoc_clone)

  assocもcloneできるように．

io.c

  マクロREAD_DATA_PENDINGの定義を変更(Linux対応)

io.c (io_fptr_finalize)

  fptrの開放時の処理を指定できるように．

## 1995-08-09¶ ↑

### Wed Aug 9 16:52:41 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

eval.c (rb_provided)

  複数のfeatureをロードすると無限ループに落 ちるという単純な(しかし凶悪な)ミス．

ext/extmk.rb.in (install)

  dlopen対応を行った．今までdlnにしか十 分に対応していなかった．

## 1995-08-08¶ ↑

### Tue Aug 8 14:17:06 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1995-08-07¶ ↑

### Mon Aug 7 12:47:41 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y

  resque -> rescue．恥ずかしいがtypoを残しておくわけには いかないよなあ．なんで今まで気がつかなかったのか…．

## 1995-08-03¶ ↑

### Thu Aug 3 18:18:05 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

missing/nt.c

  NT移植用の関数群をまとめた．

variable.c (rb_const_get)

  また例外を発生するようにした．defined がある以上例外を発生させない理由がないので(例外が発生した方がタ イプミスの検出などの点で有利)．

variable.c (Fautoload)

  autoloadを実装．今度は使えるか．

## 1995-07-31¶ ↑

### Mon Jul 31 15:44:21 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (arg_ambiguous)

  第1引数のあいまいさを警告(-vオプション で有効)．

eval.c (rb_eval)

  `-v'オプションをつけて`def'が呼ばれると不必要 なエラーメッセージが出た．

parse.y (yylex)

  メソッドの第1引数の判定をもうちょっと賢くした．

## 1995-07-28¶ ↑

### Fri Jul 28 19:04:43 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (yylex)

  `+/-/['の直前に空白が来るかどうかで動作を変更し た(混乱のもとか?)

## 1995-07-26¶ ↑

### Wed Jul 26 09:21:23 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

sprintf.c (Fsprintf)

  `%s'で'0'を含む文字列に対応．

pack.c (Fpck_pack)

  packの要素確保のバグ．

eval.c (Floop)

  無限ループのイテレータ．

io.c (next_argv)

  存在しないファイル名が指定された時のエラー処理 が行われていなかった．

## 1995-07-24¶ ↑

### Mon Jul 24 17:37:34 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/extmk.rb.in (install)

  拡張モジュールをstatic linkする場合は そのモジュールが既にrequireされたのと同じようにfeatureを設定する． これで拡張モジュールの機能が必要な時には(static linkされているか どうかにかかわらず)requireすればよくなる．

eval.c (Frequire)

  `$“'に格納する文字列をフルパスでなくフィーチャ 名とする．rubyスクリプトをロードした時には`.rb'，オブジェクトを ロードした時には`.o'をフィーチャ名に付加する．lispのrequireと provideの働きに(少し)近い．

## 1995-07-20¶ ↑

### Thu Jul 20 12:50:05 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

Makefile.in (test)

  make testができるように．

struct.c (struct_new)

  typo.

eval.c (rb_eval)

  `defined'を追加．メソッド/変数/定数の定義状態 を知る事が出来る．

## 1995-07-19¶ ↑

### Wed Jul 19 18:04:01 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1995-07-17¶ ↑

### Mon Jul 17 14:53:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

variable.c (rb_const_get)

  未初期化のCONSTANTの値をnilにした．し かし，今後また例外に戻す可能性はある．要はoptionalなクラス/モジュー ルが存在するかチェックしたいだけなんだな．

st.c (int)

  grow_factorを固定にした(大嶋さんのマシンに対応)．

## 1995-07-14¶ ↑

### Fri Jul 14 00:48:40 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ext/extmk.rb.in

  キャッシュのバグを修正．

parse.y (var_extend)

  #{$数字}に対応した．

dln.c (dln_load_1)

  `Init_FILENAME'だけを有効に．`init_*'は今後 実行しない．

ext/etc/etc.c

  Etcモジュールを拡張モジュールとして分離．実はNT 対応への布石だったりするかもしれない．

## 1995-07-11¶ ↑

### Tue Jul 11 17:12:48 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

signal.c (trap)

  typo.

## 1995-07-07¶ ↑

### Fri Jul 7 10:08:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

ruby.texi

  texinfo documentを提供．specとruby.1は無くなった．

signal.c (Ftrap)

  割込み禁止中の例外発生に対応．

eval.c (Flambda)

  Blockオブジェクトを返す．Block.newと同義．

## 1995-07-06¶ ↑

### Thu Jul 6 00:35:03 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

signal.c (Ftrap)

  SIG_DFLの処理を変更．SIGINTへのデフォルトハン ドラを用意(例外を発生する)．

file.c (Sfile_expand_fname)

  パス名を絶対パスに展開するメソッド．

(Sfile_basename)

  basenameを得るメソッド．拡張子も外せる．

(Sfile_dirname)

  basenameの反対．

eval.c (rb_call)

  argument評価中の例外発生に対応．

file.c (Ftest)

  `M', `A', `C'を追加.

## 1995-07-04¶ ↑

### Tue Jul 4 12:36:33 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

file.c (Ftest)

  ファイルテスト用メソッド．

ruby.c (proc_options)

  `-r'オプションを追加．

parse.y (f_args)

  デフォルト引数を追加．

eval.c (rb_call)

  該当する引数が無い時，rest引数の値をnilに．

numeric.c (num_equal)

  数値以外との比較で例外が発生していた． FALSEを返すように．

eval.c (masign)

  多重代入のrest部の動作がおかしかった．

## 1995-06-17¶ ↑

### Sat Jun 17 01:03:16 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

parse.y (gettable)

  未初期化のローカル変数の参照(独立した識別子) は正式にメソッド呼び出しとした．

parse.y (read_escape)

  tokenbufを使わないように修正．それにとも ない，`C-x',`M-x'などのエスケープ表現を復活．これでドキュメン トと実際の処理系が一致した．

## 1995-06-15¶ ↑

### Thu Jun 15 15:42:00 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

re.c (re_regcomp)

  cacheのチェックを改善．

## 1995-06-12¶ ↑

### Mon Jun 12 18:50:51 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

## 1995-06-10¶ ↑

### Sat Jun 10 00:25:01 1995 Yukihiro Matsumoto <matz@caelum.co.jp>¶ ↑

re.c (re_regcomp)

  cache判定に`$='の値も反映させた．

sample/test.rb

  test suite作成．

## 1995-06-09¶ ↑

### Fri Jun 9 15:58:34 1995 Yukihiro Matsumoto <matz@ix-02>¶ ↑

re.c (re_regcomp)

  cacheの判定が間違っていた．

### Fri Jun 9 00:01:35 1995 Yukihiro Matsumoto (matz@dyna)¶ ↑

eval.c (rb_yield)

  block構造体に初期化していないメンバ(iter)があっ たのでイテレータのネストが正しく動作しなかった．

## 1995-06-08¶ ↑

### Thu Jun 8 00:59:03 1995 Yukihiro Matsumoto (matz@dyna)¶ ↑

re.c (=~)

  String以外との比較がFALSEを返すように(例外を発生して いた)．

extmk.rb.in

  判定した値をファイルにキャッシュするようにした．

assoc.c (to_a)

  to_aメソッドが再定義されていなかった．

eval.c (rb_eval)

  初期化されていないローカル変数へのアクセスを引 数の無いメソッド呼び出しと解釈する．ただし，(現状では)メソッドが 定義されていない場合，エラーにせず変数未初期化のwaringを出して nilを返している．「ruby -pe print」などが実行できるという意味で はありがたいこの仕様は，しかし今後の検討が必要である．– メソッ ド呼び出しとするのを止めるか(以前の仕様)，いつもメソッド呼び出し とする(未定義ならばエラー)か，今の仕様で行くか．

eval.c (rb_eval)

  初期化されていないローカル変数へのアクセスで

## 1995-06-07¶ ↑

### Wed Jun 7 11:58:12 1995 Yukihiro Matsumoto <matz@ix-02>¶ ↑

eval.c (rb_fail)

  例外処理後も`$!'をクリアしないように．

(rb_fail)

  `$!'変数に最後に改行を追加しない．

io.c (Fprint)

  privateメソッドに変更．引数を取らない時の動作を変 更(`$_'を出力する)．

(Fio_print)

  出力先指定のprintメソッド．

(Fio_printf)

  出力先指定のprintfメソッド．

parse.y

  not演算子の追加．優先順位の低い`!'演算子．

## 1995-06-05¶ ↑

### Mon Jun 5 19:00:55 1995 Yukihiro Matsumoto <matz@ix-02>¶ ↑

## 1995-06-02¶ ↑

### Fri Jun 2 17:52:03 1995 Yukihiro Matsumoto <matz@ix-02>¶ ↑

ruby.c (proc_options)

  -Iオプションで`$:'への追加される順番を修 正した．

### Fri Jun 2 00:36:34 1995 Yukihiro Matsumoto (matz@dyna)¶ ↑

parse.y

  while修飾子の動作を通常のwhileと同じにした．ただし， begin式へのwhile修飾子だけはdo..while型のループとなる．

## 1995-05-31¶ ↑

### Wed May 31 18:36:30 1995 Yukihiro Matsumoto <matz@ix-02>¶ ↑

## 1995-05-29¶ ↑

### Mon May 29 18:39:37 1995 Yukihiro Matsumoto <matz@ix-02>¶ ↑

ext/extmk.rb.in (install)

  拡張モジュールもインストールできるよ うに．

## 1995-05-26¶ ↑

### Fri May 26 14:43:01 1995 Yukihiro Matsumoto <matz@ix-02>¶ ↑

process.c (Fsystem)

  戻り値をサブプロセスの失敗/成功を表す真偽値 にした．終了ステータスは`$?'で得る．

## 1995-05-23¶ ↑

### Tue May 23 10:58:11 1995 Yukihiro Matsumoto <matz@ix-02>¶ ↑

string.c (Fstr_upto)

  無限ループに陥らないように．

parse.y (cond)

  `||'などの右辺に制御式が書けるように，条件式がか ならずしも値を持たなくても良いようにした．

ext/marshal/marshal.c

  オブジェクトの読み書きをメソッドの再定義 でコントロールできるように．インスタンスが`_dump_to'というメソッ ドを定義している時はそちらを使うように．

ext/extmk.rb.in

  static linkも設定できるような仕様にした． ext/Setupというファイルにディレクトリ名を記述するとそのディレク トリに存在するモジュールはstatic linkされる(はず)．

eval.c (rb_eval)

  `..'を文法に組み込み，`..'と`…'の動作をperl に合わせた．

## 1995-05-20¶ ↑

### Sat May 20 01:22:48 1995 Yukihiro Matsumoto (matz@dyna)¶ ↑

io.c (select)

  timeout時と割込み時の動作の明確化．

## 1995-05-19¶ ↑

### Fri May 19 15:33:23 1995 Yukihiro Matsumoto <matz@ix-02>¶ ↑

### Fri May 19 00:48:08 1995 Yukihiro Matsumoto (matz@dyna)¶ ↑

string.c (Fstr_each)

  イテレータブロック中で文字列の変更が行われ たかどうかをチェック．ポインタの値が変わっていれば例外を発生する．

ruby-mode.el

  ruby-electric-braceの新設．

## 1995-05-18¶ ↑

### Thu May 18 12:27:23 1995 Yukihiro Matsumoto <matz@ix-02>¶ ↑

string.c (Fstr_tr)

  trの置換対象に`0'を含む時に正しく置換を行わ ないバグがあった．更に置換文字列をASCII順に指定しないと動作しな い問題もあった．結果としてtrを書き換えたので，copyrightの問題は 無くなった(と思う)．

gc.c (gc)

  the_scopeをマークしていなかったので，ローカル変数の指 しているオブジェクトが間違って開放される場合があった．

gc.c (mark_locations_array)

  若干の高速化．

## 1995-05-15¶ ↑

### Mon May 15 11:43:49 1995 Yukihiro Matsumoto <matz@ix-02>¶ ↑

ext/extmk.rb.in

  Dynamic Loadモジュールのコンパイル用チェックを 行うruby script．autoconfに近い感覚で使える．新しいモジュールを 提供したい人はextの下にディレクトリを作るだけで良い．必須のファ イルはファイル名の一覧を記録した`MANIFEST'というファイルのみ．必 要に応じて`depend'(ファイルの依存関係を記述するファイル gcc -MM の出力)，`extconf.rb'(コンパイル用にライブラリと関数の存在チェッ クするファイル)を用意できる．

eval.c (rb_call)

  rubyメソッドの引数チェック時に未初期化の jmp_bufを使用していた．

parse.y

  `or'と`and'の優先順位を同じにした．

## 1995-05-03¶ ↑

### Wed May 3 18:21:36 1995 Yukihiro Matsumoto (matz@dyna)¶ ↑

dln.c

  Linuxでは`__.SYMDEF/'であった．

dln.c

  system callのエラーチェックを忘れていた．

## 1995-04-26¶ ↑

### Wed Apr 26 09:50:56 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y

  イテレータブロックの変数宣言を`|'で括るようにした．これ でイテレータ変数がない時は宣言そのものを省略できる．文法の変更は 久しぶりだ．

## 1995-04-25¶ ↑

### Tue Apr 25 12:04:17 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

eval.c(require)

  loadからダイナミックロードの機能を移してきた． さらに拡張子の補完機能を追加してユーザがdln/dlopenの差を意識する 必要のないようにした．

string.c(sub,sub)

  イテレータとしても動作するように．

object.c

  init_object -> initialize.

## 1995-04-24¶ ↑

### Mon Apr 24 14:22:39 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

io.c

  Solarisのstdioの動作が違うようだ．signalでEOFを返してしま う…．perlでも同様の問題がある．

## 1995-04-21¶ ↑

### Fri Apr 21 20:04:39 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

signal.c

  trapがなくなっていた．うーむ．

configure

  Solaris 2.3対応．

io.c

  elifのないcppもある．

dir.c

  autoconf 2.xへの対応が不十分

## 1995-04-20¶ ↑

### Thu Apr 20 12:31:24 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

env.h, gc.c, regex.c

  IRIXへの移植対応

configure

  dlopen用にpicを生成するoptionの検出のため，システムタ イプをチェックするように．

## 1995-04-18¶ ↑

### Tue Apr 18 19:08:17 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

gc.c(xrealloc)

  ptr=nilの時，malloc()と同じ働きを

array.c(astore)

  空の配列の0番目の要素に代入するとsize=0で realloc()を呼んでいた．

configure, glob.c

  Solaris 2.xでコンパイルできるように

## 1995-04-10¶ ↑

### Mon Apr 10 18:36:06 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

## 1995-04-07¶ ↑

### Fri Apr 7 13:51:08 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

cons.c->assoc.c

  consの余計な機能は外してpairとしての機能だけを 残した．Enumerableをincludeするのもやめた．

string.c(esub)

  文字列置換イテレータ．perlのs///eの相当する．

## 1995-04-05¶ ↑

### Wed Apr 5 11:35:21 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

file.c

  utimesがない時はutimeを使うように．

## 1995-04-03¶ ↑

### Mon Apr 3 15:19:41 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

regexp.c(re_match)

  バグがあった．match_2を削除した時にenbugして いたのだった．

## 1995-03-27¶ ↑

### Mon Mar 27 15:41:43 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

dict.c

  Dict->Hashに全面的に移行．

## 1995-03-23¶ ↑

### Thu Mar 23 20:30:00 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

dbm.c,socket.c

  extディレクトリに分離．

configure

  dln周りのチェックの強化

dln.c

  initの呼び出しをdlopen()版に合わせた．

## 1995-03-20¶ ↑

### Mon Mar 20 17:45:08 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

configure

  autoconf 2.2に対応(一部)．

## 1995-03-17¶ ↑

### Fri Mar 17 15:56:44 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

dln.c

  dlopenのあるマシンではそちらを使うように．ただし，ちゃん と動いているかどうかは自信がない．

regex.c

  virtual concatinationをやめた．

## 1995-03-16¶ ↑

### Thu Mar 16 11:32:57 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

eval.c,regex.c

  gccでのコンパイルエラー．

io.c

  inplace-editで拡張子が指定されない場合，もとのファイルを削 除する．

## 1995-03-15¶ ↑

### Wed Mar 15 14:59:18 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

eval.c(method_missing)

  unknownから名称変更．

eval.c(single_method_added)

  特異メソッドが定義された時に呼ばれ るメソッド．hookとして使える．実際に定義される直前に呼ばれる．

## 1995-03-14¶ ↑

### Tue Mar 14 14:46:44 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

ruby.c(proc_options)

  引数の解析を自分でやることにより引数指定の 方法がperlに近付いた．getopt_longはもう使わない．

dir.c(glob)

  `{}'のネストを許すようにした．

## 1995-03-13¶ ↑

### Mon Mar 13 17:56:25 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

glob.c

  Glob(ワイルドカードオブジェクト)はなくなった．ワイルドカー ドの展開はDir.glob(文字列)を使う．ワイルドカードのマッチは正規表 現で代用．

## 1995-03-10¶ ↑

### Fri Mar 10 18:35:46 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

eval.c

  Mathのようなモジュールは自分自身でextendする．

eval.c

  クラスやモジュールを定義する時，既に同名のものがあれば追 加定義となるように．ただし．superクラスの違いなどはチェックする．

regex.c

  debug.

math.c

  定数PIとEを定義．

## 1995-03-09¶ ↑

### Thu Mar 9 21:35:12 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

regex.c

  EUC,SJISモードでは0x80以上の8進，16進リテラルを禁止．

regex.c

  クラス内でも数値リテラル・文字クラスが使えるようした．

## 1995-03-08¶ ↑

### Wed Mar 8 17:39:05 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

regex.c

  200など括弧の数以上の表現は8進リテラルと解釈する．ただ し，1から9までは例外．

regex.c

  9以上のリファレンスも有効にした．

## 1995-03-07¶ ↑

### Tue Mar 7 14:26:01 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

eval.c(public/private)

  スコープ制御メソッドの名称変更．静的なア クセスも出来るようにしてみたが，不採用．

## 1995-03-06¶ ↑

### Mon Mar 6 19:34:32 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

eval.c(inlcude)

  メソッド化．動的にモジュールをインクルードでき るように．さらに任意のオブジェクトにもモジュールをインクルードで きるメソッド `extend'も用意した．

parse.y

  文法からincludeを削除．メソッド化．

## 1995-02-28¶ ↑

### Tue Feb 28 15:35:10 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y

  配列，連想配列の最後に`,'をおけるように．

## 1995-02-24¶ ↑

### Fri Feb 24 13:15:43 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

## 1995-02-23¶ ↑

### Thu Feb 23 11:19:19 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

eval.c

  resque節のselfの値が間違っていた．

eval.c(rb_clear_cache)

  キャッシュのクリアし忘れがあった．

eval.c

  定数のスコープをクラス内の静的スコープに変更した．これに よって，特異メソッドから参照される定数は，レシーバのクラスではな く，定義されたスコープのクラスの定数となる．

## 1995-02-22¶ ↑

### Wed Feb 22 00:51:38 1995 Yukihiro Matsumoto (matz@dyna)¶ ↑

regex.c

  ignorecaseを正規表現のコンパイル前に指定しないと正しく 動作しない．修正．

string.c(toupper,tolower)

  bug fix.

`ENV`,VERSION

  readonly変数から定数へ．

## 1995-02-21¶ ↑

### Tue Feb 21 18:56:56 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

io.c(STDIN, STDOUT, STDERR)

  定数として定義．

io.c(select)

  bug fix.

## 1995-02-20¶ ↑

### Mon Feb 20 16:10:14 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y(yylex)

  定数を`%識別子'から，第1文字が大文字の識別子に変 更．それにともないクラスは定数となった．

eval.c

  クラス定義内のselfがクラス定義外部のthe_classだった．

variable.c(rb_name_class)

  クラス名をインスタンス変数に格納する．

## 1995-02-16¶ ↑

### Thu Feb 16 15:36:17 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y

  BLOCKをbraceで表現する文法に変更したものを作ってみる． MLに提示してみるが反応がない．

object.c(do,forever)

  なくした．

## 1995-02-15¶ ↑

### Wed Feb 15 13:20:49 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

re.c(new)

  第2引数が与えられて，かつnilでないときだけ設定するよ うに(以前はnilの時にも設定を行なっていた)．

parse.y(parse_regexp)

  正規表現リテラルで大文字小文字を無視する かどうか指定できるように．

## 1995-02-14¶ ↑

### Tue Feb 14 00:55:33 1995 Yukihiro Matsumoto (matz@dyna)¶ ↑

parse.y

  (compexpr) -> (expr).

## 1995-02-10¶ ↑

### Fri Feb 10 16:30:00 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

ruby.c(load_file)

  scriptを読み込む時だけ“#!”の解析を行うように．

ruby.c(readin)

  ファイル読み込み時に先頭に“#!”があり，その行が “ruby”という文字列を含む時，rubyに引数が与えられていれば，その引 数も有効になる．

parse.y(yylex)

  コメント行の終りが`'であった時，次の行に継続し ているとみなすようにした．

## 1995-02-09¶ ↑

### Thu Feb 9 16:18:37 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y

  protectをbeginに変更．begin..endは例外処理だけでなく， 文括弧としても働くことになった．

## 1995-02-01¶ ↑

### Wed Feb 1 19:48:24 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

string.c(str_replace)

  置き換える文字列の長さが等しい時メモリコ ピーをしない．

string.c(rindex)

  バグ修正．

## 1995-01-30¶ ↑

### Mon Jan 30 11:23:05 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y(value_expr)

  ifのチェックを追加．

gc.c(gc_mark)

  free cellの扱いにバグ．

parse.y

  文法の変更(よりシンプルに)．例外を減らした．

## 1995-01-26¶ ↑

### Thu Jan 26 00:52:55 1995 Yukihiro Matsumoto (matz@dyna)¶ ↑

parse.y

  引数として連想配列を置くことができるように．この場合， 連想配列リテラルが最終引数となる．

parse.y

  配列参照の`[]'内が空でもよいことにした．

## 1995-01-24¶ ↑

### Tue Jan 24 14:45:15 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

class.c(rb_include_module)

  `-v'を指定した時にはincludeしたモジュー ルとクラス定数が衝突していないかチェックする．

## 1995-01-23¶ ↑

### Mon Jan 23 10:42:09 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y(rb_class2name)

  メタクラスに関するbug fix.

dict.c

  Dictで辞書の生成が出来るように．

array.c

  Arrayで配列の生成が出来るように．

parse.y

  辞書の表現として{a,b,..}という形式も許すように．

## 1995-01-20¶ ↑

### Fri Jan 20 10:28:38 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

re.c(`Regexp.quote`)

  正規表現をエスケープするメソッド．

parse.y

  `!', `!=', `!~'を特殊演算子にする．よってこれらは再定義 できなくなった．

## 1995-01-18¶ ↑

### Wed Jan 18 13:20:41 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y

  文法の整理(unless,untilをなくした)．

## 1995-01-17¶ ↑

### Tue Jan 17 11:11:27 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

eval.c

  defでメソッド再定義時にはスーパークラスのメソッドの可視 性を継承する．最初の定義の時は今までと同じデフォルト(トップレベ ルで関数的，クラス定義内で通常メソッド)．

object.c(`Class#new`)

  オブジェクトの生成時に関数的メソッド init_objectが必ず呼ばれるように変更．

eval.c

  未定義のメソッドに対してunknownメソッドが呼ばれるように なった．エラー表示が今までと同じになるようにenvを調節している．

## 1995-01-13¶ ↑

### Fri Jan 13 14:40:30 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

gc.c

  gcを若干書き換えて整理した．が，あまり変化はなかったようだ．

parse.y(yylex)

  symbolをsymから:symに変更した．

## 1995-01-12¶ ↑

### Thu Jan 12 01:39:28 1995 Yukihiro Matsumoto (matz@dyna)¶ ↑

eval.c

  新規関数 rb_eval_string()．

gc.c

  gc_mark()を一部非再帰化．

variable.c(rb_ivar_{get,set})

  インスタンス変数のアクセス周りで チェックが足りなかった．

variable.c

  クラス定数とインスタンス変数でハッシュテーブルを共有 するようにした．

ruby.h

  iv_tblをRBasicからRObjectとRClassへ移動した．これにより， ObjectとClass,Moduleしかインスタンス変数を持てなくなる．が，メモ リ効率は若干向上する．

## 1995-01-10¶ ↑

### Tue Jan 10 00:58:20 1995 Yukihiro Matsumoto (matz@dyna)¶ ↑

eval.c

  レシーバと引数は常にiterではない．

cons.c(aref,aset)

  negative offset対応．

## 1995-01-09¶ ↑

### Mon Jan 9 14:40:39 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y

  foo{..}の形式において，fooをローカル変数やクラス名では なく，引数なしの関数型メソッド呼び出しとみなすようにした．

list.c -> cons.c

  名称変更(クラス名も)．

list.c

  a::b::c::nilをリスト(a b c)とみなすlisp形式から，a::b::c をリスト(a b c)とみなすruby形式に変更．[], []=, eachもそれに会わ せた仕様とする．

list.c

  consペアとしての機能を強調．仕様変更．

## 1995-01-07¶ ↑

### Sat Jan 7 01:26:26 1995 Yukihiro Matsumoto (matz@dyna)¶ ↑

eval.c

  自己代入の不具合修正．

eval.c(masign)

  多重代入が配列もリストもとれるようにした．

list.c

  assocを2要素の配列からList(CONSペア)に変更した．

## 1995-01-06¶ ↑

### Fri Jan 6 13:42:12 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y

  a+=cやa.b+=cなどの自己代入形式で，aやbを2度評価しな くなった．

eval.c

  iterator設定のバグフィックス．

list.c

  Listクラスを新設．

## 1995-01-05¶ ↑

### Thu Jan 5 13:55:00 1995 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y

  SCOPEのメモリリークをなくした．

eval.c

  built-inメソッドへの引数の引き渡し方を変更して，配列の生 成数を減らした．

re.c

  match-dataを毎回生成することをやめた．`$~'をアクセスした時 にon-demandで生成する．

string.c etc

  不必要なmemmoveをmemcpyに置換．

parse.y

  =~, !~は副作用があるのでコンパイル時に展開できない．

## 1995-01-03¶ ↑

### Tue Jan 3 02:04:36 1995 Yukihiro Matsumoto (matz@dyna)¶ ↑

eval.c

  rest引数のbug fix.

eval.c,gc.c

  scopeをオブジェクトにした．

eval.c

  envとscopeの扱いを変更した．

## 1994-12-28¶ ↑

### Wed Dec 28 09:46:57 1994 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y

  evalでローカル変数が追加された場合に対応した．

parse.y

  演算子を含むaliasのbug fix.

## 1994-12-27¶ ↑

### Tue Dec 27 16:45:20 1994 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y

  def A Bをalias A Bに変更．

eval.c

  alias関係のbug修正．nodeをオブジェクト化した時にenbugし たようだ．

signal.c

  システムコールの再定義を止めた．

io.c(select)

  write/exceptのフラグ設定にバグ．

Makefile.in

  static link用オプションをMake変数として独立させた．

## 1994-12-20¶ ↑

### Tue Dec 20 00:46:19 1994 Yukihiro Matsumoto (matz@dyna)¶ ↑

eval.c(rb_call)

  superの呼び出しで落ちる．argc, argvの設定を忘れ ていた．

parse.y(read_escape)

  展開エラー．

variable.c

  定義済みの変数のhookを変更しないように．

## 1994-12-19¶ ↑

### Mon Dec 19 12:01:10 1994 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y(cond)

  条件式に代入式が置かれた場合，`-v'オプションで警 告が出るように．

parse.y(**)

  冪乗演算子`**'の優先順位を単項演算子より高くした．

parse.y(and,or)

  優先順位の低い演算子`and', `or'.

eval.c

  不必要になったPUSH_ENV, POP_ENVを減らした．

env.h

  ENVIONからselfをはずした．PUSH_ENVはsuperの準備のためだけ に用いることにした．

eval.c

  下記のオブジェクト化で遅くなった実行速度をもとに戻した．

## 1994-12-17¶ ↑

### Mon Dec 17 23:01:10 1994 Yukihiro Matsumoto (matz@ix-02)¶ ↑

eval.c

  env.{argv,argc}とscope.local_varsのオブジェクト化．

eval.c

  1スコープ内で複数Blockを生成したときのバグを修正．

## 1994-12-16¶ ↑

### Fri Dec 16 15:52:06 1994 Yukihiro Matsumoto (matz@ix-02)¶ ↑

parse.y

  `&&'と`||'の両辺はいつでも条件式とした．

## 1994-12-15¶ ↑

### Thu Dec 15 00:16:04 1994 Yukihiro Matsumoto (matz@dyna)¶ ↑

eval.c(Block)

  Blockオブジェクトを実現．

node.h

  NODE_QLISTはなくなった．

eval.c(rb_call)

  引数への代入を名前で一つずつ代入するのをやめて， 一度にコピーするようにした．

eval.c(rb_call)

  rubyで記述されたメソッドへの引数渡しをinline化．

eval.c

  イテレータ判定処理の全面書き換え．不適切なイテレータ呼び 出しをなくした．例えば「{i|baz(i)}」でfooもbarもイ テレータとして呼び出され*ない*．

eval.c(rb_call)

  SCOPE処理をinline化．メソッド呼び出しの若干の高 速化．

## 1994-12-14¶ ↑

### Wed Dec 14 18:09:33 1994 Yukihiro Matsumoto (matz@ix-02)¶ ↑

node.h

  nodeもオブジェクトにする．よってGCで回収される．

## 1994-12-08¶ ↑

### Thu Dec 8 14:17:29 1994 Yukihiro Matsumoto (matz@ix-02)¶ ↑