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/tolowerupcase/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