1Thu Dec 8 00:32:21 1994 Yukihiro Matsumoto (matz@dyna) 2 3 * io.c($<.file,$<.filename): きちんと初期化. 4 5 * parse.y(rb_class2name): includeしているクラス名を正常に表示でき 6 なかった. 7 8Wed Dec 7 15:40:36 1994 Yukihiro Matsumoto (matz@ix-02) 9 10 * dln.c: config.hをincludeしていなかった. 11 12 * missing/strdup.c: 忘れていた. 13 14Fri Dec 2 15:21:44 1994 Yukihiro Matsumoto (matz@ix-02) 15 16 * 関数の命名ルールを変えた(クラスメソッド: Sxxx_xxx,ユーティリティ 17 メソッドxxx_xxxなど). 18 19 * re.c(casefold): 個々の正規表現オブジェクトが大文字小文字を無視す 20 るかどうかを設定できるようにした. 21 22Thu Dec 1 01:44:51 1994 Yukihiro Matsumoto (matz@dyna) 23 24 * missing.c: システムで提供されないファイルの扱いを変更した. 25 26 * io.c($<): 変数`$<'が指しているものを現在読み込み中のファイル名か 27 ら仮想ファイル($ARGF)に変更した.また,現在読み込み中のファイル 28 名とファイルオブジェクトにアクセスするメソッドも用意した. 29 30 * ruby.h(data_new): Dataオブジェクトの割り当て方法を改善した. 31 32Wed Nov 30 15:36:13 1994 Yukihiro Matsumoto (matz@ix-02) 33 34 * Makefile: ルールを整理した. 35 36Tue Nov 29 00:09:26 1994 Yukihiro Matsumoto (matz@dyna) 37 38 * array.c(`|'): 引数が配列でなく,かつそのオブジェクトが要素として 39 含まれていない時,そのオブジェクトを追加する.あればなにもしない. 40 41 * process.c(gid,egid): GIDをアクセスするメソッド. 42 43 * io.c(print): 文字列と配列に対する処理を組み込んで若干の高速化を 44 図った.出力が多い場合に効いてくるようだ. 45 46 * parse.y(parse_string): ""で囲まれた文字列内では対応するエスケー 47 プがない`\'を残さないように.つまり,今後は"\k" -> "k"である(以 48 前は"\k"だった). 49 50Mon Nov 28 18:02:31 1994 Yukihiro Matsumoto (matz@ix-02) 51 52 * re.c(re_regsub): 置換文字列の置換えが不完全だった. 53 54 * 一時オブジェクトの解放をすべてGCに任せた.今のままではまずいタイ 55 ミングでオブジェクトを解放する可能性があった.昔のGCの時にはこれ 56 でも良かったのだが. 57 58Tue Nov 22 00:15:24 1994 Yukihiro Matsumoto (matz@dyna) 59 60 * eval.c($"): 既にロードしたファイル名の配列. 61 62Mon Nov 21 01:09:50 1994 Yukihiro Matsumoto (matz@dyna) 63 64 * array.c(&,|): 集合としての積演算と和演算. 65 66 * io.c($<): 文字列を代入した時には自動的にopenするように.IOのサブ 67 クラスかどうかのチェックも行う. 68 69Sun Nov 19 23:02:27 1994 Yukihiro Matsumoto (matz@dyna) 70 71 * eval.c($:): $LOAD_PATHの別名. 72 73 * io.c($>): デフォルト出力先.IO.defaultは無くなった. 74 75 * io.c($<): $FILENAMEの別名 76 77 * glob.c(each): ワイルドカードにマッチするものがない場合,パターン 78 そのものを与えるように. 79 80 * file.c(chmod,chown,unlink,utime): `\'でワイルドカードをエスケー 81 プできるように. 82 83Fri Nov 18 00:20:42 1994 Yukihiro Matsumoto (matz@ix-02) 84 85 * version 0.55 released 86 87 * file.c(chmod,chown,unlink,utime): 引数として与えられた文字列にワ 88 イルドカードが含まれている場合にはGlobオブジェクトに変換する. 89 90Wed Nov 16 17:33:48 1994 Yukihiro Matsumoto (matz@ix-02) 91 92 * file.c(chmod,chown,unlink,utime): 引数としてワイルドカードも受け 93 付けるように. その場合はマッチするファイル全体に適用される. 94 95Fri Nov 11 00:07:28 1994 Yukihiro Matsumoto (matz@dyna) 96 97 * string.c(strip): 文字列そのものを変更するように. 98 99 * eval.c(rb_cal): 環境をスタックに積むタイミングが間違っていたので, 100 不適切なエラーメッセージが出る時があった. 101 102 * eval.c(rb_undefined): メソッドが無い時とメソッドにアクセスできな 103 い時とでメッセージを替えた. 104 105 * string.c: toupper/tolowerはupcase/downcaseを使って実現. 106 107 * string.c: lcfirst/ucfirstは削除. 108 109Thu Nov 10 16:15:16 1994 Yukihiro Matsumoto (matz@ix-02) 110 111 * string.c: sub/gsubは置換後の文字列を返すようにした. 112 113 * string.c: toupper/tolower/lcfirstなどを文字列を変更するものとし 114 ないものの2 種類を提供するようにした. 115 116Tue Nov 1 17:52:09 1994 Yukihiro Matsumoto (matz@ix-02) 117 118 * eval.c: 変数展開にバグがあって元の文字列を破壊していた. 119 120Thu Oct 27 09:56:48 1994 Yukihiro Matsumoto (matz@ix-02) 121 122 * eval.c: rest引数の処理が間違っていた. 123 124 * env.c(rb_yield): ローカル変数の設定が間違っていた. 125 126Wed Oct 26 19:01:43 1994 Yukihiro Matsumoto (matz@ix-02) 127 128 * eval.c: 引数セットの高速化. 129 130 * process.c: sleepのバグ. 131 132 * parse.y, gnuglob.c: Sunのccでもコンパイルできるように. 133 134Tue Oct 25 00:36:16 1994 Yukihiro Matsumoto (matz@ix-02) 135 136 * eval.c: 若干の高速化. スタックの処理によってrb_call()が少し遅く 137 なった分の穴埋めくらいか. 138 139 * eval.c: blockをenvから外すなどしてスタックを軽くした. 140 141Mon Oct 24 11:47:54 1994 Yukihiro Matsumoto (matz@ix-02) 142 143 * re.c: 正規表現アクセス用の変数($`, $', $+)を追加. 144 145 * re.c($KANJI): 処理する漢字コードをrubyプログラム内から設定できる 146 ようにした. 147 148Sat Oct 22 00:42:41 1994 Yukihiro Matsumoto (matz@dyna) 149 150 * eval.c: イテレータ内のredoとretryの処理にバグがあった. 151 152Fri Oct 21 00:53:21 1994 Yukihiro Matsumoto (matz@dyna) 153 154 * string.c(swapcase): 文字列の大文字小文字を置き換える. 155 156 * string.c(ljust,rjust,center): 文字列のレイアウト用メソッド. 157 sprintf()でも同じようなことはできるが. 158 159 * socket.c(recv,recvfrom): flags引数を省略可能にした. 省略時の値は 160 0である. 161 162 * socket.c(recvfrom): recvと同様だが, データと相手アドレスのペアを 163 返す. 164 165 * socket.c(accept): 戻り値をつながったソケットから, ソケットとアド 166 レスのペアに変更した. 167 168 * eval.c(eval): the_classをセットする時に, last_moduleがincludeさ 169 れているモジュール(T_ICLASS)であれば, 定義元のモジュールの方をセッ 170 トするように. この修正がないとICLASSに対してメソッドが呼ばれる可 171 能性があり, 不審な動作をする(はず). 172 173 * class.c: オブジェクトのcloneの際に特異クラス(特異メソッド用のク 174 ラス)をきちんとコピーするようにした. 今までは個々のメソッドのコ 175 ピーを忘れていた. 176 177 * numeric.c: Numericのnewとcloneをundefした. 178 179Thu Oct 20 11:30:00 1994 Yukihiro Matsumoto (matz@ix-02) 180 181 * version 0.53 released. 182 183 * parse.y: TopLevelのdef文は関数メソッドを定義するようにした. 184 185 * parse.y: def文のprivate指定はなくなった. export/noexportメソッド 186 を使ってもらうことにした. 187 188 * parse.y: case文にthenを含むことができるようになった. 189 190Wed Oct 19 13:09:58 1994 Yukihiro Matsumoto (matz@ix-02) 191 192 * object.c(export,unexport): 関数メソッドの設定用メソッド. 193 194 * eval.c, class.c: 関数的メソッドを復活させ(またか…), `@'による 195 privateメソッドをなくした. やはり, 関数的なものは関数的に呼びた 196 い気がしてきた. こう仕様が変動しててはいけないような気もするなあ. 197 *BACKWARD INCOMPATIBILITY* 198 199 * eval.c: メソッドの構成を変更し, 別名管理と関数メソッドの管理を分 200 離した. 201 202 * eval.c: the_env->last_funcをCメソッドの時にも更新する. これがな 203 いとStructのアクセスが動作しない. 204 205Fri Oct 14 13:22:18 1994 Yukihiro Matsumoto (matz@ix-02) 206 207 * version 0.52 released: ……なんてこったい. 208 209 * eval.c(rb_call): returnの処理が間違っていたので, マシンによって 210 はreturnで関数を終了するだけでなくtoplevelまでつき抜けていた. 211 212 * dbm.c: Dictと同様にeachが[key,value]を返すように. 213 214 * version 0.51 released 215 216Thu Oct 13 12:13:48 1994 Yukihiro Matsumoto (matz@ix-02) 217 218 * eval.c(SETUP_ARGS): 付加引数が配列でない時には配列に変換する. 219 220 * parse.y: 括弧なしのメソッド呼び出しでも`*'による付加引数が使える 221 ようにした. ただし, 通常引数が一つもない場合は乗算演算子と区別が 222 つかないので, 必ず括弧が必要. 223 224Wed Oct 12 10:09:07 1994 Yukihiro Matsumoto (matz@ix-02) 225 226 * eval.c(rb_call): キャッシュの計算をinline化. キャッシュミスがあ 227 れば関数呼び出しでメソッドを検索する. methods.cはなくなった. 228 229 * eval.c(rb_eval): ローカル変数用の領域をalloca()するように変更. 230 サイズの変更が必要になれば改めてmalloc()するように. 231 232 * parse.y: error recoveryの際にlex_stateを更新しておくように. 233 234Tue Oct 11 17:10:46 1994 Yukihiro Matsumoto (matz@ix-02) 235 236 * socket.c(for_fd): ファイル記述子(Fixnum)からソケットインスタンス 237 を得るメソッド. たとえばinetdから起動されたサーバで標準入出力に 238 ソケット操作を行なうために使う. つまりSocket.for_fd($stdin)で標 239 準入力に対応するソケットオブジェクトが得られる. 240 241 * io.c(to_i): IOクラスのインスタンスを整数に変換するとそのファイル 242 記述子を返すように. 243 244 * numeric.c(num2int): to_iメソッドを使ってできる限り整数に変換する. 245 以前はnum2fixだけが全てのオブジェクトに対してto_iメソッドを適用 246 していた. 247 248 * sprintf.c(Fsprintf): 整数表示の際, オブジェクトをできる限り整数 249 に変換するように(to_iメソッドを使う). 250 251Fri Oct 7 14:06:32 1994 Yukihiro Matsumoto (matz@ix-02) 252 253 * eval.c(Fcaller): 必要性がよく分からないのでドキュメントから削除. 254 将来デバッガを作る時に復活させよう. 255 256 * eval.c(rb_call): Cで記述されたメソッド呼び出しでは環境をスタック 257 にセーブしないことによって高速化. 258 259Wed Oct 5 15:00:58 1994 Yukihiro Matsumoto (matz@ix-02) 260 261 * ruby.h: 一時env.hに移動してたQselfの定義を復活. ただし今回は関数 262 として実現(env.hでは変数として再定義してある). 263 264 * ruby.h: TRUEでsyntax errorにならないよう#undefを追加. 265 266 * eval.c(rb_eval): thread化に挑戦したが, 失敗(速くならなかった). 267 が, Scopingなどの無駄なコードの削除とメソッド呼び出しの引数セッ 268 トのinline化で若干の高速化を実現した. 副作用として, argc, argv形 269 式の関数呼び出しの仕様が変化した(argvにselfを含まなくなった). 270 271 * eval.c(rb_call): メソッド呼び出しの高速化. 272 273Tue Oct 4 11:40:53 1994 Yukihiro Matsumoto (matz@ix-02) 274 275 * ruby-mode.el: 修飾子に対応した. 276 277 * parse.y: 多重代入にrestをつけた. この機能を使えばoptional引数の 278 解析が簡単にできる(はず). 279 280 * pack.c(unpack): uuencode形式のdecodeの際に文字列の長さが間違って 281 いた. 282 283Mon Oct 3 15:58:41 1994 Yukihiro Matsumoto (matz@ix-02) 284 285 * file.c(type): ファイルタイプを文字列で返すメソッド. 286 287Fri Sep 30 11:36:07 1994 Yukihiro Matsumoto (matz@ix-02) 288 289 * object.c: デフォルトの真の値である%TRUEの値を1(Fixnum)からtに変 290 更した. to_sで文字列に変換した時にも`t'と表示される. 更に踏み込 291 んで`t'を予約語にしてlispのようにしようかとも思ったが, そこまで 292 は決心できなかった. 一文字のローカル変数はかなり使いそうな気がす 293 るので…. 294 295 * array.c,dict.c: equalを再定義しているクラスで, hashを正しく定義 296 した. 297 298Wed Sep 28 23:30:28 1994 Yukihiro Matsumoto (matz@dyna) 299 300 * eval.c(Ffail): 今までfailはカーネルクラスのメソッドであったが, 301 構文に組み込んだ. この変更によって, 1)`fail'は予約語となり, ロー 302 カル変数に用いることができなくなった. 2)`fail'単体で例外を発生す 303 るようになった. 3)failはメソッドではなくなったので再定義される可 304 能性がなくなった. 305 306 * dic.c, dbm.c(indexes): Arrayのindexesと同様の機能を持つメソッド 307 を追加. 308 309 * array.c(indexes): 引数をインデックスとする要素の配列を返す. 整数 310 の配列を引数とする時には引数の要素をインデックスとする要素の配列 311 を返す. 312 313Mon Sep 19 13:42:31 1994 Yukihiro Matsumoto (matz@ix-02) 314 315 * array.c(aset): 部分配列に対する代入で配列以外のオブジェクトが指 316 定された場合に多重代入と同じルールで配列化するようにした. 317 318 * io.c(print): 引数として与えられた各オブジェクトにprint_onメッセー 319 ジを与えるように. 実行速度は落ちるが柔軟性は増す. 320 321Fri Sep 16 14:59:18 1994 Yukihiro Matsumoto (matz@ix-02) 322 323 * glob.c: ワイルドカードの導入. bashに使われているGNUのglobルーチ 324 ンを流用した. 325 326Mon Sep 12 18:36:58 1994 Yukihiro Matsumoto (matz@ix-02) 327 328 * parse.y(value_expr): 式がnilの時に対応. 329 330 * class.c: ICLASSのclassが必ずClass/Moduleを指すように. 331 332Tue Sep 6 16:23:28 1994 Yukihiro Matsumoto (matz@ix-02) 333 334 * re.c: 正規表現内で「\数字」形式が指定できるように. 335 336 * parse.y:「do expr using var ... end」形式はなくなった. 寂しい気 337 もする. *BACKWARD INCOMPATIBILITY* 338 339Mon Sep 5 10:59:01 1994 Yukihiro Matsumoto (matz@ix-02) 340 341 * numeric.c(next): Numericクラスにもnextを提供. 342 343 * string.c(upto): uptoを提供. 344 345 * range.c(each): nextを使ったインタフェースからuptoを使うように変 346 更した. この方が一つのメソッドで処理をまとめで行なうことができる. 347 348Fri Sep 2 15:25:39 1994 Yukihiro Matsumoto (matz@ix-02) 349 350 * dict.c(each): 戻り値を[key, value]のペアに変更. 今までのeachは 351 each_valueとして残る. *BACKWARD INCOMPATIBILITY* 352 353Thu Sep 1 10:49:04 1994 Yukihiro Matsumoto (matz@ix-02) 354 355 * 成功した(特別な戻り値を持たない)システムコールは`0'を返すように. 356 357Wed Aug 31 00:26:51 1994 Yukihiro Matsumoto (matz@dyna) 358 359 * string.c: チェックサムを得るメソッド`sum'を作った. 360 361 * class.c(include_class_new): ICLASSのclassをもとのクラスにした. 362 gcの際に元クラスをマークする必要があるのが, フィールドを増やす余 363 地が無いので, classフィールドを流用した. 私の見積りが間違ってい 364 て, ICLASSのインスタンスにメッセージを送る事があれば, おかしな動 365 作をするだろう. 366 367 * eval.c(masign): 式(a,b = nil)の値を[nil]からnilに変更した. 368 369Mon Aug 29 11:56:09 1994 Yukihiro Matsumoto (matz@ix-02) 370 371 * class.c: rb_define_mfuncを無くして, メタクラスにモジュールをイン 372 クルードするようにした. 373 374 * error.c(yyerror): 同じ行で複数のsyntax errorをリポートしないよう 375 にした. 376 377 * file.c: FileTestモジュールにファイルテストメソッドを分離した. 378 379 * parse.y: 演算子を指定する時のlex_stateを正しく設定した. 380 381Sat Aug 27 01:23:34 1994 Yukihiro Matsumoto (matz@dyna) 382 383 * parse.y: if/whileなどの複合式をprimaryに移動した. これによって例 384 えば「if cond then a else b end.message()」のような式が書けるよ 385 うになった. 386 387Fri Aug 26 10:46:30 1994 Yukihiro Matsumoto (matz@ix-02) 388 389 * spec: 整理された文法にしたがって書き直した. 390 391 * parse.y: ここ数日で混乱していた文法を整理した. 括弧を省略したメ 392 ソッド呼び出しができるようになったこと, modifierが付けられるよう 393 になったこと, returnにリストが渡せるようになったことが主な変更点 394 である. 395 396 * process周りが怪しいがとにかくSolaris 2.3で動くように. 397 398 * parse.y: 曖昧性がない場合にはメソッド呼び出しの引数の括弧を省略 399 できるように. 省略できるメソッド呼び出しの条件は, 1)かならず1個 400 以上の引数を必要とすること, 2)第1引数が`+', `-', `(', `[', `{', 401 `/'など, 式の始まりに置かれた時と途中に現れた時とで解釈が違う記 402 号で始まらないこと, である. 403 404Thu Aug 25 13:54:58 1994 Yukihiro Matsumoto (matz@ix-02) 405 406 * parse.y(cond): 条件式の展開部にbugがあった. 407 408Wed Aug 24 00:01:15 1994 Yukihiro Matsumoto (matz@dyna) 409 410 * parse.y: returnはコンマで区切ったリストも受け取るように. つまり, 411 return a, b, cはreturn [a, b, c]と同じ意味になる. 412 413 * parse.y: yield以外の大域脱出制御式をexprからexpr0に移した. よっ 414 てメソッドの引数に制御式を使えなくなる(これで困る人はいないはず). 415 416 * parse.y: `+'の定数展開の際に演算子の優先順位を忘れていた. 417 418 * eval.c: untilの戻り値はnilになった. 419 420 * parse.y: modifierとしてのif/unless/while/untilを追加. 421 422 * parse.y: 文法からendの後ろにつけるキーワードを削除. ほとんど使わ 423 なかった上に, emacsではruby-modeがあれば対応のチェックが機械的に 424 出来るため. 425 426Tue Aug 23 18:08:33 1994 Yukihiro Matsumoto (matz@ix-02) 427 428 * eval.c: スクリプト実行開始前に例外が発生した時にcore dumpした. 429 組み込み用にコードを変更した時にenbugしてしまった. 430 431Tue Aug 23 00:07:17 1994 Yukihiro Matsumoto (matz@dyna) 432 433 * eval.c: doの戻り値がいつもnilになっていた. 434 435 * parse.y: loop制御変数の多重代入化にbugがあった. 436 437 * parse.y(expand_op): 文字列も畳み込みの対象に. 438 439Mon Aug 22 10:50:01 1994 Yukihiro Matsumoto (matz@ix-02) 440 441 * parse.y(expand_op): `+'に関しては結合則を使って, より多く定数畳 442 み込みを行なうように. 443 444 * ruby.c(proc_options): argcが0の時にも対応. 445 446 * parse.y: forなどの制御変数に多重代入も使えるように. 447 448Sat Aug 20 00:59:40 1994 Yukihiro Matsumoto (matz@dyna) 449 450 * parse.y(call_op): 演算子`~'の取り扱いをルール部へ移動. 451 452Fri Aug 19 11:44:13 1994 Yukihiro Matsumoto (matz@ix-02) 453 454 * main.c: rubyをほかのプログラムに組み込めるようにmain()を分割した. 455 それにともない, プログラムの呼び出し構造を修正した. 456 457 * parse.y: 条件式の定義を変更. ifなどの条件式の中でだけ`&&'や`||' 458 および`!'の引数が条件式になるように. この変更により条件式以外の 459 場所での `&&', `||', `!'演算子の動作が直観に一致する. 460 461 * parse.y: 実引数の`*'の後に続く引数はexprに制限した. 今までは全て 462 の文が有効 463